memo sorunu

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
resul
Üye
Mesajlar: 25
Kayıt: 04 Tem 2007 10:16
İletişim:

memo sorunu

Mesaj gönderen resul »

memo2 datalarım şöyle

22903
6.14
22902
0.12
22901
0.09
12702
2.91
12701
0.11
868588
No Result
33102
No Result
33101
0.08
867684
0.07
868892
0.07
868908
0.09
869506
0.08

MEMO2 çift satır olanlarını tablemdeki NO alanına tek olanlarıda SONUC alanına yazdırmak istiyorum şöyle bir kod yazdım ama olmadı

procedure TForm1.Button4Click(Sender: TObject);
var
i:integer;
begin
For i:=1 to Memo2.Lines.Count-1 do
begin
Table1.Insert;
Table1NO.AsString:=Memo2.Lines;
Table1SONUC.AsString:=Memo2.Lines[i+1];
end;
end;

end.
Kullanıcı avatarı
White Rose
Üye
Mesajlar: 726
Kayıt: 06 Tem 2005 09:41
Konum: Güneyden
İletişim:

Mesaj gönderen White Rose »

for döngüsünde başlama parametresini 0 yapın
resul
Üye
Mesajlar: 25
Kayıt: 04 Tem 2007 10:16
İletişim:

Mesaj gönderen resul »

yaptım olmadı
Kullanıcı avatarı
Lost Soul
Üye
Mesajlar: 1064
Kayıt: 01 Nis 2007 02:55
Konum: mekan ANKARA toprak ELAZIĞ
İletişim:

Re: memo sorunu

Mesaj gönderen Lost Soul »

Kod: Tümünü seç

procedure TForm1.Button4Click(Sender: TObject);
var
i:integer;
begin
For i:= 0 to Memo2.Lines.Count-2 do
   begin
   Table1.Insert;
   Table1NO.AsString:=Memo2.Lines[i]; 
   Table1SONUC.AsString:=Memo2.Lines[i+1];
   end;
end;

end.
şeklinde yazarsanhata vermez. diğer şekilde memoda mesela 10 eleman varsa sen döngü sonunda 11 elemana ulaşmaya çalışıyrsun ve sonuçta hataya sebep oluyor.

Kolay gelsin.
Kullanıcı avatarı
unicorn64
Üye
Mesajlar: 919
Kayıt: 04 Nis 2006 08:56
Konum: yine yeniden Ankara ^_^

Mesaj gönderen unicorn64 »

satır numarası çift olanlar la tek olanlar farklı alanlara aktarılacaksa, sanırım bu döngüdede problem olacaktır. çünkü for döngü sayacı birer birer artacak ve döngüde kullanılan alanların birisi sayac ve diğeri de sayac+1 olacak.

sayac=0 için sayac+1=1 ( Table1NO.AsString:=Memo2.Lines[0]; Table1SONUC.AsString:=Memo2.Lines[1]; )

döngünün sonraki adımında

sayac=1 için sayac+1=2 ( Table1NO.AsString:=Memo2.Lines[1]; Table1SONUC.AsString:=Memo2.Lines[2]; )

olacaktır ve istenen durum bu değil.


Kod: Tümünü seç

 procedure TForm1.Button4Click(Sender: TObject); 
var 
i:integer; 
begin 
For i:= 0 to Memo2.Lines.Count-2 do 
   begin 
   Table1.Insert; 
   
   if ((i mod 2) =0) then 
       Table1NO.AsString:=Memo2.Lines[i]
   else 
      Table1SONUC.AsString:=Memo2.Lines[i+1]; 
   end; 
end; 
şeklinde olması gerekmez mi??

yada döngüyü while kullanarak yapıp döngü sonunda sayacı 2 arttırmak da çözüm olabilir
Kullanıcı avatarı
Lost Soul
Üye
Mesajlar: 1064
Kayıt: 01 Nis 2007 02:55
Konum: mekan ANKARA toprak ELAZIĞ
İletişim:

Mesaj gönderen Lost Soul »

evet o kısma dikkat etmemeişim. :)
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Mesaj gönderen aslangeri »

s.a
peki niye for döngüsünde ısrar ediyorsunu?

Kod: Tümünü seç

i:=0;
whlie i>=memo.lines.count-1 do
begin
  ................
  inc(i,2)
end;
kolay gelsin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Cevapla