Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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.008 c
3-73507
SerKom
2002-08-31 17:05
2002.09.23
Как редактировать AutoIncrement в таблицах Paradox?


3-73512
Крокус
2002-08-30 10:29
2002.09.23
поиск в Detail таблице


7-73900
fGuS
2002-07-13 16:40
2002.09.23
Как спрятать/показать кнопку пуск?


1-73729
Сатир
2002-09-10 15:06
2002.09.23
аргумент как паблик-свойство


14-73825
Ketmar
2002-08-26 15:01
2002.09.23
господа, что делать, если ничего делать не хочется? :-))





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский