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


Автор: USSR 9.8.2006, 18:13
Нужна помощь. Нужна такая функция
Например, я запускаю программу и при нажатии на кнопку  или хоткей нужно записать определенную строку в конец определенного текстового файла и, при закрытии программы она из этого текстовика исчезала... хотя я видел програмы которые так делают
Чет у меня ни единой мысли нет как это релиазовать...

Автор: _hunter 9.8.2006, 18:22
в обработчике OnClose удаляй последнюю (записанную) строку

Автор: Alexeis 9.8.2006, 19:43
Цитата(_hunter @  9.8.2006,  18:22 Найти цитируемый пост)
удаляй последнюю (записанную) строку

Скорее надо урезать файл на размер строки. Такая операция допустима.

Автор: AJIeKcEu 10.8.2006, 05:52
smile  smile  Если тебе просто надо записывать в конец ТХТ файла, эт делается просто

после открытия файла (в начале программы) тестишь строки на заполнения (через цикл)
 а потом  у тебя будет в некоторой переменной число , потом делаешь число+1 и записываешь.. получается запись в конец



 smile   у меня мысля вот такая.. я такое на РНР делалsmile .. на делфи давно... если найду скину исходник.. smile

Добавлено @ 05:53 
или как сказал  alexeis1  можно посмотреть число строк... есть такая операция (функция)

Автор: kostas 10.8.2006, 06:40
smile Открываешь любой ман, в котором есть основа работы с файлами smile
вот пример (пусть и старым методом, но здесь его хватит)
Код

var f: textfile;
...
assignfile(f, 'C:\123.txt');
append(f);
writeln('строка');
closefile(f);
...

Автор: Yanis 11.8.2006, 11:38
Что то не пойму в чём загвоздка?
Код
var
  sl: TStringList;

const
  FILE_NAME = 'c:\windows\WINNT32.LOG';

{ ... }

procedure TForm1.Button1Click(Sender: TObject);
begin
  sl := TStringList.Create;
  sl.LoadFromFile(FILE_NAME);
  sl.Add('<строка для записи>');

  // если нужно, что бы добавленная строчка присутствовала не только в пями,
  // но и в файле на диске, то
  sl.SaveToFile(FILE_NAME);
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  // если есть уверенность в том, что последняя строчка это
  // имеено та строчка которую мы добавили, то можно
  // неглядя удалять последнюю
  // иначе сравнивать
  sl.Delete(sl.Count-1);

  // сохраняем изменения
  sl.SaveToFile(FILE_NAME);
  FreeAndNil(sl);
end;

Автор: imageman 11.8.2006, 22:35
Если файл очень большой и на твоем компьютере перезапись всего файла ведется недопустимо долго, то (как советовал alexeis) через FileStream открываешь файл, запоминаешь в глобальной переменной размер файла, дописываешь строку.

Как сказал Хунтер, в обработчике OnClose пытаешься поставить размер файла такой, какой был до изменения (через FileStream). 

Данный метод должен работать очень быстро и не зависеть от размера файла!


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