Kelime paçalama.

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
subhan
Üye
Mesajlar: 224
Kayıt: 05 Mar 2008 08:18

Kelime paçalama.

Mesaj gönderen subhan »

Ben böyle bir şey lezim. Şimdi böyle bir kelime var diyelim 659/325 .
Yapmak istediğim " / " işaretinden önce ve sonra yazılan kelimeyi (her neyse)
ayrı-ayrı integer tipli alanlara aktarmak. Bu işlemi aslında Copy funksiyonu ile yapmaya çalışdım olmadı.
Bilgisi olan arkadaşlara rica ediyorum yardım etsinler.
< The Best Boy >
abdulkadir
Kıdemli Üye
Mesajlar: 489
Kayıt: 13 Eyl 2003 09:10
Konum: istanbul
İletişim:

Re: Kelime paçalama.

Mesaj gönderen abdulkadir »

pos komutu işini görür forumda cok defa aynı işlem yapılmıstır.
forumda arayın fazlasını bulacaksınız....
search.php?keywords=pos&terms=all&autho ... bmit=Arama

basarılar....
Fikirleri Aktar
Kaynakları Dagıt
Ve
Yoldan Çekil
http://www.Leventler.com.tr
qamyoncu
Üye
Mesajlar: 266
Kayıt: 12 Tem 2008 04:30

Re: Kelime paçalama.

Mesaj gönderen qamyoncu »

function AnsiPos(text: String; SubStr: String;): integer;

Text'in içerisinde SubStr'yi arar. Bulduğu karakterin yerini sonuç olarak gönderir.

Kod: Tümünü seç

var
text,substr: String;
sonuc: Integer;
begin
Text:='Merhaba Dünya';
Substr:='aba';
sonuc:=AnsiPos(text,substr)
...
// sonuc 5..
Batuhan TAŞDÖVEN
'Yükseldikçe küçülen bir uçurtma..'
Kullanıcı avatarı
subhan
Üye
Mesajlar: 224
Kayıt: 05 Mar 2008 08:18

Re: Kelime paçalama.

Mesaj gönderen subhan »

Teşekürler aradığımı pos funksiyonu ile yapa bildim.
< The Best Boy >
Kullanıcı avatarı
subhan
Üye
Mesajlar: 224
Kayıt: 05 Mar 2008 08:18

Re: Kelime paçalama.

Mesaj gönderen subhan »

Ben kodlamayı yapa bildim. Kodları Buraya koyuyorum belki kulanmak isteyen olur.
Şimdi ben kodları 2 tane apdım. Bu arada ben bu kodları Uzaktan fare kontrol proqramı için yapdım.


Kod1 / işaretinden enceki ve sonarkı kelimeleri alıyor.

Kod: Tümünü seç

procedure TForm1.Button4Click(Sender: TObject);
var
Yer: Integer;
Metin: String;
begin
Metin:=Edit1.Text;           /// Edit1 içine bunu yaza bilirsini  12121/45454  deneme için.
Yer:=Pos('/',Metin);
Edit2.Text:=StrToInt(LeftStr(Metin,Yer-1));
Edit3.Text:=StrToInt (MidStr(Metin, Yer+1,Length(Metin)+Yer));
end;


Kod2 Bu kod da önceki koddan bir az farkli. Yani burda kelimeyi 3-yere bölüyoruz. Mes: 1215/1245\Sol .
Burada \ karakterinden sonra mutlaka 3 karakter olmalı. Daha fazla ve dah az olursa doru çalışmaz.
Ancak küçük değişiklikle karakter sayısını artıra biliriz.

Kod: Tümünü seç

procedure TForm1.Button2Click(Sender: TObject);
var
Kordinat,X,Y,Tik:String;
Yer1,Yer2,A:Integer;
B:String;
begin
Kordinat:=Edit1.Text;
Yer1:=Pos('/',Kordinat);
Yer2:=Pos('\',Kordinat);
X:=LeftStr(Kordinat,Yer1-1);
Y:=Copy(Kordinat,Yer1+1,Yer2-1);
A:=Pos('\',Y);
Delete(Y,A,4);                
Tik:=MidStr(Kordinat,Yer2+1,Length(Kordinat)+Yer2);
Edit2.Text:=X;
Edit3.Text:=Y;
Edit4.Text:=Tik;
end;
Şimdi Gelelim en sonda \ işaretinden sonra karakter sayına.
Bu kod satrını inceleyelim Delete(Y,A,4); buradakı 4 rakamının anlama en sonda
3 karakter olmasını gerektiğini bildiriyor. \ işaretinden sonrakı karakter sayı 7 ise kodakı 4 rakamının yerine 8 yazılmalı.
Yani 1 ise 2, 2 ise 3 yazıyoruz. Bu kadar.

Ayrıca belki bu kodları daha kisa keçilde yazmak olurdu ancak ben yapamadım. Bu arada yapdığım programı forumun Pakte Programlar bölümünden indire bilirsiniz.
< The Best Boy >
Kullanıcı avatarı
unicorn64
Üye
Mesajlar: 919
Kayıt: 04 Nis 2006 08:56
Konum: yine yeniden Ankara ^_^

Re: Kelime paçalama.

Mesaj gönderen unicorn64 »

parçalanacak değer string ise (yada stringe çevirdikten sonra) idglobal unitinde bulunan Fetch fonksiyonunu kullanabilirsiniz...
Fetch fonksiyonu parametre olarak verilen stringden, ayraç parametresinde verilen kadar kısmı geri döndürür ve parametre olarak gönderilen stringde de ayraçtan sonrası kalır...

Kod: Tümünü seç

uses  idGlobal;

var
s1,s2:string;

s1:='659/325';

s2:=Fetch(s1,'/');
//fetch işleminden sonra
//s2->659  s1->325 olur...

bazen yükselmek için önce dibi görmek gerekir...

forumda soru sormadan önce bakılmalı bence
daha fazlası için...

yürümeyi öğrenmeden koşmaya çalışanlar için, tökezleyip düşmek kaçınılmazdır...

Resim
Kullanıcı avatarı
subhan
Üye
Mesajlar: 224
Kayıt: 05 Mar 2008 08:18

Re: Kelime paçalama.

Mesaj gönderen subhan »

Çok güzel bu benim kodan az. Bunu kulanırım artık. Teşekürler ederim.
< The Best Boy >
Cevapla