Bir cümledeki kelimelerin yerini değiştirme

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Dobreli
Üye
Mesajlar: 3
Kayıt: 31 Ara 2017 01:49

Bir cümledeki kelimelerin yerini değiştirme

Mesaj gönderen Dobreli » 31 Ara 2017 02:07

Örneğin edit içinde yazılı olan kısımı
ali ata bak.
ali bak ata.
Şeklinde değiştirmek istiyorum. Dilde yeni ve sınırlı bilgim olmasından kaynaklı ne yaparsam yapim sonuca ulaşamadım.
Yardımlarınızı bekliyorum. Şimdiden hepinize teşekkürler.

ertank
Üye
Mesajlar: 1167
Kayıt: 11 Eyl 2015 11:45

Re: Bir cümledeki kelimelerin yerini değiştirme

Mesaj gönderen ertank » 01 Oca 2018 07:28

Merhaba,

Öncelikle forum sabit mesajlarından yeni üye olanlar ile ilgli bölümü okumanızda fayda var.
viewtopic.php?f=2&t=2482

Sorunuzda kullandığınız Delphi sürümünü belirtmemişsiniz. Ayrıca sorunuzda amacınızı da açıkça belirtmemişsiniz. Yapmak istediğinizi belli kurallar şeklinde açıklamanız mümkün mü? "Şeklinde yapmak istiyorum" dediğiniz ifadeyi ben "boşluk karakterleri ile ayrılmış bir cümle içindeki son iki kelime yer değiştirsin" şeklinde anlıyorum. Bunu yapmak için aşağıdaki gibi bir kod kullanabilirsiniz.

Kod: Tümünü seç

function GetlastWordsSwitched(const Value: string): string;
var
  List: TStringList;
  I: Integer;
begin
  List := TStringList.Create();
  try
    List.Delimiter := ' ';
    List.StrictDelimiter := True;
    List.DelimitedText := Value;

    if List.Count > 2 then
    begin
      for I := 0 to Pred(List.Count-2) do
      begin
        Result := Result + List[I] + ' ';
      end;
      Result := Result + List[Pred(List.Count)] + ' ';
      Result := REsult + List[Pred(List.Count-1)];
    end
    else
    begin
      if List.Count = 2 then
      begin
        Result := List[1] + ' ' + List[0];
      end
      else
      begin
        Result := Value;
      end;
    end;
  finally
    List.Free();
  end;
end;
Bu kod Delphi 10.2.2 ile çalışmaktadır. Eğer siz Delphi 7 gibi eski bir sürüm kullanıyor iseniz kodun sorunsuz derlenmesi için

Kod: Tümünü seç

List.StrictDelimiter := True;
ifadesini kaldırmanız gerekecektir.

Ancak amacınız "boşluklar ile ayrılmış kelimelerden parametrik olarak herhangi ikisini yer değiştirmek ve bunu Pos() ve Copy() fonksiyonları ile yapmak" ise bu durumda yukarıdaki kod işinizi görmez. Çok farklı bir kod yazmak gerekir.

Dobreli
Üye
Mesajlar: 3
Kayıt: 31 Ara 2017 01:49

Re: Bir cümledeki kelimelerin yerini değiştirme

Mesaj gönderen Dobreli » 02 Oca 2018 02:43

Öncelikle verdiğiniz cevap için teşekkür ederim. Eksik Bilgi verdiğim için kusuruma bakmayın. Delphi 7 ve rad studio (sürümünü hatırlamıyorum) kullanmaktayım.Hocamızın verdiği finallere hazırlık sorusu diyeyim, hocamız kendi gösterdiği dışında herhangi bir kodla çözümünü kabul etmemekte. Kullanmam gereken kodlar sadece lenght,pos,copy; if,while,for döngüleri. Bu yüzden attığınız çözüme ulaştırır fakat kabul görmez.(En altta da belirtmişsiniz.) Soruyu çözdüğümü de belirtmek isterim.(Soru: Editteki cümle de istenilen kelime ile istenilen kelimenin yerini değiştiren programın kodu.) Sizin gibi kodları ayrı pencerede nasıl yazıldığını bilmiyorum ve temize çekmediğim için kodları paylaşamadım burada.

Cevapla