Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Для новичков > Использую FileWrite. Невнятное содержимое файла.


Автор: ilyaa 3.8.2009, 23:03
использую для вывода лога такой кусок:
Код

//mess :='сообщение'; 

procedure Log(Const Mess: string); 
Const w:word = $0A0D;
begin
   if Fil = INVALID_HANDLE_VALUE then exit;
   try
      FileWrite(Fil, Mess, Length(Mess));
      FileWrite(Fil,  w, 2);
   except
   end;
end;


и такой

Код

procedure Log(Const Mess: string);
Const w:word = $0A0D; var s:Pchar;
begin
   if Fil = INVALID_HANDLE_VALUE then exit;
   try
      s:=pchar(mess);
      FileWrite(Fil, s[0], Length(s));
      FileWrite(Fil,  w, 2);
   except
   end;
end;



а в файле вот такая абракадабра. И ничем не могу ее превратить во внятный текст. 
A>>1I
A>>1I
A>>1I
A>>1I

Как то можно писать файл сразу в ansi кодировке? Не используя WriteLN.


M
THandle
Модератор: используйте подсветку кода!

Автор: mr.Anderson 3.8.2009, 23:12
WriteLn - очень удобный метод в данном случае. Но если он не подходит, можно использовать TWriter/TReader.

Подробно и понятно расписано здесь: http://forum.vingrad.ru/forum/topic-250409/unread-1/hl/treader/index.html

Автор: THandle 4.8.2009, 00:45
Код

procedure Log(const Mess: AnsiString);
const
  W: Word = $0A0D;
var
  Fil: Integer;
begin
  Fil := FileCreate('C:\Test1.txt', fmCreate);
  if Fil = INVALID_HANDLE_VALUE then
    Exit;
  try
    FileSeek(Fil, 0, soFromEnd);
    FileWrite(Fil, Mess[1], Length(Mess));
    FileWrite(Fil, w, 2);
  finally
    FileClose(Fil);
  end;
end;


Добавлено через 1 минуту и 2 секунды
Это пример с вечным пересозданием файла. Создавать надо один раз)

Добавлено через 1 минуту и 52 секунды
Кстати насчет логгеров. Помнится где-то год назад ama_kid выкладывал свой готовый код на эту тему. Если память мне не изменяет.

Автор: ilyaa 4.8.2009, 18:15
Добавлено через 1 минуту и 2 секунды
Это пример с вечным пересозданием файла. Создавать надо один раз)

Для одного вызова то же самое.

Автор: dumb 5.8.2009, 01:18
ilyaa, ты в файл Unicode-строку записываешь.

ключевой момент:
Цитата(THandle @  4.8.2009,  01:45 Найти цитируемый пост)
procedure Log(const Mess: AnsiString);

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