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

Вниз

Как добратся до переменноый в другом класе?   Найти похожие ветки 

 
norecoi1   (2011-12-06 06:12) [0]

Tx = class
my_var : string;
end;

Ty = class
procedure hello;
end;

procedure y.hello;
var z : Tx;
begin
// Как ? Пробовал так, но получаю "Access violation.."
z := nil;
z := Tx(z);
ShowMessage(z.my_var);
end;


Как добратся до переменноый/или функции в другом класе с другова класа?

d2010, Indy10, win7


 
MBo ©   (2011-12-06 08:10) [1]

Объект сначала нужно создать с помощью вызова конструктора (обычно Create).

А добраться необходимо в первую очередь до книжек по основам языка.


 
Palladin ©   (2011-12-06 10:00) [2]

русского


 
Dimka Maslov ©   (2011-12-06 10:05) [3]

Почему орешник больше не пополняется?


 
Плохиш ©   (2011-12-06 12:38) [4]


> Почему орешник больше не пополняется?

Видно потому, что нет ничего нового и смешного. Такие как аФФтар сюда каждый месяц перед сессией приползают.


 
norecoi1   (2011-12-06 20:43) [5]

ну забыл я в примере класс create() но суть не меняется

Tx = class
my_var : string;
procedure test;
end;

Ty = class
procedure hello;
end;

Ta = class
procedure me;
end;

procedure me;
var t : Tx; // неиспользуя global var.
begin
 t := t.create;
 t.my_var := "Hello World";
end;

procedure Ty.hello;
var t : Tx;
begin
// Как ? Пробовал так, но получаю "Access violation.."
t := nil;
ShowMessage(Tx(t).my_var);
end;


сори за русский, учился в Латышских учагах.


 
Dimka Maslov ©   (2011-12-06 21:27) [6]

Да, суть не меняется, как была написана полная ерунда, так и осталась.
Зачем сначала обнулять указатель на объект, а потом обращаться к его полю?


 
Dennis I. Komarov ©   (2011-12-06 21:44) [7]


> Dimka Maslov ©   (06.12.11 21:27) [6]

Есть такой метод - научный и эксперементальный...
А чего там и как потом посмотрим, а может и нет, главное чтоб работало...


> norecoi1   (06.12.11 20:43) [5]

Команты, плз, на каждую строчку кода: что, зачем и почему...


 
Dimka Maslov ©   (2011-12-06 21:54) [8]


>  Dennis I. Komarov ©   (06.12.11 21:44) [7]


Рецентно переехавшее уютненькое /lm/ прекрасно поясняет суть метода научного тыка. Здесь у нас совершенно другой случай.


 
Dennis I. Komarov ©   (2011-12-06 22:08) [9]


> Здесь у нас совершенно другой случай.

Ага, тоже такой научный...
// Как ? Пробовал так, но получаю "Access violation.."


 
DiamondShark ©   (2011-12-06 22:45) [10]


> // Как ? Пробовал так, но получаю "Access violation.."
t := nil;


попробуй так:

t := Pointer(Random(MaxInt));

"Access violation.." будет значительно реже.


 
Dennis I. Komarov ©   (2011-12-06 22:50) [11]

А вообще окажется что там так:
TMyClass = classs(...)
private
 FAnyVar: TAnyType
...
end;


 
norecoi1   (2011-12-07 01:28) [12]

Я непонемаю,

создаю переменную в процедуре одного класа, и хочу достать её из другова класа.

КАК ?


 
norecoi1   (2011-12-07 01:36) [13]

x = class
protected
Fl: TList;
end;

y = class
end;

procedure y.test;
begin
// Access violation at address 004D0D12 in module test.exe
x(TList).Fl.Clear;
end;

function x.my;
begin
Fl := TList.Create;
end;


Помогите, уже третий день парюсь(

my base language PHP.


 
norecoi1   (2011-12-07 01:36) [14]

Sorry не тот баттн нажал, в места Код, болд.


 
Германн ©   (2011-12-07 01:39) [15]


> norecoi1   (07.12.11 01:28) [12]
>
> Я непонемаю,
>

Купи учебник! И прочитай его.
Тогда может поймешь свой бред.
P.S. Учебник по русскому языку тоже будет не лишним. :)


 
norecoi1   (2011-12-07 01:39) [16]

x = class
protected
Fl: TList;
end;

y = class
end;

procedure y.test;
begin
// Access violation at address 004D0D12 in module test.exe
x(TList).Fl.Clear;
end;

function x.my;
begin
Fl := TList.Create;
end;


 
norecoi1   (2011-12-07 01:40) [17]

я нехочу не чего покупать, проста покожите как и я отстану


 
norecoi1   (2011-12-07 02:01) [18]

x = class(TIdBaseComponent)
Fl: TList;
end;

y = class(TThread)
end;

procedure y.test;
begin
// Access violation at address 004D0D12 in module test.exe
x(TList).Fl.Clear;
end;

function x.my;
begin
Fl := TList.Create;
end;


для ясности внесу изменения в примере, добавлю что класы разные.


 
norecoi1   (2011-12-07 02:32) [19]

я уже весь гугл перерыл, везде есть примеры по работе Parent -> child , но у меня же 2 родителя.

HEEEELP !((((((


 
norecoi1   (2011-12-07 03:22) [20]

unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, IdTCPClient;

type
 TForm1 = class(TForm)
 procedure FormCreate(Sender: TObject);
 private
   Flist : TList;
 public
   property list : TList read Flist write Flist;
 end;

 Tmy_class = class(TThread)
   public
   procedure test;
 end;

var
 Form1: TForm1;

implementation

{$R *.dfm}

procedure Tmy_class.test;
var x:TForm1;
begin
 // crash - // Access violation at address 004D0D12 in module test.exe
 Form1.list.clear;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
 Flist := FList.Create;
end;

end.


 
norecoi1   (2011-12-07 03:24) [21]

unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, IdTCPClient;

type
 TForm1 = class(TForm)
 procedure FormCreate(Sender: TObject);
 private
   Flist : TList;
 public
   property list : TList read Flist write Flist;
 end;

 Tmy_class = class(TThread)
   public
   procedure test;
 end;

var
 Form1: TForm1;

implementation

{$R *.dfm}

procedure Tmy_class.test;
begin
 // Error here, can"t access the Flist var or list propertie, help !! How to access?
 TForm1(TList).list.Clear;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
 Flist := FList.Create;
end;

end.


 
KilkennyCat ©   (2011-12-07 07:16) [22]

http://rsdn.ru/?article/Delphi/Delphi_7_03.xml



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

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

Наверх




Память: 0.52 MB
Время: 0.015 c
2-1323062407
kulakovboris
2011-12-05 09:20
2012.03.18
Утечка памяти на ровном месте


1-1289241191
DevilDevil
2010-11-08 21:33
2012.03.18
BASM overload


15-1322123135
Медвежонок Пятачок
2011-11-24 12:25
2012.03.18
"А при Фрэнке такого не было"


2-1323190986
Zhuck01
2011-12-06 21:03
2012.03.18
как найти символ в строке


1-1288683989
pooh
2010-11-02 10:46
2012.03.18
аналог текстового редактора