![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Файл [D5, Win95/98]
DenKop © (2002-04-10 11:20:00)Как обрезать последние, например, 2 байта файла.
Файл открываю так:
FileHandle := FileOpen("c:\p1.enc",fmOpenReadWrite);
....
FileClose(FileHandle);
Помнится делал это на Паскале, но там я открывал через
AssignFile(...), но как делал на отрез не помню.
DenKop (2002-04-10 15:43:00) [1]OK
Alx2 (2002-04-10 15:13:00) [2]>DenKop © (10.04.02 15:08)
Это я криво написал. В твоем случае как раз Nil :))
... If the value of this parameter is NULL, SetFilePointer can operate only on files whose maximum size is 2^32 - 2. If this parameter is specified, the maximum file size is 2^64 - 2. This parameter also receives the high-order word of the new value of the file pointer.
DenKop (2002-04-10 15:10:00) [3]Alx2 >Спасибо!
P.S.про NIL. Я имел ввиду в моём случае.
DenKop (2002-04-10 15:08:00) [4]Alx2 >Спасибо!
P.S.про NIL. Я имел ввиду в моём случае.
Alx2 (2002-04-10 14:41:00) [5]FILE_BEGIN - значит смещаемся от начала файла
lpDistanceToMoveHigh не равна Nil, а равна указателю на переменную типа DWORD, если смещение выходит за границы 32-битной арифметики. То есть для поддержки 64-битной
DenKop (2002-04-10 12:34:00) [6]to Song © > Это будет слишком громоздко и некрасиво.
to vuk ©,Alx2 © > Спасибо.Этот вариант работает с одним уточнением NULL заменил на NIL.
to Alx2 © > А можно поподробнее про NIL и FILE_BEGIN.
В хелпе ничего не нашёл, нашел только то, что
NIL - lpDistanceToMoveHigh
FILE_BEGIN - dwMoveMethod
Но об этих константах тоже ничего не сказано.
Alx2 (2002-04-10 11:41:00) [7]SetFilePointer(hFile, dwNewFileSize, NULL, FILE_BEGIN);
SetEndOfFile(hFile);
vuk (2002-04-10 11:37:00) [8]FileSeek, SetEndOfFile
Song (2002-04-10 11:27:00) [9]Прочитайте файл в BlockRead
А потом через BlockWrite запишите на 2 байта меньше. В чём проблема?