![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
![]() Код:
unit Uclss; interface uses Dialogs; type TClass = class Fstr: String; end; implementation end. Код:
unit prjct; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) pB: TButton; procedure pBClick(Sender: TObject); private { Private declarations } public { Public declarations } end; var MainForm: TForm1; implementation {$R *.dfm} uses Uclss; var Cls: TClass; procedure TForm1.pBClick(Sender: TObject); begin Cls.Fstr := 'WTF'; end; end. ![]() Пpoeкт prject.exe вызвaл иcключeниe клacca EAccessViolation ![]() |
#2
|
|||
|
|||
![]() Нельзя обратиться к полю класса. Можно обратиться к ЭКЗЕМПЛЯРУ клсаа. Проще говоря, надо создать объект нужного класса:
Код:
var Cls: TClass; procedure TForm1.pBClick(Sender: TObject); begin Cls := TClass.Create; // Создаем объект - экземпляр класса Cls.Fstr := 'WTF'; Cls.Free; // Не забываем уничтожить объект после того, как он больше не нужен. end; |
#3
|
|||
|
|||
![]() Спасибо!
Цитата:
|
#4
|
|||
|
|||
![]() Пример нагугленный:
Цитата:
Последний раз редактировалось ][enk, 17.03.2009 в 23:17. |
#5
|
|||
|
|||
![]() Пример правильный, просто там подразумевается, что объект создается где-то в другом месте. По поводу второго вызова Free; Ну, после первого вызова объект уже удален, так что ты опять обращаешся к несуществующему объекту. Кстати, при уничтожении объекта указатель на него не становится равным Nil. Вот так вот.
|
#6
|
|||
|
|||
![]() интересно! То есть можно принудительно его(укозатель на объект) прировнять к NIL, чтобы повторный вызов Free не вызывал ааврийного завершения?
|