![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как в обыкновенном *.TXT файле поудалять одинаковые строки ?
IronHawk © (2002-03-28 16:40:00)Ну САБЖ !
.... заранее благодарен !
IronHawk (2002-03-29 10:11:00) [1]
> MBo © (28.03.02 19:07)
> SList:=TStringList.Create;
> в начале
>
> Slist.Free;
> в конце
Спасибо огромное, уже проблемма устранена !
MBo (2002-03-28 19:07:00) [2]SList:=TStringList.Create;
в начале
Slist.Free;
в конце
IronHawk (2002-03-28 17:26:00) [3]
> MBo © (28.03.02 17:02)
> в дополнение
> и никакой сортировки
Обалденно, работает, только удаляет все строки, даже НЕодинаковые и оставляет последнюю, как лечить ?
MBo (2002-03-28 17:12:00) [4]Alx2
>эффективность потеряем Бинарный поиск - слишком лакомая штучка
да я не против ;)
Alx2 (2002-03-28 17:10:00) [5]>MBo © (28.03.02 17:02)
>и никакой сортировки
IMHO эффективность потеряем. Бинарный поиск - слишком лакомая штучка. И бинарная вставка ненамного медленнее.
PS
С парой файлов тормознул, блин.
IronHawk (2002-03-28 17:04:00) [6]
> 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 - СпаСиБо !
MBo (2002-03-28 17:02:00) [7]в дополнение
и никакой сортировки
MBo (2002-03-28 17:01:00) [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:00) [9]
> Alx2 © (28.03.02 16:58)
> Тогда вот так можно:
> Открываем исходный файл (F) на чтение и другой - на запись
> (W). В него будем складывать "товар".
> Читаем строчку из F, и если ее нет в StringList (сортированном
> и с dupIgnore), то пишем в W. После этого нашу строчку заносим
> в StringList.
> В конце переименовываем W в F и убиваем StringList.
Круто, а они непосоряться ?
Alx2 (2002-03-28 16:58:00) [10]Тогда вот так можно:
Открываем исходный файл (F) на чтение и другой - на запись (W). В него будем складывать "товар".
Читаем строчку из F, и если ее нет в StringList (сортированном и с dupIgnore), то пишем в W. После этого нашу строчку заносим в StringList.
В конце переименовываем W в F и убиваем StringList.
IronHawk (2002-03-28 16:56:00) [11]
> MBo © (28.03.02 16:55)
> можно добавлять строки по одной, проверяя IndexOf
Да не, это некатит !
У меня просто будет хвататься файл и одинаковые строки должны удаляться !
MBo (2002-03-28 16:55:00) [12]можно добавлять строки по одной, проверяя IndexOf
IronHawk (2002-03-28 16:52:00) [13]
> McSimm ©
Вот какраз сортировки мне и ненадо !!!!
IronHawk (2002-03-28 16:48:00) [14]ОК !
Это на файлах до 100К, допустимо ?
McSimm (2002-03-28 16:48:00) [15]Только после этого строки окажутся отсортированными, что не всегда приемлемо
Alx2 (2002-03-28 16:46:00) [16]Задача в общем случае (на файлах большого размера) сложная.
На мелких можно воспользоваться сортированным TStringList и свойством Duplicates = dupIgnore.