Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.01.27;
Скачать: CL | DM;

Вниз

array of shortint   Найти похожие ветки 

 
trotski   (2003-01-16 17:59) [0]

Не пойму в чем дело. Использую динамический массив a:array of shortint, в Form1Create пишу SetLength(Form1.a,size), работаю, все нормально. Но после закрытия проги вылетает "Недопустимую операцию и будет закрыто"? В Form1Destroy пробовал SetLength(Form1.a,0) и Form1.a:=nil, ничего не помогает. Пошаговая отладка тоже ничего не дает.


 
Smithson ©   (2003-01-16 18:03) [1]

Где описан массив? В форме или в модуле? Если в модуле - в каком?


 
mrcat ©   (2003-01-16 18:22) [2]

trotski (16.01.03 17:59)

Код в студию!


 
Chubais ©   (2003-01-16 18:51) [3]

в студию входит КОТ....


 
Andrey V.   (2003-01-17 08:13) [4]

Не далее как вчера (посмотри сабж "dynamic array")
я задавал похожий вопрос.
Все вылечилось отказом от массива и использованием вместо него
TStringList.


 
MBo ©   (2003-01-17 08:24) [5]

Да нет особых проблем и с дин. массивами


 
Smithson ©   (2003-01-17 09:00) [6]

Просто если массив объявлен в модуле, то он создается при инициализации модуля и удаляется при его финализации и после этого (например, в деструкторе главной формы) может уже отсутствовать.


 
Думкин   (2003-01-17 09:18) [7]

а у тебя массив при использовании никуда не может залезть на чужое?


 
Думкин   (2003-01-17 09:28) [8]

Подобное проходит, но последствия ....
SetLength(a,5);
a[6]:= 1;


 
han_malign ©   (2003-01-17 09:34) [9]

Думкин (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 16:32) [10]

А лучше вообще забыть про for i:=0 to Size-1 do
и всегда использовать вот это:
for i:=Low(Arr) to High(Arr) do
...


 
bogachev   (2003-01-17 17:09) [11]

TForm1 = class(TForm)
private
a : array of ShortInt;
{ Private declarations }
public
{ Public declarations }
end;

Попробуй так. У меня на D6 работает без проблем.


 
trotski   (2003-01-17 23:47) [12]

В том-то и дело. В одной проге описано там где Form1:TForm1 в другой в private и там тоже все работает. А в данной в private, самое смешное, что ошибка вылезла после того, как я написал код в процедуре отрисовки for i:=0 to 255 do ... В понедельник до работы доберусь, попробую через Low и High. Кода приветси не могу, дома его нет. И еще вопрос : как понять где ошибка, если выдают только номер? Окном ЦПУ?


 
Моисей   (2003-01-19 11:46) [13]

а может у тебя чего-то перерисовывается, когда массив уже издох (в смысле -- освободился)? так может получиться, если евент приходит в тот момент когда форма освобождается.
ты попробуй, для проверки, перед тем как перерисовывать, сам массив проверить, типа if assign..., а еще проще try/except



Страницы: 1 вся ветка

Текущий архив: 2003.01.27;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.023 c
14-87024
Drin
2003-01-10 01:38
2003.01.27
Delphi & CGI


8-86966
Asderg
2002-10-08 08:25
2003.01.27
как сделать из double вычислений вычисления с фикс точкой.


3-86682
Геннадий
2003-01-03 16:31
2003.01.27
Подкиньте пример работы с запросом


3-86704
Натали
2003-01-08 12:17
2003.01.27
Delphi-6


6-87002
Dimman
2002-11-29 17:00
2003.01.27
New questions about TWebBrowser