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

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

как переместить указатель в начало файла


Res ©   (2008-07-10 21:45:00) 

Подскажите  пожалуйста, как переместить указатель в начало файла
var
f:TextFile;
..
 AssignFile(f,'base.txt');
 Reset(f);
 while( not eof(f) ) do
 begin
   ReadLn(f,tmp);
end;


Правильный^Вася   (2008-07-10 22:28:00) [1]

как вариант ;)

построчно затолкать в таблицу БД с уникальным ключом на поле
как будет дубль, не пустит, переходим к следующей строке
после всего этого выгружаем талбицу обратно в файл

зы не забудь нумеровать строки в таблице, чтоб извлечь в исходном порядке, а не кашей


Johnmen   (2008-07-10 22:22:00) [2]

Можно посмотреть в сторону отображения файлов в память.
Но м.б. будет достаточно работать с хешами строк.


Res   (2008-07-10 22:05:00) [3]

тогда надо читать файл в память и сортировать... а файл то большой


Johnmen   (2008-07-10 22:01:00) [4]

http://www.delphimaster.ru/cgi-bin/forum.pl?id=1215677312&n=18


Res   (2008-07-10 21:59:00) [5]

спасибо. Еще 1 вопросик. Задача: удалить из файла дубликаты.
Пытался делать через динамические массивы - прога много жрет оперативки.
Сделал так(может чего посоветуете):
program dd;

uses windows;

var
 mlist:array of string;
 f,f2:TextFile;
 tmp,tmp2:string;
 x,n:integer;
 find:boolean;
begin
 setlength(mlist,0);
 AssignFile(f2,'f2.txt');
 Rewrite(f2);
 closefile(f2);
 AssignFile(f,'f1.txt');
 Reset(f);
 while( not eof(f) ) do
 begin
   ReadLn(f,tmp);
   AssignFile(f2,'f2.txt');
   Reset(f2);
   find:=false;
   while( not eof(f2) ) do
   begin
     readln(f2,tmp2);
     if(tmp=tmp2) then find:=true;
   end;
   closefile(f2);
   if(find=false) then
   begin
     AssignFile(f2,'f2.txt');
     Append(f2);
     WriteLn(f2,tmp);
     closefile(f2);
   end;
 end;
 closefile(f);
end.


Johnmen   (2008-07-10 21:47:00) [6]

Reset(f);


Наверх

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