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

Вниз

Сортировка   Найти похожие ветки 

 
Itap ©   (2002-09-12 14:57) [0]

Ребята просто горю!!!
Имеется текстовый файл, в котором записи следующего характера:
а001 из"a" в"b"
а002 из"с" в"b"
а003 из"a" в"d"
а004 из"e" в"c"
...
a145 из"e" в"b"
a146 из"a" в"b"
a147 из"a" в"e"
необходимо упорядочить по "a","b","c","d" и т.д.

должно получиться что-то вроде:
a001 из"a" в"b"
а003 из"a" в"d"
a147 из"a" в"e"
а002 из"с" в"b"
a145 из"e" в"b"
а004 из"e" в"c"
...
и т.д. необходима помощь!!!


 
Alx2 ©   (2002-09-12 14:59) [1]

Если быстро, то открой в Excel, укажи поля, отсортируй.


 
RV ©   (2002-09-12 15:02) [2]

если формат строгий

f,f1:textfile;
s:string;

for ch:="a" to "z" do begin
readln(f,s);
if s[9]=ch then Writeln(f1,s);
end;



 
lenin ©   (2002-09-12 15:06) [3]


> RV © (12.09.02 15:02)

Из этого ничего не получиться


 
Itap ©   (2002-09-12 15:07) [4]

>RV
дело в том что к "a" ... "z" могут прибавиться новые элементы например "aa" к томуже эти символы условны, в реальности там электронные адреса


 
Alx2 ©   (2002-09-12 15:11) [5]

На:
На скорую руку, как говориться:
Кодировочка слетела - но это семечки.


function StringListSortCompare(List: TStringList; Index1, Index2: Integer): Integer;
function cnv(const S: string): string;
var
k: integer;
quoted: boolean;
begin
Result := "";
quoted := false;
for k := 1 to length(S) do
begin
if S[k] = """" then
quoted := not quoted else
if quoted then
Result := Result + S[k];
end;
end;
var S1, S2: string;
begin
S1 := cnv(List[index1]);
S2 := cnv(List[index2]);
if S1 > S2 then result := 1
else if S1 < S2 then result := -1
else result := 0;
end;


procedure TForm1.Button7Click(Sender: TObject);
begin
with TStringList.Create do
try
add("


 
Itap ©   (2002-09-12 15:11) [6]

у меня была следующая идея: во первых вставить текст текстового фаила в RichEdit1, удалить номера в каждой строке, а потом упорядочить, но: a)после редактирования в RichEdit1 остаётся только 12 первых линий b)дело в том что эти номера нужны после сортировки


 
RV ©   (2002-09-12 15:13) [7]

lenin © (12.09.02 15:06)
почему? (ств надо после цикла вставать на начало файла)

Itap © (12.09.02 15:07)
попробуй компоненту типа RxStringGrid, где электронные адреса
вынеси в отдельный столбец и произведи по нему сортировку


 
Itap ©   (2002-09-12 15:21) [8]

>RV Я думал над этим, наверное так и попробую


 
Alx2 ©   (2002-09-12 15:22) [9]

>Itap © (12.09.02 14:57)
в догонку к моему посту (Alx2 © (12.09.02 15:11)):
Так как формат строгий, то достаточно будет просто отсортировать с помощью метода Sort у TStringList. Получится то же самое :)


 
Alx2 ©   (2002-09-12 15:23) [10]

>Alx2 © (12.09.02 15:22)
Нагнал. В силе по прежнему пост Alx2 © (12.09.02 15:11):


 
Alx2 ©   (2002-09-12 15:26) [11]

>Itap © (12.09.02 15:21)
Почему мое решение не подходит?


 
Itap ©   (2002-09-12 15:37) [12]

>Alx2
Проблема в том что количество строк может изменяться, а если быть точнее то будет увеличиваться, нет возможности дописовать в программу строки:
add("


 
Itap ©   (2002-09-12 15:40) [13]

и вновь поступившые данные необходимо сортировать по значению {a}


 
Alx2 ©   (2002-09-12 15:40) [14]

>Itap © (12.09.02 15:37)
тогда заведи SL : TStringList; Закидывай в него по мере поступления через add новые данные и по запросу пересортировывай с помощью SL.CustomSort(...)


 
Alx2 ©   (2002-09-12 15:41) [15]

>и вновь поступившые данные необходимо сортировать
>по значению {a}
Так оно и сортируется по нему (а внутри него еще и по {b}) :)


 
MBo ©   (2002-09-12 15:43) [16]

Нужно добавлять новые строки сразу в нужное место, используя двоичный поиск и Insert


 
Itap ©   (2002-09-12 15:51) [17]

>Alx2 сейчас на компе я добью эту проблему 2-мя способами, попробую сделать её по твоему предложению и как я планировал, в конце решим что лучше. Ок спасибо за идею сейчас же займусь.


 
Alx2 ©   (2002-09-12 16:02) [18]

Хорошо бы еще к MBo прислушаться :)


 
Mike Kouzmine   (2002-09-12 16:29) [19]

А если писать не в текстовый файл, а таблицу с нужными индексами, оно само все и сделает. А при необходимости делать экспорт в текстовый файл?



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

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

Наверх




Память: 0.51 MB
Время: 0.017 c
1-73649
Shrek
2002-09-12 16:49
2002.09.23
WinAPI


4-73942
Александр Ливанов
2002-08-06 13:34
2002.09.23
Монитор запуска и завершения приложений


6-73783
Kotka
2002-07-18 17:32
2002.09.23
Ошибка какая-то :-(((


14-73829
Bart
2002-08-27 14:24
2002.09.23
COM порт


14-73849
Tiger
2002-08-26 23:52
2002.09.23
Запись CD