Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

чтение файла от конца к началу [D7, XP]


Bullfrog ©   (2007-06-12 19:40:00) 

Привет всем!
Меня интересует чтение файла от конца к началу, при том построково.
ситуация такова: читаю файл, например, по 10 строк и мне нужно изменить информацию этих десяти строк, как мне вернутся обратно, что-бы перезаписать этот участок?


homm   (2007-06-13 01:39:00) [1]

> что за компонента такая?

Чукча, однака.
Это класс. Объявляеш, создаеш, работаешь, уничтожаешь.


Bullfrog   (2007-06-13 01:38:00) [2]


> TStringList.LoadFromFile
> TStringList.SaveToFile
>

что за компонента такая? где ее взять


homm   (2007-06-13 01:38:00) [3]

> ничего не понял, как посредством этого можно удалить кусок файла?



var
 SL: TStringList;
begin
...
SL.LoadFromFile;
for i := SL.Count-11 to SL.Count-1 do begin
 SL.Strings[i] := '!!Editet '+SL.Strings[i];
end;
SL.SaveToFile;


Делает то , что написано в сабже. Изменяет 10 последних строк.


Bullfrog   (2007-06-13 01:30:00) [4]

ничего не понял, как посредством этого можно удалить кусок файла?
может можно с помощью другого файла?
допустим примерно так:
assignfile(f,'test');
reset(f);
assignfile(ef,'etest');
append(ef);
for i:=0 to str do begin ReadLn(f,buf); WriteLn(ef,buf); end;
while not eof(f) do inc(i);
for k:=str+13 to i do begin ReadLn(f,buf); WriteLn(ef,buf); end;


где str - начало обрабатываемой части.

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

помогите, пожалуйста


Плохиш   (2007-06-13 00:12:00) [5]

TStringList.LoadFromFile
TStringList.SaveToFile


Bullfrog   (2007-06-13 00:08:00) [6]


> Считываем весь файл,
> обрабатываем считанное (в конце, в начале, в середине :)),
>
> записываем обработанное взад в файл (перезаписываем файл).
> ..
>

как считать весь файл?
как перезаписать файл?


Bullfrog   (2007-06-12 23:34:00) [7]


> Delphi syntax:
>
> procedure Seek(var F; N: Longint);
> вроде все же верно написано?
>

блин! так она ратает только с двоичными файлами?
тогда какая процедура нужна мне?


Bullfrog   (2007-06-12 22:55:00) [8]

Delphi syntax:

procedure Seek(var F; N: Longint);
вроде все же верно написано?


Bullfrog   (2007-06-12 22:36:00) [9]

даааа, тут я вообще попух....

Seek(F, 0); - на такую вещь выдает ошибку:
Incompatible types, что это такое?
В других местах этой же проги применял уже скока раз, там все работает, а здесь...


Johnmen   (2007-06-12 20:18:00) [10]

Считываем весьфайл,
обрабатываем считанное (в конце, в начале, в середине :)),
записываем обработанное взад в файл (перезаписываем файл)...


Bullfrog   (2007-06-12 20:12:00) [11]


> Ты писатель, не читатель?

не могу понять к чему вопрос, наверное, ты решил, что я [1] не прочитал? Если так, то ошибаешься. Для того что бы записать исправленное в конец файла, нужно удалить из файла старое еще не исправленное и тут соответственно вылазит [2]
Или я че то мудрю?


Johnmen   (2007-06-12 20:04:00) [12]

Ты писатель, не читатель?


Bullfrog   (2007-06-12 19:58:00) [13]

не могу придумать как обработать первую строку этого участка, так как при поиске участка(который нужно отредактировать) все равно будет использоваться либо реад, либо реадлн и курсор будет находится уже внутри обрабатываемого участка, а нужно что-бы он был перед ним.


Johnmen   (2007-06-12 19:48:00) [14]

Считываем весь файл, обрабатываем считанное, записываем обработанное взад в файл...


Наверх

Титульная страница Поиск, карта сайта Написать письмо