![]() |
Buchstaben in Text suchen & ersetzen
Hey
Ich bin ein Delphi Neuling und würde mich freuen wenn ihr mir helfen könntet. Folgendes Problem versuche ich zu beheben. Ich habe einen Text in einem Memo Feld. In diesem Memo Feld will ich jedes Wort durchgehen und alle Buchstaben ersetzen. Folgendes soll passieren: Text wird durchgegangen und der erste Buchstabe in einer Tabelle (Stringgrid) gesucht. Zu diesem Buchstaben gibt es in der Tabelle ein Gegenstück, durch was es ersetzt werden soll. Erst habe ich es mit Ansireplace versucht, nur dabei ist das Problem, dass wenn der Text durchgegangen wird z.B. das erste mal A -> Z ersetzt wird, schließlich wird am Ende dann wieder Z -> G ersetzt und alles stimmt nicht mehr. Anfangen will ich mit: for i := 1 to L do begin (L ist die Länge des Textes) Vielen Dank für eure Hilfe Pascall |
Re: Buchstaben in Text suchen & ersetzen
Erstelle Dir eine Kopie des Textes.
Dann gehe das Original Zeichen für Zeichen durch und ersetze in der Kopie das Zeichen. Zeige dann die Kopie in einem separaten Memofeld. |
Re: Buchstaben in Text suchen & ersetzen
Hey
Eine Kopie erstellt man zum Beispiel so oder?
Delphi-Quellcode:
dem alten Text einfach einer neuen Variable zuweisen.
Text2 := mOriginal.Text;
Mit dem, wie man Zeichen für Zeichen ersetzt bin ich überfragt.
Delphi-Quellcode:
Pascall
for i := 1 to L do begin // 1 bis Länge des Textes
if mOriginal.text[L] = stringgrid1.Cells[0,0] then Text2[L] := stringgrid1.Cells[3,0]; // SO wollte ich das ersetzen, hat aber leider nicht ganz geklappt |
Re: Buchstaben in Text suchen & ersetzen
Delphi-Quellcode:
Ein Computer macht das, was man ihm sagt, unter keinen Umständen etwas anderes. :mrgreen:
for i := 1 to L do // 1 bis Länge des Textes
begin if mOriginal.text[ i ] = stringgrid1.Cells[0,0] then Text2[ i ] := stringgrid1.Cells[3,0]; end; // Das Ergebnis, steht jetzt in Text2 und soll wieder zurück in das Memofeld mOriginal.text := Text2; axo, da du ja vielleicht mehr als nur den Wert aus der Zelle [0,0] überprüfen willst:
Delphi-Quellcode:
// Wir speichern ein Kopie
Text2 := mOriginal.Text; for i := 1 to Length( Text2 ) do // 1 bis Länge des Textes for r := 0 to 25 do begin if mOriginal.Text[ i ] = StringGrid1.Cells[ 0 , r ] then Text2[ i ] := StringGrid1.Cells[ 3, r ]; end; // Das Ergebnis, steht jetzt in Text2 und soll wieder zurück in das Memofeld mOriginal.Text := Text2; |
Re: Buchstaben in Text suchen & ersetzen
Hey
Das heißt so wie ich es gemacht habe, war es richtig? Aber leider kommt dann immer der Fehler: Inkompatible Typen: 'Char' und 'string' Das ganze sieht im Moment so aus:
Delphi-Quellcode:
Stimmt das so wirklich? Dann wäre ich ja begeistert, außer dem einen Fehler...
begin
mChiffriert.clear; // löschen, sicherheitshalber mDeChiffriert.clear; mOriginal.Text := uppercase(mOriginal.text); L := length(mOriginal.text); Text2 := mOriginal.Text; for i := 1 to L do begin if mOriginal.text[L] = stringgrid1.Cells[0,0] then Text2[L] := stringgrid1.Cells[3,0]; mOriginal.text := Text2; end; Pascall Danke schon Mal |
Re: Buchstaben in Text suchen & ersetzen
Zitat:
Du prüfst L-mal nach, ob der L-te Buchstabe des Textes einen Wert hat. Das scheint mir nicht sehr sinnvoll ;) |
Re: Buchstaben in Text suchen & ersetzen
Hier passt was nicht:
Delphi-Quellcode:
mOriginal.text[L] ist ein Buchstabe, stringgrid1.Cells[0,0] jedoch ein string. Spätestens bei der Zuweisung geht das schief.
if mOriginal.text[L] = stringgrid1.Cells[0,0] then Text2[L] := stringgrid1.Cells[3,0];
Leider erwähnst du nicht, wie die Übersetzungstabelle genau aufgebaut ist. |
Re: Buchstaben in Text suchen & ersetzen
Hey
(Ist der Fehler immer noch drin mit Char + String, aber immerhin schon etwas verbessert)
Delphi-Quellcode:
Meine Tabelle ist wie folgt aufgebaut:
Text2 := mOriginal.Text;
for r := 0 to 25 do begin if mOriginal.Text[ i ] = StringGrid1.Cells[ 0 , r ] then Text2[ i ] := StringGrid1.Cells[ 3, r ]; end; mOriginal.text := Text2; Spalte eins enthält die Buchstaben von A - Z Spalte zweit enthält das Vorkommen in Prozent (Wie oft taucht Buchstabe A...Z in dem Memo Feld auf) Spalte 3 enthält die Buchstaben von A-Z, jedoch geordnet nach Häufigkeit in der deutschen Sprache (Spalte 4 schließlich die Häufigkeit in der D-Sprache in Prozent) Spalte 1+2 ordnen sich automatisch nach der Häufigkeit, Häufigster Buchstabe im Text: Ganz oben Jetzt will ich den Häufigsten Buchstaben im Text mit dem Häufigsten der Deutschen Sprache ersetzen, den zweit Häufigsten mit dem ... usw. Pascall PS: An dem Problem beiße ich mir schon seit Tagen die Zähne aus |
Re: Buchstaben in Text suchen & ersetzen
ok, dann machen wir das ganze nochmal etwas dynamischer :mrgreen:
try this:
Delphi-Quellcode:
Text2 := mOriginal.Text;
for i := 1 to Length( Text2 ) do // alle Positionen des Textes durchlaufen for r := 0 to StringGrid1.RowCount - 1 do // mit allen Zeilen des StringGrids vergleichen if mOriginal.Text[ i ] = StringGrid1.Cells[ 0 , r ][ 1 ] then Text2[ i ] := StringGrid1.Cells[ 3, r ][ 1 ]; mOriginal.text := Text2; |
Re: Buchstaben in Text suchen & ersetzen
Hey
Danke, jetzt klappt es, verstanden habe ich es aber noch nicht ganz.
Delphi-Quellcode:
Vielen Dank für die Lösung meines Problems, ich hoffe du kannst mir noch meine Fragen beantworten
Text2 := mOriginal.Text;
for i := 1 to Length( Text2 ) do // alle Positionen des Textes durchlaufen [b]Ist logisch, man geht alle Zeichen des Text2 von 1 - letzten Buchstaben durch[/b] for r := 0 to StringGrid1.RowCount - 1 do // mit allen Zeilen des StringGrids vergleichen [b]r ist eine Variable, die wird 0 gesetzt und man geht alles durch von 0 (Erste Zeile vom Stringgrid?) bis RowCount -1 (Bis ganz unten, aber warum - 1?)[/b] if mOriginal.Text[ i ] = StringGrid1.Cells[ 0 , r ][ 1 ] then [b]Hier ist am Anfang i = 1, da erster Buchstabe und man geht die Spalten durch von oben nach unten, daher [0,r] (0 Spalte) aber was bedeutet die [1] ?[/b] Text2[ i ] := StringGrid1.Cells[ 3, r ][ 1 ]; [b]Hier wird der Buchstabe durch den neuen ersetzt und dann unten der neue durch den alten Text ersetzt[/b] mOriginal.Text := Text2; Pascall |
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:36 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