Форум: "Основная";
Текущий архив: 2004.11.07;
Скачать: [xml.tar.bz2];
Вниз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;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.035 c