RTTI ile alt özelliklerin, alt özelliklerine erişmek.

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Kullanıcı avatarı
sadettinpolat
Moderator
Mesajlar: 2131
Kayıt: 07 Ara 2003 02:51
Konum: Ankara
İletişim:

Re: RTTI ile alt özelliklerin, alt özelliklerine erişmek.

Mesaj gönderen sadettinpolat »

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.
"Sevmek, ne zaman vazgececegini bilmektir." dedi, bana.

---
http://sadettinpolat.blogspot.com/
Kullanıcı avatarı
comfort
Üye
Mesajlar: 214
Kayıt: 28 Ara 2004 06:37
Konum: İzmir
İletişim:

Re: RTTI ile alt özelliklerin, alt özelliklerine erişmek.

Mesaj gönderen comfort »

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.
Kullanıcı avatarı
sadettinpolat
Moderator
Mesajlar: 2131
Kayıt: 07 Ara 2003 02:51
Konum: Ankara
İletişim:

Re: RTTI ile alt özelliklerin, alt özelliklerine erişmek.

Mesaj gönderen sadettinpolat »

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;

"Sevmek, ne zaman vazgececegini bilmektir." dedi, bana.

---
http://sadettinpolat.blogspot.com/
Kullanıcı avatarı
comfort
Üye
Mesajlar: 214
Kayıt: 28 Ara 2004 06:37
Konum: İzmir
İletişim:

Re: RTTI ile alt özelliklerin, alt özelliklerine erişmek.

Mesaj gönderen comfort »

hocam senin kod güzel çalışıyor ama araya

Kod: Tümünü seç

msg.ID:=id42.Create;
bu kodu eklemek gerekiyor. İşte bu işi RTTI 'ye yıkarsam sorun çözülecek.
Kullanıcı avatarı
sadettinpolat
Moderator
Mesajlar: 2131
Kayıt: 07 Ara 2003 02:51
Konum: Ankara
İletişim:

Re: RTTI ile alt özelliklerin, alt özelliklerine erişmek.

Mesaj gönderen sadettinpolat »

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.
"Sevmek, ne zaman vazgececegini bilmektir." dedi, bana.

---
http://sadettinpolat.blogspot.com/
Kullanıcı avatarı
comfort
Üye
Mesajlar: 214
Kayıt: 28 Ara 2004 06:37
Konum: İzmir
İletişim:

Re: RTTI ile alt özelliklerin, alt özelliklerine erişmek.

Mesaj gönderen comfort »

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.
Kullanıcı avatarı
comfort
Üye
Mesajlar: 214
Kayıt: 28 Ara 2004 06:37
Konum: İzmir
İletişim:

Re: RTTI ile alt özelliklerin, alt özelliklerine erişmek.

Mesaj gönderen comfort »

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)
Bu kullanıcı RTTI 'inin birçok bug 'ı olduğunu belirtti ve benim kodumunda bu yüzden çalışmıyor olabileceğini söyledi. Bende yaklaşık 1 haftadır 2 satır kod üzerinde çalışıyorum ve maalesef bir ilerleme yok. Sanırım projeyi askıya alacağım.En azından yeni bir RTTI çıkana kadar.
Cevapla