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


Автор: malor 16.7.2011, 14:46
user posted image

Внутри функции FormCreate ;
Код
  AssignFile(fLogKB, pathLogKB);
  Rewrite(fLogKB);
  //Append(fLogKB);

  WriteLn(fLogKB, 'record');

В другом файле объявлены переменные:
Код
const pathLogKB: AnsiString         = 'D:\VM_remote\LogKB.txt';
var fLogKB: Textfile;

Файл остается пустым. Почему?

Delphi XE

Автор: Keeper89 16.7.2011, 15:50
Надо бы
Код

CloseFile(fLogKB);

добавить.

Автор: CodeMonkey 19.7.2011, 08:09
А что вы ожидаете увидеть в Watch-е?

Автор: bems 23.7.2011, 13:46
malor, а в watch list нужно добавлять TTextRec(fLogKB)

Автор: GydruS 27.7.2011, 13:09
Давным-давно была такая проблема.
Решил явным указанием, откуда брать процедуру:
Код

system.Writeln(...);

Автор: northener 27.7.2011, 23:55
Цитата(GydruS @  27.7.2011,  13:09 Найти цитируемый пост)
Давным-давно была такая проблема.
Решил явным указанием, откуда брать процедуру:

А что Write & Writeln ещё где-то прописаны в стандартной поставке Дельфи?
smile

Автор: GydruS 28.7.2011, 09:29
Цитата(northener @ 27.7.2011,  23:55)
А что Write & Writeln ещё где-то прописаны в стандартной поставке Дельфи?
smile

Да. Например, в компонентах инди (сокеты). И если пытаться обратиться к WriteLn в методе, связанном с такими компонентами, то это породит сию проблему.
Наберите writeln в IDE и нажмите F1 - там еще есть варианты.
Конечно, в чистом новом проекте такой беды не будет...
smile

Автор: northener 30.7.2011, 01:19
Цитата(GydruS @  28.7.2011,  09:29 Найти цитируемый пост)
Да. Например, в компонентах инди (сокеты).

Бред полный! :(
Слава богу, что в эпоху Д1 Инди ещё не было!

Автор: ZaDoXliK 1.8.2011, 13:24
Цитата(malor @ 16.7.2011,  12:46)
user posted image

Внутри функции FormCreate ;
Код
  AssignFile(fLogKB, pathLogKB);
  Rewrite(fLogKB);
  //Append(fLogKB);

  WriteLn(fLogKB, 'record');

В другом файле объявлены переменные:
Код
const pathLogKB: AnsiString         = 'D:\VM_remote\LogKB.txt';
var fLogKB: Textfile;

Файл остается пустым. Почему?

Delphi XE

Код

var
F:TextFile
...
AssignFile(F,'C:\Log.txt');//Назначаем файл
If FileExists('C:\Log.txt') then Append(F) else Rewrite(F);//проверяем наличие файла. если есть то дописываем если нет то создаём и пишем.
WriteLn(F,'какой ни будь текст');//добавляем нужный нам текст
CloseFile(F);//закрываем файл

Так будет работать.

У меня сразу встречный вопрос есть.
Как добиться того чтобы путь к файлу был не строгий?
вот пример рабочего кода:
Код

...
Assign(F,'C:\Windows\!Logs\key.txt');
if FileExists('C:\Windows\!Logs\key.txt') then Append(F) else Rewrite(F);
Writeln(F,Key);
CloseFile(F);


А вот так не хочет никак работать smile :
Код

...
GetWindowsDirectory(WinDir,SizeOf(WinDir));
Assign(F,WinDir+'\!Logs\key.txt');
if FileExists(WinDir+'\!Logs\key.txt') then Append(F) else Rewrite(F);
Writeln(F,Key);
CloseFile(F);


В чём проблема то?  smile 
Может из за того что эти процедуры в dll используются?

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