![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
array of shortint
trotski © (2003-01-16 17:59:00)Не пойму в чем дело. Использую динамический массив a:array of shortint, в Form1Create пишу SetLength(Form1.a,size), работаю, все нормально. Но после закрытия проги вылетает "Недопустимую операцию и будет закрыто"? В Form1Destroy пробовал SetLength(Form1.a,0) и Form1.a:=nil, ничего не помогает. Пошаговая отладка тоже ничего не дает.
Моисей (2003-01-19 11:46:00) [1]а может у тебя чего-то перерисовывается, когда массив уже издох (в смысле -- освободился)? так может получиться, если евент приходит в тот момент когда форма освобождается.
ты попробуй, для проверки, перед тем как перерисовывать, сам массив проверить, типа if assign..., а еще проще try/except
trotski (2003-01-17 23:47:00) [2]В том-то и дело. В одной проге описано там где Form1:TForm1 в другой в private и там тоже все работает. А в данной в private, самое смешное, что ошибка вылезла после того, как я написал код в процедуре отрисовки for i:=0 to 255 do ... В понедельник до работы доберусь, попробую через Low и High. Кода приветси не могу, дома его нет. И еще вопрос : как понять где ошибка, если выдают только номер? Окном ЦПУ?
bogachev (2003-01-17 17:09:00) [3]
TForm1 = class(TForm)
private
a : array of ShortInt;
{ Private declarations }
public
{ Public declarations }
end;
Попробуй так. У меня на D6 работает без проблем.
Чих-пых (2003-01-17 16:32:00) [4]А лучше вообще забыть про for i:=0 to Size-1 do
и всегда использовать вот это:
for i:=Low(Arr) to High(Arr) do
...
han_malign (2003-01-17 09:34:00) [5]Думкин (17.01.03 09:28) - поддерживаю
скорее всего
for i:=1 to Size do ...
вместо
for i:=0 to Size-1 do ...
They are always zero-based. The first element is 0, the second element is 1, and so forth. The standard Low and High functions return 0 and Length – 1, respectively.
Думкин (2003-01-17 09:28:00) [6]Подобное проходит, но последствия ....
SetLength(a,5);
a[6]:= 1;
Думкин (2003-01-17 09:18:00) [7]а у тебя массив при использовании никуда не может залезть на чужое?
Smithson (2003-01-17 09:00:00) [8]Просто если массив объявлен в модуле, то он создается при инициализации модуля и удаляется при его финализации и после этого (например, в деструкторе главной формы) может уже отсутствовать.
MBo (2003-01-17 08:24:00) [9]Да нет особых проблем и с дин. массивами
Andrey V. (2003-01-17 08:13:00) [10]Не далее как вчера (посмотри сабж "dynamic array")
я задавал похожий вопрос.
Все вылечилось отказом от массива и использованием вместо него
TStringList.
Chubais (2003-01-16 18:51:00) [11]в студию входит КОТ....
mrcat (2003-01-16 18:22:00) [12]trotski (16.01.03 17:59)
Код в студию!
Smithson (2003-01-16 18:03:00) [13]Где описан массив? В форме или в модуле? Если в модуле - в каком?