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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 25.01.2010, 20:51   #1
XPAiN
Форумчанин
 
Аватар для XPAiN
 
Регистрация: 31.10.2007
Сообщений: 108
По умолчанию Записать строку в начало файла

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

Так не выходит
Код:
procedure AddStrToFile(FileName:string; S:string);
var  f:TFileStream;
     str:string;
begin
 str:='';
  f:=TFileStream.Create(FileName,fmOpenWrite+fmShareDenyNone);
  SetLength(str, f.Size);
  f.Read(str[1],f.Size);
  str:=s+#13#10+str;
  f.Write(str,length(str));
  f.Destroy;
end;
delphi is my world
XPAiN вне форума Ответить с цитированием
Старый 25.01.2010, 21:05   #2
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

можно так...
Код:
var t: tstringlist;
begin
 t:= tstringlist.Create;
 t.LoadFromFile('1.dat');
 t.Insert(0,'--------');
 t.SaveToFile('1.dat');
 t.Free
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 25.01.2010, 21:39   #3
XPAiN
Форумчанин
 
Аватар для XPAiN
 
Регистрация: 31.10.2007
Сообщений: 108
По умолчанию

Метод хороший, но он переписывает файл целиком. На что тратится время, критичное для приложения. К примеру Append, который добавляет в конец файла, работает в несколько раз быстрее.
delphi is my world

Последний раз редактировалось mihali4; 25.01.2010 в 22:29.
XPAiN вне форума Ответить с цитированием
Старый 26.01.2010, 10:09   #4
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

есть разлинованный лист бумаги на нем начиная с первой линии записано несколько строк. Введем такие ограничения (писать можно только по строчкам написанное ранее разрешается стирать)
теперь попытаемся выполнить две задачи.
1. Дописать в конце еще пару строк
2. Вставить те же две строки в начало.

Первая задача решается легко. Берем и дописываем (Аppend работает быстро).
Для второй задачи есть два варианта
А. взять второй такой же лист
написать новые строки
переписать все строки с первого
В. запомнить все строчки
стереть все строчки
записать две новые строчки
записать то что запомнили

в любом случае придется переписывать все. (добавление в начало работает медленно)

ЛИСТ это файл
Строчки - его размещение на диске
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 26.01.2010, 10:20   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

evg_m, +100

p.s. сам хотел то же самое написать, но времени всё не хватало...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 26.01.2010, 10:28   #6
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

Цитата:
XPAiN
...На что тратится время, критичное для приложения...
даже, если использовать файловый поток, все равно файл будет переписываться весь/

можно рекомендовать следующее - при создании приложения открыть-загрузить файл, при закрытии сохранить... итого, время тратится только на операции в "буфере"/
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 26.01.2010, 15:27   #7
XPAiN
Форумчанин
 
Аватар для XPAiN
 
Регистрация: 31.10.2007
Сообщений: 108
По умолчанию

Огромное спасибо! Вы абсолютно правы. Данный подход не будет не приемлем для приложений с критичностью времени

evg_m объяснил доходчиво.
delphi is my world
XPAiN вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
из Delphi Записать строку в Word полсе чего вставить туда картинку. Maddy Помощь студентам 4 29.01.2010 15:00
заданную строку записать в обратном порядке Defa4ka Помощь студентам 1 13.05.2009 11:50
Записать текст лесенкой(по одному слову в строке),вставляя пустую строку после каждого четверостишья klindk Паскаль, Turbo Pascal, PascalABC.NET 2 27.11.2008 14:34
Записать в файл g все парные числа файла f Lemo Помощь студентам 3 19.10.2008 21:27