Форум: "Основная";
Текущий архив: 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.01 c