Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Запись строки в файл


Автор: Belij 21.12.2003, 12:22
Вот есть у меня такая трабла!Создаю я лог-файл.
------------------------------------------------------------------
log := CreateFile(
PChar('logfile.txt'),
GENERIC_READ or GENERIC_WRITE,
FILE_SHARE_READ,
nil,
CREATE_ALWAYS,
FILE_ATTRIBUTE_NORMAL,
0
);
------------------------------------------------------------------
Далее по некому условию ошибки нужно записать еррор мессадж в этот файл. Еррор мессадж - константа стринговая.
Все это надо сделать через WinAPI функции. Смотрю описание -> функция WriteFile!
Делаю это так WriteFile(log,FILE_OPEN_ERROR,?,wrtn,nil);
? - не в курсе,указывать точное число байт? (для примера я написал 100) но ведь это строка из буфера!
в общем запись не происходит....
в чем я ошибаюсь?

bored.gif

Автор: p0s0l 21.12.2003, 13:16
Попробуй
WriteFile(log,PChar(FILE_OPEN_ERROR)^,Length(FILE_OPEN_ERROR),wrtn,nil);

Автор: Vit 21.12.2003, 16:41
А почему именно на API? Для ведения логов очень даже приемлемы стандартные средства, гораздо удобнее:


Код
Procedure Log(msg:string; FileName:string='');
 var f:textfile;
begin
 if FileName='' then FileName:=ChangeFileExt(Paramstr(0),'.log');
 assignfile(f, FileName);
 if FileExists(FileName) then Append(f) else Rewrite(f);
 Writeln(f, Datetimetostr(now)+'|'+msg);
 CloseFile(f);
end;


Использование:

Код
Log('Application is started');

Создаст или дозапишет в конец существующего файла по имени твоего приложения, только с расширением .log вместо .exe. Причём в лог будет записано 'Application is started' с указанием текущей даты.

Если надо указать другой лог файл то надо использовать как:
Код
Log('Application is started', 'c:\myspecial.log');




Автор: NiJazz 21.12.2003, 16:48
Belij, если тебя прибило работать именно с файлами, связанными с дескрипторами, то лучше используй функции из VCL. Такие, как FileCreate, FileRead, FileWrite и т.д. Там возни меньше, чем в API и описание нормальное, делфийское.
В делфе из-за языка Паскаля неудобно работать с сишными апишками...

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)