string fonk. yapamadim

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
sr1111
Üye
Mesajlar: 220
Kayıt: 06 Mar 2008 01:59

string fonk. yapamadim

Mesaj gönderen sr1111 »

s.a
bayagi ugraşmama ragmen yapamadim. neyi yanliş yapiyorum.
memodaki aşagıdaki gibi metnim var. bunlarin arasindaki tirelerin silinip en sondaki tirelerin kalmasini istiyorum.

gi-de-lim
gel-sin
ge-le-cek-te-ki
//////////////// aşağıdaki gibi kalsin istiyorum.
gide-lim
gel-sin
gelecekte-ki
///////////////

yapamadigim kod bu,
var
i:integer;
ynb,sm:tstringlist;
begin
ynb := TStringlist.Create;
sm := TStringlist.Create;
sm.Text:=memo1.Lines.Text;
for i := 0 to sm.Count - 1 do
begin
if (Pos('-', sm) > 0) then
ynb.add(RightStr(sm.strings, Length(sm.Strings)-Pos('-', sm.Strings)));
end;
memo2.lines.text:=ynb.text;
Kullanıcı avatarı
SimaWB
Üye
Mesajlar: 1316
Kayıt: 07 May 2009 10:42
Konum: İstanbul
İletişim:

Re: string fonk. yapamadim

Mesaj gönderen SimaWB »

Öncelikle en sağdaki "tire"nin pozisyonunu bulan bir fonksiyona ihtiyacın var:

Kod: Tümünü seç

function RPos(S: string): integer;
var
  i: integer;
begin
  Result := 0;
  for i := Length(S) downto 1 do
    if S[i]='-' then
    begin
      Result := i;
      Break;
    end;
end;
Daha sonra Memo'yu satır satır okuyup, son tire ve sonrasını bir değişkene, ondan öncekileri bir değişkene atarsın. Son "tire"den önceki tüm tireleri silersin....

Kod: Tümünü seç

procedure TForm3.Button2Click(Sender: TObject);
var
  i, p: integer;
  satir, tmp1, tmp2: string;
begin
  for i := 0 to Memo1.Lines.Count-1 do
  begin
    satir := Memo1.Lines[i];
    p := RPos(satir);
    if p > 0 then
    begin
      tmp1 := Copy(satir, 1, p-1);
      tmp2 := Copy(satir, p, 1000);
      tmp1 := StringReplace(tmp1, '-', '', [rfReplaceAll]);
      Memo1.Lines[i] := tmp1+tmp2;
    end;
  end;
end;
There's no place like 127.0.0.1
sr1111
Üye
Mesajlar: 220
Kayıt: 06 Mar 2008 01:59

Re: string fonk. yapamadim

Mesaj gönderen sr1111 »

Bir sorunum daha vardi bununla ilgili. Onuda cözebilirsek çok makbule gececek.

aslinda istediğim elimdeki kelimler listesine göre eklerini bulmak
ve bir cok zaman normal tireleme kelimenin eklerini bulmuyor.
mesela aşağıdaki
gelecekte-ki => gelecek-teki seklinde heceletmek istiyorum
bunun için elimdeki ekler listesine göre kelimenin sonunu nasil tireletebilirim.

evdeki => ev-deki
görürler => görür-ler

ekler listem şöyle;
deki
teki
ler
...
En son sr1111 tarafından 09 Ağu 2012 01:46 tarihinde düzenlendi, toplamda 1 kere düzenlendi.
Kullanıcı avatarı
SimaWB
Üye
Mesajlar: 1316
Kayıt: 07 May 2009 10:42
Konum: İstanbul
İletişim:

Re: string fonk. yapamadim

Mesaj gönderen SimaWB »

Pos ve PosEx fonksiyonlarını araştırmanızı öneririm... (Ekler listesindekileri sırayla alıp, kelimenin sonunda var mı diye kontrol ettireceksiniz.)
There's no place like 127.0.0.1
sr1111
Üye
Mesajlar: 220
Kayıt: 06 Mar 2008 01:59

Re: string fonk. yapamadim

Mesaj gönderen sr1111 »

fakat bir sorun var ek 1 den fazla tekrar ettiginde kelime karisip bozuluyor.
bunu nasil cozerim. hala yapamadim
Cevapla