Помощь - Поиск - Пользователи - Календарь
Полная версия: Сортировка
Форум «Всё о Паскале» > Pascal, Object Pascal > Теоретические вопросы
Билли Боб
Сортирую строки в текстовом файле.
Из текстового файла записал все в типизированный, отсортировал, записал обратно.
Все, конечно, работает, только при большом количестве строк в файле этот процесс занимает много времени.
Думаю надо занести их в память и сортировать их там.
Не могли бы вы показать, как надо записывать строки в память и перемещаться по ним?
volvo877
Это зависит от используемого компилятора. Если, как и прежде, используется FPC, то не надо изобретать велосипеды, есть TStringList, устанавливаешь ему свойство Sorted в True, читаешь файл, и тут же записываешь уже отсортированные строки в другой файл. Делов - на 3 строки кода, вместе с созданием/удалением объекта - на 5...
Билли Боб
не, сейчас используется TP.
IUnknown
И в этом случае я бы постарался обойтись без велосипедов.

Вот тут: Сортировка строк текстового файла я показывал, как можно напрячь для этого программу sort, присутствующую практически на любом компьютере. Но там было другое, надо было отсортировать строки по длине, что потребовало небольшого увеличения кода, так как sort не умеет сортировать строки по длине, только по алфавиту. В твоем случае - все вообще просто:

{$m $4000, 0, 0}
uses dos;

var
f_in, f_out : string;
begin
f_in := 'a.txt'; f_out := 'b.txt'; { тут может понадобиться полный путь к файлам... }
swapvectors;
exec(getenv('comspec'), '/c sort ' + f_in + ' /O ' + f_out);
swapvectors;
end.
, те же 3 строки кода - должно работать, проверяй...
Билли Боб
ааа, точно, sort, как же я не додумался! Спасибо!
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.