![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
|
|
#1
|
|||
|
|||
|
Требуется открыть бинарный файл и заполнить массив переменных типа word. Вот мой код:
Код:
var
OpenDialog :TOpenDialog;
kt:Cardinal;
filehandle: THandle;
file_inf: TOFStruct;
buf: array of word;
begin
openDialog := TOpenDialog.Create(self);
openDialog := TOpenDialog.Create(self);
if openDialog.Execute
then begin
filehandle := OpenFile(PChar(openDialog.FileName),file_inf,OF_READWRITE);
size := GetFileSize(filehandle,nil);
SetLength(buf,size div 2 + 1 );
ReadFile(filehandle,buf,size,kt,nil);
CloseHandle(FileHandle);
end;
end;Вопрос: почему массив остается незаполненным? Последний раз редактировалось Admin, 31.03.2012 в 17:15. |
|
#2
|
|||
|
|||
|
Нужно использовать WriteFile вместо ReadFile.
|
|
#3
|
|||
|
|||
|
не, нужно передавать указатель на нулевой элемент @buf[0]
|
| Этот пользователь сказал Спасибо Pyro за это полезное сообщение: | ||
eastwoodknight (03.04.2012)
| ||
|
#4
|
||||
|
||||
|
Лучше использовать CreateFile(...)
Цитата:
|
| Этот пользователь сказал Спасибо Bargest за это полезное сообщение: | ||
eastwoodknight (03.04.2012)
| ||
|
#5
|
||||
|
||||
|
Весь прикол кода ТС в том, что ему вообще не нужны API-ные команды. После применения:
Код:
openDialog := TOpenDialog.Create(self); их ценность падает до нуля. |
|
#6
|
||||
|
||||
|
Код:
var
OpenDialog :TOpenDialog;
kt:Cardinal;
filehandle: THandle;
buf: array of word;
begin
openDialog := TOpenDialog.Create(self);
if openDialog.Execute
then begin
filehandle :=CreateFile(pChar(openDialog.FileName), GENERIC_READ, FILE_SHARE_READ, nil, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
size := (GetFileSize(filehandle,nil) div SizeOf(word))+1;
SetLength(buf,size);
ReadFile(filehandle,buf[0],size,kt,nil);
CloseHandle(FileHandle);
end;
openDialog.Free;
end;и для помощи Последний раз редактировалось cotseec, 31.03.2012 в 21:43. |
| Этот пользователь сказал Спасибо cotseec за это полезное сообщение: | ||
eastwoodknight (03.04.2012)
| ||