Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.10.2013, 17:46   #11
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Есть ещё Memory Mapped Files, архиполезные API, если размеры файлов зашкаливают.
Человек_Борща вне форума Ответить с цитированием
Старый 30.10.2013, 17:51   #12
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,527
По умолчанию

FileOpen
FileSeek
FileWrite
FileClose
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 31.10.2013, 09:56   #13
FaTaL
Участник клуба
 
Аватар для FaTaL
 
Регистрация: 09.11.2007
Сообщений: 1,762
По умолчанию

Написал такую процедурку, но не могу с утра понять, почему файл перезаписывается, а не добавляется строчка?
Код:
procedure WriteStrFileLn (s, FileName : WideString);
var
  f : TFileStream;
  str : WideString;
begin
  str := s + #13 + #10;
  f := TFileStream.Create(FileName, fmOpenReadWrite or fmCreate);
  f.Seek(0, soFromEnd);
  f.Write(pointer(str)^, Length (str) * 2);
  f.Free;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  WriteStrFileLn ('Проверка', ExtractFilePath(ParamStr(0))+'test.txt');
end;
WideString потому что делал в Delphi 7.

Последний раз редактировалось FaTaL; 31.10.2013 в 10:07.
FaTaL вне форума Ответить с цитированием
Старый 31.10.2013, 10:07   #14
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Код:
f := TFileStream.Create(FileName, fmOpenReadWrite or fmCreate);
Код:
if FileExists(FileName) then begin
  f := TFileStream.Create(FileName, fmOpenReadWrite);
  f.Seek(0, soFromEnd);
end
else 
  f := TFileStream.Create(FileName, fmCreate);
f.Write(s[1], Length (s)*sizeOf(s[1]));
f.Free;
учтите, что в s должен быть в конце перевод строки (если вам нужно, чтобы каждая запись s была на отдельной строке, конечно!)

Последний раз редактировалось Serge_Bliznykov; 31.10.2013 в 10:10.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 31.10.2013, 10:11   #15
FaTaL
Участник клуба
 
Аватар для FaTaL
 
Регистрация: 09.11.2007
Сообщений: 1,762
По умолчанию

Спасибо. Помогло. Но вроде раньше работало или создавать или дописывать. Хотя может это в новых версиях Delphi, а пример писал то на семёрке.
FaTaL вне форума Ответить с цитированием
Старый 31.10.2013, 10:45   #16
Vapaamies
Ваш К. О.
Участник клуба
 
Аватар для Vapaamies
 
Регистрация: 26.12.2012
Сообщений: 1,799
По умолчанию

Код:
  with MyFileStream do
    Position := Size;
  MyStringList.SaveToStream(MyFileStream);
Vapaamies вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как дописать некий код в конец запущенного *.ехе файла? Arhangel7 Общие вопросы Delphi 21 29.08.2012 09:01
Как сохранить путь файла? Swatch Microsoft Office Access 2 21.03.2011 15:38
Как данные из одного файла Excel сохранить в другой? Papiruzzz Microsoft Office Excel 3 17.01.2011 13:14
Как сохранить сэмплы wav файла в массив? Evanation Общие вопросы .NET 0 14.01.2011 09:05
Как сохранить листы (Лист1-Лист2-Лист3 и т.д.) из одного файла в несколько разных? Kilobox Microsoft Office Excel 4 28.01.2009 18:39