Editte Yazılı Ad Soyad Parçalama (Parse Etme) Nasıl Yapabilirim [Çözüldü]

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
Commandx
Üye
Mesajlar: 181
Kayıt: 01 Oca 2008 05:34

Editte Yazılı Ad Soyad Parçalama (Parse Etme) Nasıl Yapabilirim [Çözüldü]

Mesaj gönderen Commandx »

Arkadaşlar Edite Girili Bir Ad ve Soyaddan oluşan bir verim var.
Burda yapmak istediğim
Bir döngü ile , veritabanından çekeceğim ad soyad bilgisini ad ve soyad arasındaki boşluktan faydalanarak AD KISMINI EDİT2 YE
SOYAD KISMINI da EDİT3 e yazdırmak istiyorum
Fırsatım olmadığı için Text String Parse işlemleriyle fazla uğraşamadım
Yardımcı olursanız Müteşekkirim
Resim

Neyse Arkadaş Vermiş Kodu Sağolsun, arattım bulamadım veya gözden kaçmış
Farklı bir yoldan hallettim
Ad Soyad bulunduran Listenin tamamını Excele attım.

Kod: Tümünü seç

Excellde ad kısmı için 
=SOLDAN(YERİNEKOY(A1;" ";"*";UZUNLUK(A1)-UZUNLUK(YERİNEKOY(A1;" ";"")));BUL("*";YERİNEKOY(A1;" ";"*";UZUNLUK(A1)-UZUNLUK(YERİNEKOY(A1;" ";"")));1)-1)

Kod: Tümünü seç

Soyadlarını ayırmak için de bu formülü girdim
=PARÇAAL(A1;UZUNLUK(B1)+2;UZUNLUK(A1)-UZUNLUK(B1))
Tekrar Kaydedip Veritabanına COMOBJ kütüphanesiyle ad soyad sütununa veri girişini döngüye sokarak (WHILE NOT IBTable1.Eof do ) veya fetch ederek (for i:= 0 to ibtable1.RecordCount-1 do) döngüyle Kaydettim
Biraz uzun iş oldu ama Aşağıdaki kod da iş gördü nitekim sağ elimle sol kulağımı kaşımak gibi birşeye benzedi benimkisi

Kod: Tümünü seç

/------------------------------------------
Function TersCevir(no:String):String;
var
    Cevrilen:String;
    i:Integer;
Begin
    i:= 0;
    Cevrilen := '';
    For i := length(no) DownTo 1 Do
    Begin
        Cevrilen := Cevrilen + no[i];
    End;
    Result := Cevrilen;
End;
procedure TForm1.Button1Click(Sender: TObject);
var
    Str,Ad,SoyAd:String;
    i,k:Integer;

begin
    Str := TersCevir(Edit1.Text);
    For i := 1 to Length(Str) do
    Begin
        if Str[i] = ' ' Then
        Begin
            For k := Length(Str) downto i do
            Begin
                Ad := Ad + Str[k]
            End;
            Break;
        End;
        SoyAd := SoyAd + Str[i]
    End;
    ShowMessage(ad);
    ShowMessage(terscevir(Soyad));
end;
Bu işin mantığını biliyorum uğraştım fakat bir yerlere gelince tıkanıyor insan
Yeteri kadar zamanım olmadığından bir an önce çözmem gerekliydi o da excele döküp ordan geri almaktı
Herkese teşekkür ederim....
En son Commandx tarafından 14 Oca 2019 04:13 tarihinde düzenlendi, toplamda 6 kere düzenlendi.
http://www.delphibasics.co.uk/RTL.asp?Name=DaysBetween
http://www.neonhaber.com/Static/mega-co ... index.html
www.delphican.con
Function PARSE( text, ilk, son:String ): String; //
begin
Delete(Text, 1, pos(ilk, Text) + Length(ilk)-1);
Result := Copy(Text, 1, Pos(Son, Text)-1);
end;
zengin
Üye
Mesajlar: 233
Kayıt: 06 Ağu 2003 10:13

Re: Editte Yazılı Ad Soyad Parçalama (Parse Etme) NAsıl Yapabilirim

Mesaj gönderen zengin »

s.a

viewtopic.php?f=2&t=5912&p=32793&hilit= ... rma#p32793

buraya bakarsan size yardımcı olur sanırım kolay gelsin
Zengin
me_turan@mynet.com
Üye
Mesajlar: 29
Kayıt: 09 Eyl 2017 02:53

Re: Editte Yazılı Ad Soyad Parçalama (Parse Etme) NAsıl Yapabilirim

Mesaj gönderen me_turan@mynet.com »

Var
i:integer;
isim:string;
Begin
isim:= edit1.text;
i:=pos(isim, ' '); /// boslugun kacinci sirada oldugunu donderir
Edit2.text := copy(isim, 1, i-1); // 1. Karakterden i-1inci karaktere kadar kopyala
Edit3.text := copy(isim, i+1, length(isim)-i);
End;
emre19
Üye
Mesajlar: 13
Kayıt: 17 Nis 2016 01:23

Re: Editte Yazılı Ad Soyad Parçalama (Parse Etme) Nasıl Yapabilirim

Mesaj gönderen emre19 »

çift soyadlılarda ne yapmayı düşünüyorsun ?
me_turan@mynet.com
Üye
Mesajlar: 29
Kayıt: 09 Eyl 2017 02:53

Re: Editte Yazılı Ad Soyad Parçalama (Parse Etme) Nasıl Yapabilirim

Mesaj gönderen me_turan@mynet.com »

Haklisin. Ben kodu gorup kendine uyarlar diye aceleyle yazmistim :)

Var
i,h:integer;
isim:string;
Temp:string;
Begin
isim:= edit1.text;
i:=pos(isim, ' '); /// boslugun kacinci sirada
Edit2.text := copy(isim, 1, i-1);
temp:=copy(isim, i+1, length(isim)-i);
h:= pos(temp,' ');
If h > 1 then // geriye kalan kelime icinde bosluk varsa
Begin
Edit2.text := edit2.text + ' ' +copy(temp, 1, h-1);
Edit3.text := copy(temp, h+1, length(temp)-h);
End
Else
Edit3.text := copy(isim, i+1, length(isim)-i);
End;

Ayrica delphi 7 efsane olsada xe7 yi tavsiye ederim..
Cevapla