Текущий архив: 2006.02.26;
Скачать: CL | DM;
Вниз
Проблемы с динамическими массивами Найти похожие ветки
← →
Fanny (2005-07-05 07:56) [0]У кого-нибудь были?
В частности при изменении длины.
← →
<Falcon> (2005-07-05 09:18) [1]А так чтобы было понятно? Какие могут быть проблемы с массивами?
Для изменения длины массива - SetLength(arrayname,newlength)
И какое это отношение имеет к KOL?
← →
Fanny (2005-07-05 09:30) [2]есть три массива (динамических)
A,B,C : array of integer; // глобальный
i : integer; // локальная
при наращивании:
inc(i);
SetLength(A,i);
SetLength(B,i);
SetLength(C,i);
всё нормально, а при уменьшении
dec(i);
SetLength(A,i);
SetLength(B,i);
SetLength(C,i);
первый раз проходит нормально, второй раз приложение завершается.
пошаговое выполнение показывает, что завершение наступает после нажатия F8, когда курсор (синяя полоса) выделяет SetLength(B,i);
приложение завершается без каких-либо сообщений об ошибке.
связано ли это с Range checking ?
почему первый раз проходит нормально ?
зависит ли это от версии KOL и Delphi ?
как можно достоверно узнать что происходит в мосент завершения программы (отловить выход) ?
← →
Davlegov (2005-07-06 00:47) [3]i<0 ?
← →
Fanny (2005-07-06 07:55) [4]пересоздал проект (вечер и ночь)
всё тоже самое, только теперь глючит при НАРАЩИВАНИИ массива
как вообще это может быть?
← →
MTsv DN (2005-07-06 09:19) [5]>>как вообще это может быть?
Использовать статический массив...
У меня была такая проблема. Сканирование дерева каталогов и запись в динам. массив файлов с определенным расширением. Так вот приработе с SetLength происходил сбой, причем когда будет сбой неизвестно... Сечас использую статику, до тех пор пока не найду как исправить глюк.
P.S. Вообще-то, эта тема к KOL не имеет никакаго отношения...
2 Fanny
И на "Основном" форуме, и на форуме "WinAPI" эту темы уже рассматривали...
С Уважением MTsv DN
← →
MTsv DN (2005-07-06 09:24) [6]2 Fanny
Почитай вот это:
http://delphimaster.net/view/1-1120570960/
С Уважением MTsv DN
← →
Fanny (2005-07-06 16:54) [7]Дело в том , что если проект упрощённо перенести на VCL, то всё работает. Трассировка показала, что сбой происходит при вызове DynArraySetLength перед ret. Причём такая беда только в KOL. На VCL - всё ОК. Наверное действительно придётся перейти на статику.
← →
ECM © (2005-07-06 17:00) [8]>если проект упрощённо перенести на VCL, то всё работает
я так понимаю, что упрощение идет с КОЛ-проекта...
... а если точно так же упростить в КОЛ? - не верю что не будет работать... можете выслать мне на мыло такой НЕ РАБОТАЮЩИЙ КОЛ-проект...
тут дело в другом (усложняющем) коде...ИМХО
← →
GMax (2005-07-07 23:38) [9]я ловил подобный глюк. причём в 5 дельфях глючило, а в 7 - нет (или наоборот - не помню). глючило при присвоении текста хинтам MCKmdvToolTip.
глюк живёт внутри заменённых системных библиотек. где точно, надо трассировать, сейчас не помню.
в одной из них есть проверка регистра на ноль, а в другой нету.
вылечивалось принудительным присвоением регистра в самом начале dpr:
[...]
begin
asm xor edi, edi; end;
{$IFDEF KOL_MCK} {$I prog_0.inc} {$ELSE}
[....]
Страницы: 1 вся ветка
Текущий архив: 2006.02.26;
Скачать: CL | DM;
Память: 0.49 MB
Время: 0.052 c