Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.04.11;
Скачать: CL | DM;

Вниз

Как в обыкновенном *.TXT файле поудалять одинаковые строки ?   Найти похожие ветки 

 
IronHawk ©   (2002-03-28 16:40) [0]

Ну САБЖ !
.... заранее благодарен !


 
Alx2 ©   (2002-03-28 16:46) [1]

Задача в общем случае (на файлах большого размера) сложная.
На мелких можно воспользоваться сортированным TStringList и свойством Duplicates = dupIgnore.


 
IronHawk ©   (2002-03-28 16:48) [2]

ОК !
Это на файлах до 100К, допустимо ?


 
McSimm ©   (2002-03-28 16:48) [3]

Только после этого строки окажутся отсортированными, что не всегда приемлемо


 
IronHawk ©   (2002-03-28 16:52) [4]


> McSimm ©

Вот какраз сортировки мне и ненадо !!!!


 
MBo ©   (2002-03-28 16:55) [5]

можно добавлять строки по одной, проверяя IndexOf



 
IronHawk ©   (2002-03-28 16:56) [6]


> MBo © (28.03.02 16:55)
> можно добавлять строки по одной, проверяя IndexOf

Да не, это некатит !
У меня просто будет хвататься файл и одинаковые строки должны удаляться !


 
Alx2 ©   (2002-03-28 16:58) [7]

Тогда вот так можно:
Открываем исходный файл (F) на чтение и другой - на запись (W). В него будем складывать "товар".
Читаем строчку из F, и если ее нет в StringList (сортированном и с dupIgnore), то пишем в W. После этого нашу строчку заносим в StringList.
В конце переименовываем W в F и убиваем StringList.


 
MBo ©   (2002-03-28 17:01) [8]

AssignFile(F1, Fname);
Reset(F1);
while not Eof(F1) do
begin
Readln(F1, S);
If SList.IndexOf(s)<0 then
Slist.Add(s);
end;
CloseFile(F1);
SList.SaveToFile(fname);//или в другое


 
IronHawk ©   (2002-03-28 17:01) [9]


> Alx2 © (28.03.02 16:58)
> Тогда вот так можно:
> Открываем исходный файл (F) на чтение и другой - на запись
> (W). В него будем складывать "товар".
> Читаем строчку из F, и если ее нет в StringList (сортированном
> и с dupIgnore), то пишем в W. После этого нашу строчку заносим
> в StringList.
> В конце переименовываем W в F и убиваем StringList.

Круто, а они непосоряться ?


 
MBo ©   (2002-03-28 17:02) [10]

в дополнение
и никакой сортировки


 
IronHawk ©   (2002-03-28 17:04) [11]


> MBo © (28.03.02 17:01)
> AssignFile(F1, Fname);
> Reset(F1);
> while not Eof(F1) do
> begin
> Readln(F1, S);
> If SList.IndexOf(s)<0 then
> Slist.Add(s);
> end;
> CloseFile(F1);
> SList.SaveToFile(fname);//или в другое

ООО, Само ОНО !
Спасибо !
MBo - СпаСиБо !


 
Alx2 ©   (2002-03-28 17:10) [12]

>MBo © (28.03.02 17:02)
>и никакой сортировки
IMHO эффективность потеряем. Бинарный поиск - слишком лакомая штучка. И бинарная вставка ненамного медленнее.
PS
С парой файлов тормознул, блин.


 
MBo ©   (2002-03-28 17:12) [13]

Alx2
>эффективность потеряем Бинарный поиск - слишком лакомая штучка
да я не против ;)


 
IronHawk ©   (2002-03-28 17:26) [14]


> MBo © (28.03.02 17:02)
> в дополнение
> и никакой сортировки

Обалденно, работает, только удаляет все строки, даже НЕодинаковые и оставляет последнюю, как лечить ?


 
MBo ©   (2002-03-28 19:07) [15]

SList:=TStringList.Create;
в начале

Slist.Free;
в конце


 
IronHawk ©   (2002-03-29 10:11) [16]


> MBo © (28.03.02 19:07)
> SList:=TStringList.Create;
> в начале
>
> Slist.Free;
> в конце



Спасибо огромное, уже проблемма устранена !



Страницы: 1 вся ветка

Текущий архив: 2002.04.11;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.014 c
4-33029
MCi
2002-02-07 09:19
2002.04.11
Как получить права на действия в W2k


3-32676
SZap
2002-03-20 18:45
2002.04.11
Grid


6-32932
Victor
2002-01-25 16:15
2002.04.11
Широковещательные сообщения по сети


1-32840
snoup
2002-03-29 08:38
2002.04.11
Посоветуйте и скажите где можно скачать компонент для работы с ин


14-32971
Sks
2002-03-02 12:33
2002.04.11
Как программно найти настройку...