Форум: "Основная";
Текущий архив: 2002.09.23;
Скачать: [xml.tar.bz2];
ВнизСортировка Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.012 c