Merhaba ,
Object Dizi döndüren br web servisini Delphi uygulamasıyla test ediyorum sorunyok, fakat c# uygulamasında test edilirken servis NULL değer döndürüyor, acaba Delphi tarafında servisi yazarken dikkat edilmesi gereken ekstra durumlar mı var.
Object Dizi Döndüren WebServisi c# ta NULL dönüyor.
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
Delphi tarafında değilde c# tarafında bir cast sorunu yaşıyor olabilirmisiniz?
Malüm object diziside bir object dir..
örn;
Malüm object diziside bir object dir..
örn;
Kod: Tümünü seç
private object[] GetObjectArray()
{
object[] obj = new object[3];
obj[0] = new Button();
obj[1] = new TextBox();
obj[2] = new Label();
return obj;
}
private void button_Click(object sender, EventArgs e)
{
object obj = GetObjectArray();
object o1 = ((object[])obj)[0];
object o2 = ((object[])obj)[1];
object o3 = ((object[])obj)[2];
Button btn = (Button)a1;
TextBox txt = (TextBox)a2;
Label lbl = (Label)a3;
}
@lazio küçük bir yanlış anlaşılma oldu ojbe derken şöyle bir objeden bahsetmiştim,
WebServisimde tanımladığım Remotable bir Class var ,
örn;
Ben bir metodla bu Class ın dizisini döndürüyorum ;
Örnek Metodda şöyle ,
Bu metod parametre geçtiğim kadar uzunluğunda rast gele verili TDizi türünde değer döndürüyor,
ben bunu delphi de çağırıp kullanıyorum sorunsuzca ancak ,
c# da şu şekilde kullandığımda ,
döngüde dizi.length kısmında hata veriyor ve diyorki dizi=null dur . oysaki null değil.
Anlayamadım gitti, dizi değilde tek döndüren metodu c# ta sorunsuz kullanabiliyorum.
WebServisimde tanımladığım Remotable bir Class var ,
örn;
Kod: Tümünü seç
TDiziElemani = Class(TRemotable)
private
FAlanString : String;
FalanInteger: Integer;
published
property AlanString :String read FAlanString write FAlanString;
property AlanInteger :Integer read FalanInteger write FalanInteger;
end;
Kod: Tümünü seç
TDizi = array of TDiziElemani;
Kod: Tümünü seç
function OjbDiziTest(Sayi:Integer):TDizi;stdcall;
ben bunu delphi de çağırıp kullanıyorum sorunsuzca ancak ,
c# da şu şekilde kullandığımda ,
Kod: Tümünü seç
TDiziElemani[] dizi = new IPolisoftservice().OjbDiziTest(3);
textBox2.Text = dizi.Length.ToString();
for (int i = 0; i < dizi.Length; i++)
{ textBox1.Text = dizi[i].AlanString; }
döngüde dizi.length kısmında hata veriyor ve diyorki dizi=null dur . oysaki null değil.
Anlayamadım gitti, dizi değilde tek döndüren metodu c# ta sorunsuz kullanabiliyorum.
Volkan KAMADAN
www.polisoft.com.tr
www.polisoft.com.tr
döngüden önceki satırdaki Length i alabiliyormusun peki?Kod: Tümünü seç
TDiziElemani[] dizi = new IPolisoftservice().OjbDiziTest(3); textBox2.Text = dizi.Length.ToString(); for (int i = 0; i < dizi.Length; i++) { textBox1.Text = dizi[i].AlanString; }
döngüde dizi.length kısmında hata veriyor ve diyorki dizi=null dur . oysaki null değil.
Anlayamadım gitti, dizi değilde tek döndüren metodu c# ta sorunsuz kullanabiliyorum.
Ayrıca TDiziElemani array ını test etmek için önceki örnekteki kodu buna uygulayabilirsin..
new IPolisoftservice().OjbDiziTest(3) dönen sonucu bir object [] a atayıp length ini almaya çalışabilirsin, eğer alabiliyorsan her bir elemanı TDiziElemani class ına çevirerek sonu halledebilirsin diye düşünüyorum..
yok eğer new IPolisoftservice().OjbDiziTest(3) object array a da null dönüyorsa bu fonks.da bir sorun olabilir.
kolay gelsin..
O satırı son anda eklemiştim o yüzden gözümden kaçmış evet o satırdada hat alıyorum, şimdi object olarak aldığımdada dizi=null fakat fonksiyonu delphiden çağırabiliyorum ve null gelmiyor istediğim sonuçlar geliyor.döngüden önceki satırdaki Length i alabiliyormusun peki?
Şöyle bir şey var, C# ta yazılmış bir Web Servisindeki buna benzer Object dizisi dönen metod sonuçlarını delphiden boş görüyorduk sonra adamlar c# taki koda minik bir eklenti yapmışlar görebildik, acaba delphi dede c# obje dizileri görebilsin die özel bir tanımlama mı yapmak gerekir? Çünkü Delphi den çağırdığımda hiç bir sorun yok.
Volkan KAMADAN
www.polisoft.com.tr
www.polisoft.com.tr