Array of TxsDecimal, değer atama..

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
me_turan@mynet.com
Üye
Mesajlar: 29
Kayıt: 09 Eyl 2017 02:53

Array of TxsDecimal, değer atama..

Mesaj gönderen me_turan@mynet.com »

Arkadaşlar bir soap uyugulamasında soap ile göndermek istediğim verilerden bir tanesi array of txsdecimal. array of txsdecimal var altında tanımlıyorum. kullanmaktada sıkıntı yok. problem setlength ile array dizesinin boyutunu ayarlıyorum. Sonra for döngüsü icinde 0 dan x' e kadar bir döngü ile icine veri girişi yapıyorum. ancak döngünün sonunda atadığım değer dizedeki tüm satırları değiştiriyor. Örnek

Var
liste:Array of TxsDecimal;
decimaldeger:TxsDecimal;
i:integer;
begin
setlength(liste,4);
decimaldeger :=TxsDecimal.Create;

decimaldeger.XSToNative('ahmet'); liste[1] := decimaldeger;
decimaldeger.XSToNative('mehmet'); liste[2] := decimaldeger;
decimaldeger.XSToNative('fatma'); liste[3] := decimaldeger;
decimaldeger.XSToNative('sinan'); liste[4] := decimaldeger;

showmessage(liste[1].NativeToXS);
showmessage(liste[2].NativeToXS);
showmessage(liste[3].NativeToXS);
showmessage(liste[4].NativeToXS);

//sırasıyla 4 defa sinan , sinan, sinan, sinan mesajlarını alıyorum. son yaptığım atama önceki tüm satırlarıda etkiliyor.. çözüm bulamadım..


end;

neden son yapılan atama dizedeki tüm satırları değiştiriyor bilen varsa yardımcı olursa sevinirim.. kolay gelsin iyi çalışmalar..
En son me_turan@mynet.com tarafından 11 Eyl 2017 10:55 tarihinde düzenlendi, toplamda 1 kere düzenlendi.
me_turan@mynet.com
Üye
Mesajlar: 29
Kayıt: 09 Eyl 2017 02:53

Re: Array of TxsDecimal, değer atama..

Mesaj gönderen me_turan@mynet.com »

bu arada daha önce TxsDecimal ile calısırken, var altında tanımlamama ragmen procedure icinde create etmezsem onu kullanamadığımı farkettim.
büyük ihtimalle array of txsdecimal icinde bu geçerlidir. ama onu nasıl create edecegimi bulamadım . neler neler denedim ama hiçbiri yemedi :)
me_turan@mynet.com
Üye
Mesajlar: 29
Kayıt: 09 Eyl 2017 02:53

Re: Array of TxsDecimal, değer atama..

Mesaj gönderen me_turan@mynet.com »

çözümü Ertank adlı arkadas verdi. memberlist.php?mode=viewprofile&u=8699
aşağıda..

Kod: Tümünü seç

 Mhl[I] := TXSDecimal.Create();  // TXSDecimal öncelikle create edilmelidir

Kod: Tümünü seç

uses
  Soap.XSBuiltIns;

procedure TForm1.Button1Click(Sender: TObject);
const
  Rakamlar: Array of string = ['1450', '1451', '1452', '1453', '1454', '1455', '1456', '1457', '1458', '1459', '1460'];
var
  Mhl: Array of TXSDecimal;
  I: Integer;
begin
  SetLength(Mhl, 10);

  for I := 0 to 9 do // Index sıfır tabanlıdır
  begin
    Mhl[I] := TXSDecimal.Create();  // TXSDecimal öncelikle create edilmelidir
    Mhl[I].XSToNative(Rakamlar[I+1]);
    ShowMessage(Mhl[I].NativeToXS);
  end;

  ShowMessage(Mhl[2].NativeToXS);
  ShowMessage(Mhl[3].NativeToXS);

  // İşimiz bitince hafızayı temizlemeliyiz
  for I := Low(Mhl) to High(Mhl) do
  begin
    Mhl[I].Free();
  end;
end;
Cevapla