|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
22.01.2010, 00:49 | #1 |
Форумчанин
Регистрация: 07.12.2008
Сообщений: 244
|
Ошибка если более 20000 сторок
Не могу понять почему выскакивает ошибка. Программа записывает между вот такими скобками [Таб1] Здесь вставляется текст [/Таб1] текст. Но если в файл имеет более 20000 строк то происходит ошибка. Ошибка именно тогда когда я открываю файл и пытаясь произвести запись. Объясните в чем ошибка.
|̲̅̅●̲̅̅|̲̅̅=̲̅̅|̲̅̅●̲̅̅]
|
22.01.2010, 10:15 | #2 |
Форумчанин
Регистрация: 04.04.2009
Сообщений: 438
|
Ошибка, понятное дело, когда процедура (del) вызывается рекурсивно 22000 раз. Получаем переполнение стека. Вполне предсказуемая реакция программы.
|
22.01.2010, 11:41 | #3 |
Форумчанин
Регистрация: 07.12.2008
Сообщений: 244
|
Тогда не пойму почему когда я беру эти 22000 строк не из файла (а записываю их в sText:TStringList; в программе) то все работает нормально (даже более 200000). Помогите как можно устранить ошибку
|̲̅̅●̲̅̅|̲̅̅=̲̅̅|̲̅̅●̲̅̅]
|
22.01.2010, 12:00 | #4 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Я не знаю что там за прикол, но могу с уверенностью сказать что твоя стратегия никуда не годится.
У тебя jj не увеличивается, по какой-то причине, если я просто нажму открыть и записать.
I'm learning to live...
|
22.01.2010, 12:16 | #5 | |
Форумчанин
Регистрация: 04.04.2009
Сообщений: 438
|
Цитата:
А что "все"? В программе ничего нет, кроме попытки удалить все строки из списка sText, к тому же в рекурсивной процедуре. Как будь то нельзя строки удалять простым методом Delete. Опять же, непонятно, зачем загружать текст в список, чтобы потом все строки удалить. Из текста исходника вообще не понятна цель программы. Два, совершенно бессмысленных оператора: Код:
Не мешало бы рассказать чего требуется от программы. |
|
22.01.2010, 12:41 | #6 |
Форумчанин
Регистрация: 07.12.2008
Сообщений: 244
|
Это проблемный фрагмент моей программы. А выполняет он вот что: ищит скобки [Таб1][/Таб1] таких скобок может быть n количество. т.е [Таб1][/Таб1][Таб2][/Таб2]..[ТабN][/ТабN]. Если скобка найдена то процедура writes удаляет все что между ними и записывает новый текст. Если нужной скобки нет то процедура записывает в конец скобки и текст.
|̲̅̅●̲̅̅|̲̅̅=̲̅̅|̲̅̅●̲̅̅]
|
22.01.2010, 13:27 | #7 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Думаю тебе нужно что-то вроде такого:
Код:
I'm learning to live...
|
22.01.2010, 14:38 | #8 |
Форумчанин
Регистрация: 07.12.2008
Сообщений: 244
|
Stilet спасибо я что то совсем забыл про while.
|̲̅̅●̲̅̅|̲̅̅=̲̅̅|̲̅̅●̲̅̅]
|
22.01.2010, 14:43 | #9 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Ну я так с потолка взял. главное что смысл ты понял )
Хотя этот код конечно не оптимальный...
I'm learning to live...
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Как комментить много сторок | ytzm2hsD3X0HVxwl | Microsoft Office Excel | 3 | 01.01.2010 03:40 |
Какое программирование в наше время более востребовано и более рентабельно? | iukash | Свободное общение | 18 | 29.10.2009 13:02 |
file of string[размер больше 20000] | Kn793 | Общие вопросы Delphi | 2 | 01.01.2009 16:12 |
Подскажите есть ошибка ? (если да то где) | eyeofthedemon | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 2 | 19.09.2008 10:41 |