Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.04.11;
Скачать: [xml.tar.bz2];

Вниз

Как в обыкновенном *.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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.009 c
1-32764
Konsul
2002-03-31 00:25
2002.04.11
Taskbar


4-33022
Nuhim
2002-02-07 11:36
2002.04.11
Перехват запуска программ.


1-32735
cypher
2002-03-30 01:08
2002.04.11
Мож кто знает?!


1-32812
abstek
2002-03-30 10:42
2002.04.11
Как узнать тип переменной?


1-32837
CrazyAngel
2002-03-28 18:00
2002.04.11
Как найти приложение , которое блокирует файл ?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский