![]() |
Vokal ersetzen
Hallo,
ich habe ein Problem. Ich bin zwar erst neu hier, doch ich hoffe ihr könnt mir helfen. Ich soll alle Vokale eines Textes den ich zuvor geöffnet habe, durch einen anderen Vokal ersetzen, den ich in einem Editfeld eingebe. Das Hochladen des Textes (in Listbox) habe ich schon. Ich weis nur nicht wie ich die Vokal (muss nur die in der 1. Zeile ändern) ändere. Kann mir jemand helfen? |
AW: Vokal ersetzen
Hallo und Willkommen in der DP :dp:,
langsame, dafür einfache Möglichkeit: jeden Vokal mit ![]() |
AW: Vokal ersetzen
Delphi-Quellcode:
gegf. wegen Großkeinschreibung 2 mal mit doppeltem UpperCase
Listbox1.Items[0] := StringReplace(Listbox1.Items[0], WasAuchImmer,Edit1.Text,[rfReplaceAll]);
|
AW: Vokal ersetzen
Mit einer Schleife habe ich es auch schon versucht doch die funktioniert nicht richtig.
Ich wollte es mit IF A,E,I,O,U und in klein geschrieben halt machen. Wie kann ich jetzt das Editfeld einbauen? Mein Quelltext: v soll der eingegebene Vokal sein. FOR z:=1 TO LENGTH(txt[z]) DO IF (txt[z]= 'a')or (txt[z]= 'e')or (txt[z]= 'i') or (txt[z]= 'o') or (txt[z]= 'u') or (txt[z]= 'A') or (txt[z]= 'E') or (txt[z]= 'I') or (txt[z]= 'O') or (txt[z]= 'U') THEN txt[z]:=v; |
AW: Vokal ersetzen
Gar nicht. Du willst ja nicht das Edit ändern, sondern den String, der da drin steht. Schreib Dir also eine Funktion, wo ein String reinkommt, bearbeitet wird und als Result zurückgegeben wird. Z.B.:
Delphi-Quellcode:
Das ist zwar weder schön noch schnell, sollte aber funktionieren.
function ReplaceChar(const s: string; Old, New: Char): string;
begin Result := StringReplace(s, Old, New, [rfReplaceAll]); end; [edit] Achja, aufrufen könntest Du das dann so:
Delphi-Quellcode:
[/edit]
Edit1.Text := ReplaceChar(Edit1.Text, 'a', 'u');
|
AW: Vokal ersetzen
Delphi-Quellcode:
var
rep:String; begin rep := 'ö'; Listbox1.Items[0] := StringReplace( StringReplace(Listbox1.Items[0], AnsiLowerCase(rep) ,AnsiLowerCase(Edit1.Text),[rfReplaceAll]) , AnsiUpperCase(rep) ,AnsiUpperCase(Edit1.Text),[rfReplaceAll]) end; |
AW: Vokal ersetzen
Ich will ja nur in ein Editfeld zu Beispiel u eingeben. In der Listbox sollten dann alle Vokale durch das u ersetzt werden.
|
AW: Vokal ersetzen
Sorry, ich hatte übersehen daß es um alle Vokale geht
Delphi-Quellcode:
Function ReplaceAllVocals(const s:String;New:Char):String;
var i:Integer; begin Result := s; For i := 1 to Length(s) do case s[i] of 'a','e','u','i','o','ü','ö','ä':Result[i] := AnsiLowerCase(New)[1]; 'A','E','U','I','O','Ü','Ö','Ä':Result[i] := AnsiUpperCase(New)[1]; end; end; procedure TForm2.Button1Click(Sender: TObject); begin Showmessage(ReplaceAllVocals('Was Auch immer hier stehen könnte','o')); end; |
AW: Vokal ersetzen
Dann übergib die entprechenden Eigenschaften als Parameter an die Funktion.
|
AW: Vokal ersetzen
Delphi-Quellcode:
so sollte es klappen.
FOR z:=1 TO LENGTH(txt) DO
IF (txt[z]= 'a')or (txt[z]= 'e')or (txt[z]= 'i') or (txt[z]= 'o') or (txt[z]= 'u') or (txt[z]= 'A') or (txt[z]= 'E') or (txt[z]= 'I') or (txt[z]= 'O') or (txt[z]= 'U') THEN txt[z]:=v; Gruß K-H |
AW: Vokal ersetzen
Und wie wäre das dann mit einer Prozedur. Wir sollen es damit machen. Was ist das Result in deinem Quelltext.
|
AW: Vokal ersetzen
Oder kürzer:
Delphi-Quellcode:
for z := 1 to Length(txt) do
if (Upcase(txt[z]) in ['A', 'E', 'I', 'O', 'U']) then txt[z] := v; |
AW: Vokal ersetzen
So war meine Idee vorhin auch. Nur habe ich nun noch das Problem das ich nicht v also den neuen Vokal an die Stelle des alten bekomme.
v:=lbvokal.items.Add[z] ist ja falsch Muss ich jetzt noch z hochzählen in einer Schleife? |
AW: Vokal ersetzen
Zitat:
Bummi hat Dir doch schon ein schönes Beispiel für eine Funktion geliefert. Gruß K-H wenn Du den Vokal in ein EditFeld eingibst, dann solltest Du ihn über v:=edit1.Text[1]; bekommen. (Fehlerprüfungen hab ich mir mal geschenkt) |
AW: Vokal ersetzen
Also hier mein Quelltext für die Prozedur..
Delphi-Quellcode:
Beim letzten funktioniert es nicht.
var z : integer;
v : SHORTSTRING; begin v:=evokal.text; FOR z:=1 TO LENGTH(txt) DO IF (txt[z]= 'a')or (txt[z]= 'e')or (txt[z]= 'i') or (txt[z]= 'o') or (txt[z]= 'u') or (txt[z]= 'A') or (txt[z]= 'E') or (txt[z]= 'I') or (txt[z]= 'O') or (txt[z]= 'U') THEN txt[z]:=v; v:=lbdatei.items.Add(INTTOSTR(z)); end; Also ab v:=... Es werden nicht die Vokale geändert. Der Text bleibt gleich. |
AW: Vokal ersetzen
Tja, dann sag uns mal, was z, txt und v ist.
|
AW: Vokal ersetzen
Also
- v ist der neue Vokal den ich über das Editfeld eingebe - txt ist der Text (ARRAY [1..50] of STRING) - z soll die Position sein wo der neue vokal an die Stelle des alten kommt. In txt soll der Vokal v für alle Vokale die im text enthalten sind eingefügt werden. |
AW: Vokal ersetzen
:wall:
|
AW: Vokal ersetzen
Also, ich persönlich verstehe nicht, was Du da zu tun versuchst. Mir scheint, Du bist mit Deinen eigenen Variablen durcheinander geraten. Beachte auch bitte den Hinweis von p80286:
Zitat:
|
AW: Vokal ersetzen
Wenn Du sowas machst
Delphi-Quellcode:
Meinst Du dann
txt ist der Text (ARRAY [1..50] of STRING)
Delphi-Quellcode:
und warum >> v : SHORTSTRING;
for i := 1 to Length(text[0]) do
begin if text[0][i] ...... end; |
AW: Vokal ersetzen
Nein txt:= ARRAY[1..50] OF STRING[255].
Für Shortstring geht auch String. Mein Fehler liegt nur noch in dem Aufruf. V soll in der Listbox alle Vokale ersetzen. Also zum Beispiel aus "Inhalt" durch eingabe des Vokal u in dem Editfeld "Unhult" machen. |
AW: Vokal ersetzen
Delphi-Quellcode:
So einfach könnte das sein, Du brauchst halt nur noch die "Ersetze"-Routine.
for i := 0 to DeineListbox.Items.Count - 1 do
DeineListbox.Items[i] := Ersetze(DeineListbox.Items[i], DeinEdit.Text[1]); |
AW: Vokal ersetzen
Für mein Verständnis müsste txt ein String und v ein Char sein ....
|
AW: Vokal ersetzen
Meine Datentypen also String usw. funktionieren da ich ja schon andere prozeduren eingefügt habe.
Mein einziges problem noch: v soll als Wert in die listbox, also sowas wie v:=lb.items.add(weis ich nicht??))<-muss noch was eingefügt werden. Mir fehlt der korrekte Aufruf. e_xs.text:=FLOATTOSTR(xs); wäre ja nicht für eine Listbox aber das halt nur für eine Listbox mit v. |
AW: Vokal ersetzen
Nochmal ganz langsam für alte Männer: Du willst in irgendeinem String die Vokale durch einen bestimmten ersetzen, der in ein Edit eingegeben werden soll, soweit richtig? Wenn ja, wo kommen die ursprünglichen Strings her und wo genau sollen die bearbeiteten hin?
|
AW: Vokal ersetzen
Alte Männer ist Gut!!
Zitat:
Delphi-Quellcode:
lb.Items.Add(v);
Zitat:
Zitat:
Gruß K-H |
AW: Vokal ersetzen
><((((º> ?
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:39 Uhr. |
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