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

Вниз

Invalid pointer operation при закрытии. Почему???   Найти похожие ветки 

 
Луарвик   (2004-10-25 14:34) [0]

А еще, если юзать application.Destroy то вродь ошибок нет. Хотя в хелпе написано, чтоб "Never call Application.Destroy!!!"


 
Pentium133 ©   (2004-10-25 14:37) [1]

х.з.
твоя программа ты и разбирайся. неизвестно что у тебя там творится!


 
Johnmen ©   (2004-10-25 14:41) [2]

Обращение по несуществующему указателю.
И ещё.
Если установлен знак "Проезда нет. Впереди обрыв", то ты конечно можешь на него наплевать...


 
clickmaker ©   (2004-10-25 14:42) [3]


>  Луарвик   (25.10.04 14:34)
> А еще, если юзать application.Destroy

лучше юзать Halt()


 
Pentium133 ©   (2004-10-25 14:51) [4]


> лучше юзать Halt()

Ага, сразу после Application.Initialize - ошибка должна исчезнуть.


 
Johnmen ©   (2004-10-25 14:57) [5]

>Ага, сразу после Application.Initialize - ошибка должна
>исчезнуть.

Не надо путать Halt и Application.Terminate


 
clickmaker ©   (2004-10-25 15:28) [6]


> [5] Johnmen ©   (25.10.04 14:57)
> >Ага, сразу после Application.Initialize - ошибка должна
>
> >исчезнуть.
>
> Не надо путать Halt и Application.Terminate

Чиста реальные пацаны юзают только Halt. Быстро и безболезненно


 
Pentium133 ©   (2004-10-25 15:31) [7]

Ага! Halt-гитлер!


 
Луарвик   (2004-10-25 23:01) [8]

Гм. (...не обращая внимания на издевки...)

procedure TForm1.FormCreate(Sender: TObject);
var i:integer;
begin
for i:=0 to Stringgrid1.Rowcount do his[i]:=TStringList.Create;
end;

Че то с этой строкой. Если убрать - ошибки нет.


 
Cobalt ©   (2004-10-25 23:50) [9]

Мне так думается, что как раз в другом месте - там, где с этим  his работают и в конце-концов освобождают.

К сожалению, телепаты всё ещё в отпуске, поэтому сказать, что не так в работе с этой загадочной переменной
<telepat mode=on>
Это массив!
<telepat mode=off>

сказать не могу :(


 
Луарвик   (2004-10-26 00:14) [10]

if Cobalt.clever:=true then begin
скажи, как освободить массив из TStrings, потому что
his:=nil;
close;
не пашет!
end;


 
Defunct ©   (2004-10-26 00:55) [11]

> Луарвик   (26.10.04 00:14) [10]

Хамить здесь не нужно. В вашем посте проглядывается ирония в адрес Cobalt, как-будто он что-то не то сказал. На самом деле вы задали очень широкий ворос, и на удивление Cobalt все-таки как-то телепатически конкретизировал ваш вопрос, хотя мог бы просто промолчать или послать по адресу "как правильно задавать вопросы".

Массив из TStrings можно освободить так:

Table : Array of TString;

For I:=0 To Length(Table)-1 Do Table[i].Free;
Table := Nil;


 
Defunct ©   (2004-10-26 07:48) [12]

продолжу идею.

конечно же, после his:=nil происходят еще какие-то события, в обработчиках которых возможно есть обращения к освобожденному массиву. Вот и возникает исключение.


 
Alx2 ©   (2004-10-26 08:19) [13]

>Луарвик   (25.10.04 23:01)

for i:=0 to Stringgrid1.Rowcount-1 do his[i]:=TStringList.Create;


 
Alx2 ©   (2004-10-26 08:22) [14]

Вдогонку Alx2 ©   (26.10.04 08:19) [13]
Конечно, если Length(his) = Stringgrid1.Rowcount


 
AlexKocharin ©   (2004-10-26 08:35) [15]


>For I:=0 To Length(Table)-1 Do Table[i].Free;
>Table := Nil;


А я бы сделал так:

for i:=0 to high(Table) do Table[i].Destroy;
setlength(Table,0);


 
begin...end ©   (2004-10-26 09:21) [16]

А я бы сделал так:

for I := 0 to High(Table) do
 FreeAndNIL(Table[I])


 
Johnmen ©   (2004-10-26 10:43) [17]

Хм... А надо так

for I := Low(Table) to High(Table) do
 FreeAndNIL(Table[I])



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

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

Наверх




Память: 0.5 MB
Время: 0.032 c
3-1097046463
Pashkerton
2004-10-06 11:07
2004.11.07
DateTime в SQL 2000 Server


3-1097472932
CrazyBoy
2004-10-11 09:35
2004.11.07
Cache - это быстро ???


3-1097054853
GlaDimoN
2004-10-06 13:27
2004.11.07
создание отчета


1-1098387808
oleg_
2004-10-21 23:43
2004.11.07
dll


1-1098275631
СержК
2004-10-20 16:33
2004.11.07
Как отследить из приложения - что на машине запущен Excel?