![]() |
|
|
Регистрация | << Правила форума >> | 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(...)
Цитата:
jmp $ ; Happy End! The Cake Is A Lie. |
Этот пользователь сказал Спасибо Bargest за это полезное сообщение: | ||
eastwoodknight (03.04.2012)
|
#5
|
||||
|
||||
![]() Весь прикол кода ТС в том, что ему вообще не нужны API-ные команды. После применения:
Код:
openDialog := TOpenDialog.Create(self); их ценность падает до нуля. Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#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)
|