![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
как переместить указатель в начало файла
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);