RTTI ile alt özelliklerin, alt özelliklerine erişmek.
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
- sadettinpolat
- Moderator
- Mesajlar: 2131
- Kayıt: 07 Ara 2003 02:51
- Konum: Ankara
- İletişim:
Re: RTTI ile alt özelliklerin, alt özelliklerine erişmek.
hata vermesi dogal , web servisin icinde ki sinifta yer alan id sinifi sen ona rtti ile ulasmaya calistigin esnada henuz olusturulmamis, nil degerine sahip. web servisi kullanirken id degerinin sahip oldugu nesne ne zaman ve kim tarafindan olusturuluyor bilmek lazim. yoksa kod normal calisiyor.
Re: RTTI ile alt özelliklerin, alt özelliklerine erişmek.
hocam size gönderdiğim örnekte TID sınıfının root property'sini widestring yaparsanız o da çalışmıyor. Benim webservisimde de widestring tanımlı root alanı. Sanırım sorun bu.
- sadettinpolat
- Moderator
- Mesajlar: 2131
- Kayıt: 07 Ara 2003 02:51
- Konum: Ankara
- İletişim:
Re: RTTI ile alt özelliklerin, alt özelliklerine erişmek.
widestring problemi soyle hallediliyor ama id sinifi kim tarafindan ne zaman olusturuldugu mechul , eger id sinifini kendimiz olusturmaz isek asagidaki kod da bir ise yaramayacaktir.
Kod: Tümünü seç
TID=class
private
froot: widestring; //
Fextension: string;
published
public
property root:widestring read froot write froot; //
property extension:string read Fextension write fextension;
end;
....
.....
procedure TForm5.Button1Click(Sender: TObject);
var
msg:TWSMessage;
t:TRttiType;
p:TRttiProperty;
ctx:TRttiContext;
test:widestring;
begin
test:='test';
msg:=TWSMessage.Create;
ctx:=TRttiContext.Create;
t:=ctx.GetType(msg.ClassType);
t.GetProperty('id').
PropertyType.GetProperty('root').
SetValue(t.GetProperty('id').
GetValue(msg).AsObject,TValue.From(test));
ShowMessage(t.GetProperty('id').PropertyType.GetProperty('root').GetValue(t.GetProperty('id').GetValue(msg).AsObject).AsString);
//result = 'test'
end;
{ TWSMessage }
constructor TWSMessage.create;
begin
FID :=TID.Create;
end;
Re: RTTI ile alt özelliklerin, alt özelliklerine erişmek.
hocam senin kod güzel çalışıyor ama araya
bu kodu eklemek gerekiyor. İşte bu işi RTTI 'ye yıkarsam sorun çözülecek.
Kod: Tümünü seç
msg.ID:=id42.Create;
- sadettinpolat
- Moderator
- Mesajlar: 2131
- Kayıt: 07 Ara 2003 02:51
- Konum: Ankara
- İletişim:
Re: RTTI ile alt özelliklerin, alt özelliklerine erişmek.
web servisi normal calistirdigin vakit bu id sinifini kim olusturuyor ?
buyuk ihtimalle sen olusturmuyorsun di mi ? web servisi cagirdigin zaman kendisi mi olusturuyor?
web servisi normal yollardan cagirip kullandigin bir ornek uygulama var mi? ornek uzerinden gidip id sinifini kimin ne zaman olusturdugunu bulmak lazim. ornegi yuklersen biraz kurcalayabilirim.
buyuk ihtimalle sen olusturmuyorsun di mi ? web servisi cagirdigin zaman kendisi mi olusturuyor?
web servisi normal yollardan cagirip kullandigin bir ornek uygulama var mi? ornek uzerinden gidip id sinifini kimin ne zaman olusturdugunu bulmak lazim. ornegi yuklersen biraz kurcalayabilirim.
Re: RTTI ile alt özelliklerin, alt özelliklerine erişmek.
hocam elimde böyle bir örnek var ve o örnektede id yaratılıyor. ws bunu kendisi yapmıyor. biz elle yaratıcaz senin anlıyacağın.
Ayrıca wsmessage örneğinde id'yaratılmasada çalışıyor.İsterseniz constructor silip deneyin.Sorun id 'nin yaratılması olmayabilir.
Ayrıca wsmessage örneğinde id'yaratılmasada çalışıyor.İsterseniz constructor silip deneyin.Sorun id 'nin yaratılması olmayabilir.
Re: RTTI ile alt özelliklerin, alt özelliklerine erişmek.
Kod: Tümünü seç
When I get a chance, I would double-check it more closely. The new RTTI
system has many bugs in it, I would not be surprised if this turns out to be
one of them.
--
Remy Lebeau (TeamB)