![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Проблемы с динамическими массивами
Fanny © (2005-07-05 07:56:00)У кого-нибудь были?
В частности при изменении длины.
GMax (2005-07-07 23:38:00) [1]я ловил подобный глюк. причём в 5 дельфях глючило, а в 7 - нет (или наоборот - не помню). глючило при присвоении текста хинтам MCKmdvToolTip.
глюк живёт внутри заменённых системных библиотек. где точно, надо трассировать, сейчас не помню.
в одной из них есть проверка регистра на ноль, а в другой нету.
вылечивалось принудительным присвоением регистра в самом начале dpr:
[...]
begin
asm xor edi, edi; end;
{$IFDEF KOL_MCK} {$I prog_0.inc} {$ELSE}
[....]
ECM (2005-07-06 17:00:00) [2]>если проект упрощённо перенести на VCL, то всё работает
я так понимаю, что упрощение идет с КОЛ-проекта...
... а если точно так же упроститьв КОЛ? - не верю что не будет работать... можете выслать мне на мыло такой НЕ РАБОТАЮЩИЙ КОЛ-проект...
тут дело в другом (усложняющем) коде...ИМХО
Fanny (2005-07-06 16:54:00) [3]Дело в том , что если проект упрощённо перенести на VCL, то всё работает. Трассировка показала, что сбой происходит при вызове DynArraySetLength перед ret. Причём такая беда только в KOL. На VCL - всё ОК. Наверное действительно придётся перейти на статику.
MTsv DN (2005-07-06 09:24:00) [4]2 Fanny
Почитай вот это:
http://www.delphimaster.ru/cgi-bin/forum.pl?id=1120570960&n=0
С Уважением MTsv DN
MTsv DN (2005-07-06 09:19:00) [5]>>как вообще это может быть?
Использовать статический массив...
У меня была такая проблема. Сканирование дерева каталогов и запись в динам. массив файлов с определенным расширением. Так вот приработе с SetLength происходил сбой, причем когда будет сбой неизвестно... Сечас использую статику, до тех пор пока не найду как исправить глюк.
P.S. Вообще-то, эта тема к KOL не имеет никакаго отношения...
2 Fanny
И на "Основном" форуме, и на форуме "WinAPI" эту темы уже рассматривали...
С Уважением MTsv DN
Fanny (2005-07-06 07:55:00) [6]пересоздал проект (вечер и ночь)
всё тоже самое, только теперь глючит при НАРАЩИВАНИИ массива
как вообще это может быть?
Davlegov (2005-07-06 00:47:00) [7]i<0 ?
Fanny (2005-07-05 09:30:00) [8]есть три массива (динамических)
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 ?
как можно достоверно узнать что происходит в мосент завершения программы (отловить выход) ?
<Falcon> (2005-07-05 09:18:00) [9]А так чтобы было понятно? Какие могут быть проблемы с массивами?
Для изменения длины массива - SetLength(arrayname,newlength)
И какое это отношение имеет к KOL?