Entwickler-Ecke

Sonstiges (Delphi) - Memo - Buchstaben ändern


Goolix - Mi 25.02.04 15:50
Titel: Memo - Buchstaben ändern
Hi, also ich habe jetzt seit einem halben jahr Informatik-Unterricht.
Bei dieser Aufgabe komm ich allerdings garnicht weiter, wenn ihr mir da wohl weiterhelfen könntet:

Aufgabenstellung ist folgende:

2 Memofenster, in einem ein Text (Drei Chinesen mit dem kontrabass...)
mit dem buttonklick [A] sollen jetzt alle Vokale in ein 'a' umgewandelt werden und die neue Strophe
im Memo2-Feld ausgegeben werden. Leider weiß ich überhaupt nicht wie ich da voran gehen soll, da ich die meisten befehle nicht kenne
und auch in der hilfe nix gescheites gefunden habe.
Es wäre super wenn jemand einen Bsp-source schreiben könnte

gruß
goolix


Phantom1 - Mi 25.02.04 16:12

Du kannst dafür die Function StringReplace benutzen.

Zitat:

Die Funktion gibt einen String mit ersetzten Sub-Strings zurück.

function StringReplace(const S, OldPattern, NewPattern: string; Flags: TReplaceFlags): string;

Beschreibung

Mit StringReplace ersetzen Sie in dem angegebenen String den im Parameter OldPattern festgelegten Sub-String mit dem im Parameter NewPattern übergebenen neuen Sub-String. StringReplace nimmt an, dass der String Multibyte-Zeichen enthalten kann.

S ist der Ausgangs-String, dessen Sub-Strings geändert werden sollen.

OldPattern ist der Sub-String, der gefunden und durch NewPattern ersetzt werden soll.

NewPattern ist der Sub-String, bei dem die Vorkommen von OldPattern ersetzt werden sollen.

Flags ist eine Gruppe von Flags, die steuern, wie StringReplace die Vorkommen von OldPattern sucht und ersetzt. Wenn Flags rfReplaceAll nicht enthält, ersetzt StringReplace nur das erste Vorkommen von OldPattern
in S. Andernfalls ersetzt StringReplace alle Instanzen von OldPattern durch NewPattern. Wenn der Parameter Flags rfIgnoreCase enthält, wird die Groß-/Kleinschreibung nicht berücksichtigt.


Chatfix - Mi 25.02.04 16:34

Da Du ja anhängen möchtest must du nur noch ne schleife machen


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
procedure ButtonAClick(...);
var
  i: Integer;
  TmpStr: String;
begin
  for i := 0 to Memo1.Lines.Count - 1 do
  begin
     // Vokale (e, i, o - a logischer weise nicht) ersetzen
    TmpStr := StringReplace(Memo1.Lines[i], 'e''a', [rfReplaceAll, rfIgnoreCase]);
    TmpStr := StringReplace(TmpStr, 'i''a', [rfReplaceAll, rfIgnoreCase]);
    TmpStr := StringReplace(TmpStr, 'o''a', [rfReplaceAll, rfIgnoreCase]);
    Memo1.Lines.Add(TmpStr);
  end;
end;


Code nicht getestet!


StefanH - Mi 25.02.04 18:20


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
var TmpStr: string;
begin
TmpStr:= Memo1.Text;
TmpStr := StringReplace(TmpStr, 'e''a', [rfReplaceAll, rfIgnoreCase]); 
TmpStr := StringReplace(TmpStr, 'i''a', [rfReplaceAll, rfIgnoreCase]); 
TmpStr := StringReplace(TmpStr, 'o''a', [rfReplaceAll, rfIgnoreCase]);
TmpStr := StringReplace(TmpStr, 'u''a', [rfReplaceAll, rfIgnoreCase]);
Memo1.Lines.Add(TmpStr);
end;


ist doch viel kürzer :roll: und außer dem hattest du "u" vergessen dank an obbschtkuche : D


Goolix - Fr 27.02.04 12:05

danke für eure hilfe... habs jetzt *freu*

/goolix