IPB
ЛогинПароль:

> "Хвосты" файлов недоступны, Ошибка в коде
сообщение
Сообщение #1


Пионер
**

Группа: Пользователи
Сообщений: 51
Пол: Мужской

Репутация: -  0  +


Записываем MAGIC в "хвост" файла FileName:

type
String5 = String[5];
const
MAGIC : String5 = 'Magic';
MAGIC_SIZE = SizeOf(String5);
CLUSTER_SIZE = 4096;
FileName : array[0..12] of Char = 'TestFile.dat'#0;
var
hFile : THandle;
FileSize : DWord;
DW : DWord;
...
hFile := CreateFile(@FileName,GENERIC_READ or GENERIC_WRITE,0,NIL,OPEN_EXISTING,0,0);
FileSize := GetFileSize(hFile,NIL);
if (CLUSTER_SIZE - FileSize mod CLUSTER_SIZE) < MAGIC_SIZE then
begin
Write('"Хвост" файла слишком мал!');
CloseHandle(hFile);
Exit
end;
SetFilePointer(hFile,FileSize,NIL,FILE_BEGIN);
WriteFile(hFile,MAGIC,MAGIC_SIZE,DW,NIL);
SetFilePointer(hFile,FileSize,NIL,FILE_BEGIN);
SetEndOfFile(hFile);
CloseHandle(hFile)



Читаем 6 байт из "хвоста" файла и сравниваем их с MAGIC

var
TestString : String5;
...
hFile := CreateFile(@FileName,GENERIC_READ or GENERIC_WRITE,0,NIL,OPEN_EXISTING,0,0);
FileSize := GetFileSize(hFile,NIL);
if (CLUSTER_SIZE - FileSize mod CLUSTER_SIZE) < MAGIC_SIZE then
begin
Write('"Хвост" файла слишком мал!!');
CloseHandle(hFile);
Exit
end;
{ Читаем "хвост". }
SetFilePointer(hFile,FileSize+MAGIC_SIZE,NIL,FILE_BEGIN);
SetEndOfFile(hFile);
SetFilePointer(hFile,FileSize,NIL,FILE_BEGIN);
ReadFile(hFile,TestString,MAGIC_SIZE,DW,NIL);
{ Возвращаем файлу нормальную длину - усекаем файл. }
SetFilePointer(hFile,FileSize,NIL,FILE_BEGIN);
SetEndOfFile(hFile);
CloseHandle(hFile);
{ Проверяем TestString. }
if TestString <> MAGIC then
WriteLn('Tail <> MAGIC - ERROR!!!')
else
WriteLn('Tail = MAGIC - OK.');



Этот код не работает. Можно ли что-нибудь сделать, чтобы исправить ошибку???
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 2.12.2021 2:09
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name