Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Buchstaben ersetzen (https://www.delphipraxis.net/98462-buchstaben-ersetzen.html)

Ricoo 27. Aug 2007 20:00


Buchstaben ersetzen
 
Hallo!

Ich komme mal wieder nicht weiter. Ich möcht einen Text in Memo1 einlesen, alle A's durch B's ersetzen und dann in Memo2 ausgeben.
Nur funktioniert das Ganze nichso.

Kann mir Jemand helfen?

Delphi-Quellcode:

procedure TForm1.Button1Click(Sender: TObject);
var i, j:Integer;
    Datei:TextFile;
    Zeile: String;
    zeichen: char;

begin
  AssignFile(Datei, 'Liesmich.TXT');
  Reset(Datei);

  While not EOF(Datei) do Begin
    Readln(datei,Zeile);
    Memo1.Lines.Add(Zeile);
  end;
  closeFile(datei);

  for i:=0 to Memo1.Lines.Count do
    begin
      zeile:=Memo1.Lines[i];

      for j:= 0 to 10 do
        begin
         zeichen := zeile[j];

         if zeichen = 'b' then
          begin
            zeile[j] := 'a';

          end;

        end;

      Memo2.Lines.Add(Zeile);
    end;
end;
Das mit dem 0 to 10 in der zweiten For-Schleife is nur zu Test zwecken, wenns bei den ersten 10 klappt, muss es auch bei den nächsten 10 funktionieren.. xD

Danke schonmal! :hi:

mkinzler 27. Aug 2007 20:02

Re: Buchstaben ersetzen
 
Versuch es mal mir ReplaceString()

SirThornberry 27. Aug 2007 20:13

Re: Buchstaben ersetzen
 
das einfachste:
Delphi-Quellcode:
Memo1.LoadFromFile('Liesmich.TXT');
Memo2.Lines.Text := StringReplace(Memo1.Lines.Text, 'a', 'b', [rfReplaceAll]);

Ricoo 27. Aug 2007 20:19

Re: Buchstaben ersetzen
 
Danke Leute! So klappt das Einwand frei.. xD

Hawkeye219 27. Aug 2007 20:34

Re: Buchstaben ersetzen
 
Hallo Ricoo,

Zitat:

Zitat von Ricoo
So klappt das Einwand frei..

...solange die Datei im aktuellen Arbeitsverzeichnis liegt - wo auch immer das zum Zeitpunkt des Aufrufs sein mag: klick

Gruß Hawkeye

Ricoo 27. Aug 2007 20:48

Re: Buchstaben ersetzen
 
Zitat:

Zitat von Hawkeye219
Hallo Ricoo,

Zitat:

Zitat von Ricoo
So klappt das Einwand frei..

...solange die Datei im aktuellen Arbeitsverzeichnis liegt - wo auch immer das zum Zeitpunkt des Aufrufs sein mag: klick

Gruß Hawkeye

Ja, hab das sowieso mit sonem OpenDialog gemacht aber danke. =)

Ricoo 27. Aug 2007 21:27

Re: Buchstaben ersetzen
 
In Delphi 2005 Personal hat das mit StringReplace super funktioniert.
Mein Problem ist jetzt aber, dass das ne Hausaugabe war und mein Lehrer nur Delphi 3 hat und sich
strikt weigert irgentwas Anderes zu benutzen. Jetzt wollt ich das halt alles nochmal in Delphi 3
schreiben aber da scheint es die StringReplace Funktion noch nicht zu geben. -.-

Hat jemand vielleicht noch einen anderen Vorschlag?

Matze 27. Aug 2007 21:40

Re: Buchstaben ersetzen
 
Hi,

ist das hier was für dich StringReplace?

scrat1979 27. Aug 2007 21:47

Re: Buchstaben ersetzen
 
Zitat:

Zitat von Ricoo
In Delphi 2005 Personal hat das mit StringReplace super funktioniert.
Mein Problem ist jetzt aber, dass das ne Hausaugabe war und mein Lehrer nur Delphi 3 hat und sich
strikt weigert irgentwas Anderes zu benutzen. Jetzt wollt ich das halt alles nochmal in Delphi 3
schreiben aber da scheint es die StringReplace Funktion noch nicht zu geben. -.-

Hat jemand vielleicht noch einen anderen Vorschlag?

Schade. Dann musst Du Deinen ursprünglichen Source-Code ein wenig anpassen:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var i, j    :Integer;
    Zeile   : String;
begin
{
  AssignFile(Datei, 'Liesmich.TXT');
  Reset(Datei);

  While not EOF(Datei) do Begin
    Readln(datei,Zeile);
    Memo1.Lines.Add(Zeile);
  end;
  closeFile(datei);
}
  Memo1.Lines.LoadFromFile('Liesmich.TXT'); // Etwas einfacher :-)

  for i:=0 to (Memo1.Lines.Count-1) do // -1 nicht vergessen!
    begin
      zeile := Memo1.Lines[i];

      for j:= 1 to length(zeile) do // ist etwas allgemeiner gehalten, und: Bei "1" anfangen!
        begin
         if zeile[j] = 'b' then
            zeile[j] := 'a';
        end;

      Memo2.Lines.Add(Zeile);
    end;
end;
Mit Memo1.Lines.Text sparst Du noch ein paar Zeilen, wollte Deinen Source aber so wenig wie möglich verändern. Code ist ungetestet - viel Spaß damit!
BTW, bei Deiner Version werden Großbuchstaben "B" nicht berücksichtigt. Sollten mehrere Zeichen umgewandelt werden, dann würde ich Dir die CASE-Anweisung empfehlen. Spart bei vielen Zeichen eine Menge Code und Fehlermöglichkeiten :-)

SCRaT

grenzgaenger 27. Aug 2007 22:22

Re: Buchstaben ersetzen
 
normal läuft das doch so, oder...?
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var i, j:Integer;
    Datei:TextFile;
    Zeile: String;
    zeichen: char;

begin
  AssignFile(Datei, 'Liesmich.TXT');
  Reset(Datei);
  While not EOF(Datei) do Begin
    Readln(datei,Zeile);
    for i := 0 to length(zeile) do
    begin
     if zeile[i] = 'a' then zeile[i] := 'b';
  //  ... und hier noch 'n paar abfragen oder cases....
    end;
    Memo1.Lines.Add(Zeile);
  end;
  closeFile(datei);
end;
das ging sogar (beinahe) unter tp, 3.0... :-), nur dass du da kein tMemo hast.. :zwinker:


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:26 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz