![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Обнуление переменной.
Alex_Petr © (2004-12-22 20:31:00)Код такой:
procedure TMainForm.ToolButton3Click(Sender: TObject);
var
List:TStringList;
begin
List:=TStringList.Create;
try
// Работа с чужим компонентом, используещим интерфейсы.
// Переменная List здесь не упоминается.
except
// Сюда не попадаем
end;
ShowMessage(List.Text);// <-- List=nil !!!
List.Free;
end;
В чем я могу ошибаться ?
P.S. На компонент (покупной), пока, грешить поводов не было.
Он требует: CoInitializeEx и CoInitializeSecurity, что и предоставляется
при инициализации.
Alex_Petr (2004-12-22 21:27:00) [21]>1. Версия Delphi?
Delphi 7
2. Оптимизация включена?
И включал и отключал - все едино.
Alex_Petr (2004-12-22 21:25:00) [22]>И ваще. Прийдись отладчиком.
Проходил, обнуление происходит не доходя до конца процедуры.
>Покажи сесь код.
Завтра, буду на работе - покажу, но он Вам :(( не поможет.
Там пара нестандартных функций, встроеннык в компонент ( исходников нет )
>Assigned - False возвращает?
да.
VMcL (2004-12-22 21:22:00) [23]>> Alex_Petr ©
1. Версия Delphi?
2. Оптимизация включена?
Sun bittern (2004-12-22 21:20:00) [24]Assigned - False возвращает?
Fay (2004-12-22 21:20:00) [25]Покажи сесь код.
Fay (2004-12-22 21:19:00) [26]Где-то в коде ошибка (возможно, в приведении типов) и в память по адресу @List пишется что-то (в данном случае - 0).
Как отрабатывает вот это?
procedure TMainForm.ToolButton3Click(Sender: TObject);
var
List:TStringList;
begin
List:=TStringList.Create;
List.Text := 'Всё пучком';
ShowMessage(List.Text);
List.Free;
end;
И ваще. Прийдись отладчиком.
Alex_Petr (2004-12-22 21:17:00) [27]Проверял и брайкпоинтом: в середине блока try - except
List, неожиданно становиться nil.
P.S. Не только Delphi, но и систему переустанавливал.
Alex_Petr (2004-12-22 21:13:00) [28]>Может всетаки имеет место быть: List.Text := '';
Все проверил: именно List=nil.
Sun bittern (2004-12-22 21:11:00) [29]var
List:TStringList;
begin
List:=TStringList.Create;
try
try
// Работа с чужим компонентом, используещим интерфейсы.
// Переменная List здесь не упоминается.
except
// Сюда не попадаем
end;
...
finally
ShowMessage(List.Text);// <-- List=nil !!!
List.Free;
end;
end
>> ShowMessage(List.Text);// <-- List=nil !!!
Может всетаки имеет место быть:
List.Text := '';
Уничтожен объект или нет проверьте так:
if Assigned(List) then ...