Форум: "WinAPI";
Текущий архив: 2002.07.15;
Скачать: [xml.tar.bz2];
ВнизПодскажите, как пользоваться winapi ф-ей ReadFile??? Найти похожие ветки
← →
zam (2002-05-15 20:36) [0]Не понимаю, как правильно в ф-ю ReadFile передать указатель на буфер приема данных.
При передачи туда PCHAR или String выскакивают ошибки.
Причем даже если выделять память под этот PChar.
Единственное, что у меня работает, это если передать туда строку объявленную следующим образом:
str : string[200];
Но тут естественно не удобно, что длина ограничена в 255 символов.
Подскажите как правильно с этим работать?
← →
VuDZ (2002-05-15 22:05) [1]а ты передаешь саму строку или указатель на неё?
по идее, должно быть так:
str: PChar[255];
readed : integer;
...
ReadFile(hFile, @str, 255, @readed, nil);
а если не работает, то посмотри код ошибки, которую возвращает getLastError();
← →
KaPaT (2002-05-15 22:22) [2]а хелп недано почитать?
← →
zam (2002-05-15 23:03) [3]По поводу str: PChar[255] впервые вижу такую запись, у меня такое Delphi переваривать не хочет.
Да и как можно указателю на char задавать какой-то размер?
Нет, если строка объявлена как str : string[200], то str является указателем на статически выделенную память, поэтому если передавать в качестве буфера эту строку, все работает хорошо.
Но задача состоит в том, чтобы создать буфер динамически после того, как узнаешь, сколько символов находится в файле.
Если писать так:
var
strx: PChar;
begin
getmem(strx,1000);
ReadFile(h1,strx,count,DWORD(Read),nil)
FreeMem(strx,1000);
То выскакивает runtime error access violation
Хотя я не вижу тут ошибок.
Вот рабочий пример MSDN:
lpszBuffer = (LPSTR) GlobalAlloc(GPTR,
lstrlen((LPSTR) achID) + cbMessage);
fResult = ReadFile(hSlot1,lpszBuffer,cbMessage,&cbRead,
(LPOVERLAPPED) NULL);
По-моему мой код полностью идентичен MSDN"овскому.
А по поводу таких полезных советов, как почитать хелп, советуйте в других конференциях.
← →
SPeller (2002-05-16 00:49) [4]А по-моему проще так:
var buf:array of byte;
...
setlength(buf,n);
ReadFile(hFile, buf[0], n, readed, nil);
← →
zam (2002-05-16 01:18) [5]Большое спасибо, действительно не додумался:))))
← →
Ворчун (2002-05-16 02:00) [6]2 VuDZ © (15.05.02 22:05)
> str: PChar[255];
Для МАСТЕРА - непозволительны такие глупости!
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2002.07.15;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.011 c