Microsoft KB Archive/128112

= INFO: CFile::end (from CFile::Seek) Uses a Forward Offset =

Article ID: 128112

Article Last Modified on 12/1/2003

-

APPLIES TO


 * Microsoft Visual C++ 4.0 Standard Edition
 * Microsoft Visual C++ 4.1 Subscription
 * Microsoft Foundation Class Library 4.2
 * Microsoft Visual C++ 1.0 Professional Edition
 * Microsoft Visual C++ 1.5 Professional Edition
 * Microsoft Visual C++ 1.51

-



This article was previously published under Q128112



SUMMARY
When using CFile::Seek with the CFile::end parameter to start seeking from the end of a file, a negative offset is required to seek backward in the file. The documentation for CFile::end states:   CFile::end  Move the file pointer backward lOff bytes from the end of the file. This incorrectly indicates that a positive offset value will seek backwards in the file. Using 16-bit versions of MFC, CFile::Seek performs the actual seek using int 21h function 42h. The "MS-DOS Encyclopedia" states that when seeking from the end of file, the offset:

... can be either a positive or negative 32-bit integer ... [which] can move the file pointer either forward or backward from the end of the file.

When using MFC under Windows NT, CFile::Seek calls SetFilePointer. Documentation for the offset parameter to SetFilePointer is as follows:

... specifies the number of bytes to move the file pointer. A positive value moves the pointer forward in the file and a negative value moves it backward.

For both 16 and 32-bit versions of MFC, the code that performs the actual seek can be found in FILECORE.CPP.

NOTE: This problem was fixed in Microsoft Visual C++, 32-bit Edition, version 4.0. The Visual C++ 4.0 Books On-Line states the following:

CFile::end Move the file pointer lOff bytes from the end of the file. Note that lOff must be negative to seek into the existing file; positive values will seek past the end of the file.

Additional query words: noupdate 2.5 2.50 2.51 3.0 3.00 1.00 1.50 1.51 2.00 2.10 4.00

Keywords: kbbug kbvc400fix kbprogramming kbdocfix kbdocerr kbfileio KB128112

-

[mailto:TECHNET@MICROSOFT.COM Send feedback to Microsoft]

© Microsoft Corporation. All rights reserved.