IPB
ЛогинПароль:

> Правила раздела!

1. Заголовок или название темы должно быть информативным !
2. Все тексты фрагментов программ должны помещаться в теги [code] ... [/code] или [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ" и используйте ПОИСК !
4. НЕ используйте форум для личного общения!
5. Самое главное - это раздел теоретический, т.е. никаких задач и программ (за исключением небольших фрагментов) - для этого есть отдельный раздел!

 
 Ответить  Открыть новую тему 
> Сортировка
сообщение
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 47
Пол: Мужской

Репутация: -  0  +


Сортирую строки в текстовом файле.
Из текстового файла записал все в типизированный, отсортировал, записал обратно.
Все, конечно, работает, только при большом количестве строк в файле этот процесс занимает много времени.
Думаю надо занести их в память и сортировать их там.
Не могли бы вы показать, как надо записывать строки в память и перемещаться по ним?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






Это зависит от используемого компилятора. Если, как и прежде, используется FPC, то не надо изобретать велосипеды, есть TStringList, устанавливаешь ему свойство Sorted в True, читаешь файл, и тут же записываешь уже отсортированные строки в другой файл. Делов - на 3 строки кода, вместе с созданием/удалением объекта - на 5...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Новичок
*

Группа: Пользователи
Сообщений: 47
Пол: Мужской

Репутация: -  0  +


не, сейчас используется TP.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Гуру
*****

Группа: Пользователи
Сообщений: 1 013
Пол: Мужской
Ада: Разработчик
Embarcadero Delphi: Сторонник
Free Pascal: Разработчик

Репутация: -  627  +


И в этом случае я бы постарался обойтись без велосипедов.

Вот тут: Сортировка строк текстового файла я показывал, как можно напрячь для этого программу 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 строки кода - должно работать, проверяй...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Новичок
*

Группа: Пользователи
Сообщений: 47
Пол: Мужской

Репутация: -  0  +


ааа, точно, sort, как же я не додумался! Спасибо!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 16.04.2024 16:41
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name