döngü memoda olmadi

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

döngü memoda olmadi

Mesaj gönderen sr1111 »

for I := memo1.lines.Count - 1 downto 0 do
memo1.Lines.Text:=_GetduzeltChar(memo1.Lines.text, 9));

bu kodla memodaki sadece 9. karakteri farkli duzelterek aliyorum.

istedigim memodaki tüm karakterleri duzelterek tekrar memoya yazdırmak. asagıdaki gibi birkac sey yaptim beceremedim olmadi. nasil yaparim.

for I := memo1.lines.Count - 1 downto 0 do
memo1.Lines.Text:=_GetduzeltChar(memo1.Lines.text, length(memo1.Lines));
Kullanıcı avatarı
freeman35
Admin
Mesajlar: 2356
Kayıt: 12 Haz 2003 04:05
Konum: merkez camii yanı

Re: döngü memoda olmadi

Mesaj gönderen freeman35 »

Karakter düzeltmekten kastın nedir?
memo1.Lines.Text bu zaten bir sring döndürür. işlemlerini yapıp tekrar geri yükleyebilirsin. bu durumda döngü manasız.
memo1.Lines.Text:=_GetduzeltChar(memo1.Lines.text, length(memo1.Lines.text));
yada

Kod: Tümünü seç

S:= memo1.Lines.Text
S:=_GetduzeltChar(S, length(S)); //-> length i göndermek neden? function içinde bunu yazmak daha mantıklı
memo1.Lines.Text:= S;
yada burayı incele, döngü ile kullanmak istenirse
https://docwiki.embarcadero.com/CodeExa ... s_(Delphi)
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 !!!
sr1111
Üye
Mesajlar: 220
Kayıt: 06 Mar 2008 01:59

Re: döngü memoda olmadi

Mesaj gönderen sr1111 »

length yi kullaninca sadece son karakteri harfi (1 tane olarak) geri ceviriyor memoya.

istedigim tüm karakterleri cevirerek memoya yazsin.
yani length-1, length-2 length-3 gibi


duzelt fonksiyonum soyle

function _GetduzeltChar(const AText: string; CharPos: Integer): Char;
var
Ch : Char;
Len : Integer;
begin
Len := Length(AText);
if CharPos > Len then Exit;
Ch := Chr(Ord(Atext[CharPos]));

if (ChrInSet(Atext[CharPos-1], cChAsEnd)) then begin
if CharPos = Len then
Exit(Ch)
else begin
CharPos := 1; // retrun a beginning form
end;
end;

Result := Ch;

if ( Ch = cA[0] ) then begin
if (CharPos = 1) then
Result := Ch
else
Result := cA[2]
end;
...........
ertank
Kıdemli Üye
Mesajlar: 1650
Kayıt: 12 Eyl 2015 12:45

Re: döngü memoda olmadi

Mesaj gönderen ertank »

Ne yapmak istediğiniz halen anlaşılmıyor.
Daha önce de soruldu size ancak cevap vermediniz.
"Karakter düzeltmek" ne demek?
Yapmaya çalıştığınız iş nedir?
Örnek veriler ile önceki hali, sonraki hali şeklinde yazabilir misiniz?
sr1111
Üye
Mesajlar: 220
Kayıt: 06 Mar 2008 01:59

Re: döngü memoda olmadi

Mesaj gönderen sr1111 »

ertank
Kıdemli Üye
Mesajlar: 1650
Kayıt: 12 Eyl 2015 12:45

Re: döngü memoda olmadi

Mesaj gönderen ertank »

Arapça ile hiç tecrübem olmadı ve yapmak istediğinizi verdiğiniz bağlantıdan anlayamadım. Sanırım bu bağlantı nihai hedefiniz.
Diğer taraftan Memo ile yapmaya çalıştığınızı anlayamadım. Kendi cümleleriniz ile ifade edebilir misiniz?
Tek tek her harfi kontrol etmek mi istiyorsunuz? Değiştirmek mi istiyorsunuz?
sr1111
Üye
Mesajlar: 220
Kayıt: 06 Mar 2008 01:59

Re: döngü memoda olmadi

Mesaj gönderen sr1111 »

memodaki her harfi tek tek kontrol ederek değiştirmek istiyorum.
fonksiyon sadece 1 harfi kontrol edip memoya yaziyor.
halbuki memoda yuzlerce harf olacak.
ertank
Kıdemli Üye
Mesajlar: 1650
Kayıt: 12 Eyl 2015 12:45

Re: döngü memoda olmadi

Mesaj gönderen ertank »

Aşağıdaki gibi bir kod ile her harfi tek tek kontrol edebilirsiniz.

Kod: Tümünü seç

unit Unit1;

interface

uses
  Winapi.Windows,
  Winapi.Messages,
  System.SysUtils,
  System.Variants,
  System.Classes,
  Vcl.Graphics,
  Vcl.Controls,
  Vcl.Forms,
  Vcl.Dialogs,
  Vcl.StdCtrls;

type
  TForm1 = class(TForm)
    Memo1: TMemo;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
    procedure HarfleriKontrolEt(var Veri: string);
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
  Metin: string;
begin
  // İçeriğini değiştirme olasılığına karşılık bir değişkene değeri okunuyor
  Metin := Memo1.Text;
  // İşlem yapılıyor
  HarfleriKontrolEt(Metin);
  // İşlem sonucu aynı memo içine yazılıyor.
  // Farklı memo içine de yazılabilir veya farklı şekillerde de kullanılabilir.
  Memo1.Text := Metin;
end;


procedure TForm1.HarfleriKontrolEt(var Veri: string);
var
  I: Integer;
  KontrolEdilecekKarakter: Char;
begin
  for I := Low(Veri) to High(Veri) do
  begin
    KontrolEdilecekKarakter := Veri[I];

    // Burada yapmak istediğiniz kontrolü gerçekleştireceksiniz.
    // Aşağıdaki if sadece örnek olarak eklendi
    if KontrolEdilecekKarakter = ' ' then
    begin
      // Eğer karakteri değiştirmek istiyorsak aşağıdaki şekilde yapabiliriz
      Veri[I] := ',';
    end;
  end;
end;

end.
Kodu çalıştırabilmek için boş bir proje açıp içine Memo1 ve Button1 nesnelerini eklemeli ve gerekli olay atamalarını yapmalısınız.

NOT: Kod Delphi 10.4.2 ile hazırlanmıştır. Delphi 7 gibi eski bir sürüm kullanıyorsanız yeni sürümlerden birine geçmenizde büyük fayda var. Yapmak istediğiniz işlem Unicode desteği gerektirdiği için Delphi 7'de oldukça uğraşılı olacaktır.
Kullanıcı avatarı
freeman35
Admin
Mesajlar: 2356
Kayıt: 12 Haz 2003 04:05
Konum: merkez camii yanı

Re: döngü memoda olmadi

Mesaj gönderen freeman35 »

http://www.delphibasics.co.uk/RTL.asp?N ... ingreplace
ister harf kullanabilirsin, istersen kelime,
Başkalarının kodlarını kullanacaksan, sadece sonuca odaklanıp copy paste ile kullanmayın. Kodun nasıl çalıştığını inceleyin. mesela ChrInSet ne ? ne iş yapar nasıl çalışır. Bunu yapmak kendi programcılığını geliştirir. Ben hala yaparım.
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 !!!
Cevapla