Цитата:
Сообщение от Bargest
Во-первых, можно обойтись и без рекурсии простым циклом без особого усложнения кода. Например, пройтись по массиву от последнего элемента к первому и обработать каждый стринглист.
Во-вторых, есть метод TThread.Suspend для паузы. Хотя лучше конечно поток не на паузу поставить, а поставить ему флажок и подождать, а сам поток периодически проверяет флаг, и если его поставили - прекращает сортировку и вырубается, сохранив где-нибудь номер, где остановился.
Ну а сохранение в файл - проходишь по всем стринглистам, сейвишь их, потом сохраняешь номер текущего обрабатываемого. С циклом это будет сделать в пару сотен раз проще, чем с рекурсией. Потому что для рекурсии придется еще сохранять состояние стека этого потока и адрес команды, и соответственно загружать.
|
Спасибо. С флажком все предельно понятно но вот на счет цикла...(( Как вы заметили массив динамический и его длина зависит от выполнения программы и может быть как 3 так и 100. Думаю стоит ли объявлять массив для 100 элементов??? А если в рантайме понадобится 101? Хотелось бы разобраться именно с рекруссией(полезно будет и по глубже узнать структуру языка). Но к сожалению о стэке я и понятия не имею. Где можно об этом почитать не подскажете?