Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2012.03.18;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.49 MB
Время: 0.003 c
2-1323075473
Елена
2011-12-05 12:57
2012.03.18
загрузка BitMap из не стандартного файла.


15-1322221527
И. Павел
2011-11-25 15:45
2012.03.18
Они убили Beep()!


15-1321993802
Юрий
2011-11-23 00:30
2012.03.18
С днем рождения ! 23 ноября 2011 среда


15-1313642062
runer
2011-08-18 08:34
2012.03.18
Как расшарить принтер в WIN7?


15-1322191574
P
2011-11-25 07:26
2012.03.18
Цифровая подпись драйвера





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский