Copy komutunda problem...

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
uğur alkan
Üye
Mesajlar: 227
Kayıt: 29 Ağu 2004 04:49
Konum: Istanbul

Copy komutunda problem...

Mesaj gönderen uğur alkan »

A235.458 B458.789 C200.000 şeklinde bir stringim var. Burada harflarden sonra gelen sayıları ayırmam gerkiyor...
pos komutu ile A B ve C nin yerlerini buluyorum.

Kod: Tümünü seç

satir:='A235.458 B458.789 C200.000';
A_Yer:=POS('A', satır);
B_Yer:=POS('B', satır);
C_Yer:=POS('C', satır);
sonra

Kod: Tümünü seç


IF A_Yer>0 Then
A_Yer2:=A_Yer;
Repeat
A_Yer2:=A_YER2+1;
Joker:=COPY(satir,A_Yer2,1);
Until Joker<>' ';  //  burada satır sonunun yakalanırmı...???
Edit1.Text:=copy(Satir,A_Yer+1,A_Yer2);
A_Yer2 degişkeni ile ' ' karakterinin nereye geldiğini kontrol ediyorum
Joker ile gelen karekterin ' ' olup olmadığına bakıyorum.
daha sonra bulunan aralığı Copy ile alıyorum ancak A harfinden sonra bana en fazla 3 karekter döndürüyor geri kalan sayılar gelmiyor.
B ve C değerleri içinde aynı şekilde çalışıyor... C için özel bir durum olabilir. Satır sonunda görmez falan diyecegim ama A ve B için mantıklı bir çözüm üretemedim... Sorun ne olabilir...

Yardımlarınız için teşekkür ederim..
Bazen sert rüzgarlar eser başını öne eğmekten asla korkma
Kullanıcı avatarı
freeman35
Admin
Mesajlar: 2381
Kayıt: 12 Haz 2003 04:05
Konum: merkez camii yanı

Mesaj gönderen freeman35 »

Kod: Tümünü seç

satir:='A235.458 B458.789 C200.000';

TMP := LeftTrim(Satir);
if TMP='' then exit;

A_Yer:=POS('A', TMP);
if A_Yer>0 then begin
 Joker:=COPY(TMP,1,A_Yer);
 delete(TMP,1,A_Yer // tmp de işi biteni sil
end;
eğer döngü kurmak istersende, döngü koşulunu

Kod: Tümünü seç

While TMP<>'' do ........
şeklinde yapabilirsin

Kolay gele
ZAGOR TENAY TÜRK'tür... TÜRK kalacak...
Zoru başarırım, İmkansız zaman alır
FreeMan 35.5

Soru sormaya üşenmiyorsan, sorunun çözümünü yazmaya da üşenme !!!
Kullanıcı avatarı
Asri
Kıdemli Üye
Mesajlar: 767
Kayıt: 16 Eyl 2003 09:54
Konum: istanbul

Mesaj gönderen Asri »

Kod: Tümünü seç

satir:='A235.458 B458.789 C200.000'+' '; 
kod1:=pos(' ',satir);A:=copy(' ',2,kod1-1);satir:=copy(' ',kod1+1,length(satir));
kod1:=pos(' ',satir);B:=copy(' ',2,kod1-1);satir:=copy(' ',kod1+1,length(satir));
kod1:=pos(' ',satir);C:=copy(' ',2,kod1-1);satir:=copy(' ',kod1+1,length(satir));
.
.
.
kod1:=pos(' ',satir);X:=copy(' ',2,kod1-1);satir:=copy(' ',kod1+1,length(satir));



Belki daha uzun kodlama olabilir ama ben bu tür işlerde bunu kullanıyorum.
Öğrenmek ve öğretmek, akıntıya karşı yüzmek gibidir ilerleyemediğiniz taktirde gerilersiniz.
Kullanıcı avatarı
uğur alkan
Üye
Mesajlar: 227
Kayıt: 29 Ağu 2004 04:49
Konum: Istanbul

Mesaj gönderen uğur alkan »

trim konusunu biraz daha açabilirmisiniz...?

Kod: Tümünü seç

satir:='A235.458 B458.789 C200.000'+' '; 
kod1:=pos(' ',satir);A:=copy(' ',2,kod1-1);satir:=copy(' ',kod1+1,length(satir)); 
kod1:=pos(' ',satir);B:=copy(' ',2,kod1-1);satir:=copy(' ',kod1+1,length(satir)); 
kod1:=pos(' ',satir);C:=copy(' ',2,kod1-1);satir:=copy(' ',kod1+1,length(satir)); 
. 
. 
çalışmıyor...
Bazen sert rüzgarlar eser başını öne eğmekten asla korkma
Kullanıcı avatarı
delphist
Üye
Mesajlar: 595
Kayıt: 05 Oca 2005 04:34

Mesaj gönderen delphist »

Hocam trim eğer string de boşluk varsa boşlukları kaldırır...
Kullanıcı avatarı
Asri
Kıdemli Üye
Mesajlar: 767
Kayıt: 16 Eyl 2003 09:54
Konum: istanbul

Mesaj gönderen Asri »

Kod: Tümünü seç

procedure TForm1.Button1Click(Sender: TObject);
 var
 satir,a,b,c:string;
 kod1:integer;
begin
  satir:='A235.458 B458.789 C200.000'+' ';
  kod1:=pos(' ',satir);A:=copy(satir,2,kod1-1);satir:=copy(satir,kod1+1,length(satir));
  kod1:=pos(' ',satir);B:=copy(satir,2,kod1-1);satir:=copy(satir,kod1+1,length(satir));
  kod1:=pos(' ',satir);C:=copy(satir,2,kod1-1);satir:=copy(satir,kod1+1,length(satir));
  label1.Caption:=satir;
  label2.Caption:=a;
  label3.Caption:=b;
  label4.Caption:=c;
end;
özür dilerim kodu size göre düzenlerken satir yazılacak yere ' ' koymuşum

bunu denedim çalışyor.
Öğrenmek ve öğretmek, akıntıya karşı yüzmek gibidir ilerleyemediğiniz taktirde gerilersiniz.
Kullanıcı avatarı
uğur alkan
Üye
Mesajlar: 227
Kayıt: 29 Ağu 2004 04:49
Konum: Istanbul

Mesaj gönderen uğur alkan »

çok teşekkür ederim çok sıhhatli bir halde çalışıyor....
Bazen sert rüzgarlar eser başını öne eğmekten asla korkma
Cevapla