Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

WriteFile в чем ошибка??? [D5, D6, Win2k, WinXP]


Bers ©   (2003-11-25 11:10:00) 

Доброго времени суток!
Уважаемые Мастера, подскажите в чем ошибка:
var j:Cardinal;
Tmp:PChar;
NewFile:string;
HW:THandle;
begin
...
j:=Length(NewFile)+1;
Tmp:=StrNew(PChar(NewFile));
WriteFile(HW,Tmp,j,j,nil);
StrDispose(Tmp);
...
end;

Все вроде хорошо, но вместо нужной строки в файл пишется какая-то галиматья. В чем ошибка?

Заранее благодарен.
С Уважением, Андрей.


Владислав   (2003-11-25 16:42:00) [1]

> icWasya © (25.11.03 14:19) [9]

Гадание на кофейной гуще навело на такую мысль? ;)


MBo   (2003-11-25 15:49:00) [2]

WriteFile(HW,NewFile[1],Length(NewFile),j,nil);


icWasya   (2003-11-25 14:19:00) [3]

сдаётся мне, что в строке
WriteFile(HW,Tmp,j,j,nil);
на файл пишется j*j байт


Reindeer Moss Eater   (2003-11-25 12:19:00) [4]

Ну и что? Смущает один и тот же тип данных у параметра?


ZrenBy   (2003-11-25 11:59:00) [5]

Хе-Хе. Найдите разницу

из windows.pas)
function WriteFile(hFile: THandle; const Buffer; ...
function WriteFileEx(hFile: THandle; lpBuffer: Pointer; ...

А это их winapi
BOOL WriteFile(

HANDLE hFile,
LPCVOID lpBuffer,...
BOOL WriteFileEx(
HANDLE hFile,
LPCVOID lpBuffer,...


Bers   (2003-11-25 11:53:00) [6]

А теперь вижу...


Reindeer Moss Eater   (2003-11-25 11:47:00) [7]

Глагол Poins очень похож на существительное Pointer.
Но это не одно и тоже


Bers   (2003-11-25 11:34:00) [8]

Спасибо.
Хотя в Help"е написано:
Points to the buffer containing the data to be written to the file.
С Уважением, Андрей.


Anatoly Podgoretsky   (2003-11-25 11:32:00) [9]

К тому же это лишняя промежуточная переменная. NewFile уже содержит все необходимое для записи в файл. Стоит намного почитать про работу со строками.


Anatoly Podgoretsky   (2003-11-25 11:30:00) [10]

Эта галиматься значение переменной Tmp и последующих байт, если J > 4


Reindeer Moss Eater   (2003-11-25 11:22:00) [11]

Tmp - должен быть адресом записываемого блока, а не указателем на него


Наверх

Титульная страница Поиск, карта сайта Написать письмо