Форум: "Начинающим";
Текущий архив: 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