![]() |
Ein Zeichen durch eine Leerstelle ersetzen
Hallo,
wir arbeiten in Info im Moment mit Delphi und unsere Aufgabe ist es, ein vom Benutzer eingegebenes Wort zu prüfen und zwar mit Hilfe eines zweiten Eingabefeldes, wo der Benutzer einen Buchstaben eingeben soll, der in dem Wort vorkommt. Nach einem Druck auf einen Button soll der eingegebene Buchstabe durch ein Leerzeichen ersetzt und in einem dritten Eingabefeld das Wort OHNE den Buchstaben - also mit der Leerzeile an der/den ansprechenden Stelle/Stellen - ausgegeben werden. Wir haben im Unterricht dieses Programm schon auf eine etwas andere Art verwendet, sodass nur ein Stück im Quellcode verändert werden muss (die Funktion dieses Programmes ersetzt den Buchstaben nicht durch ein Leerzeichen, sondern zählt, wie oft der eingegebene Buchstabe in dem eingegebenen Wort vorkommt und gibt die Anzahl des Vorkommens in einem dritten Eingabefeld aus - es wird also einfach der Buchstabe ersetzt). Hier ist der Quellcode:
Delphi-Quellcode:
Ich bräuchte das am besten heute Abend noch, sitze da schon ca. zwei Stunden dran, aber bin zu blöd (bin kein Info-Ass). Ich glaube, das es nicht sehr viel Arbeit ist und hoffe, hier ist jemand bereit, mir zu helfen. Danke schonmal im Voraus!
procedure TFrmString.Einlesen(Var Text: String; Var Zeichen: Char);
begin Text := EdText.Text; Zeichen := EdZeichen.Text[1]; end; procedure TFrmString.Ausgeben(Ergebnis: String); begin EdErgebnis.Text := Ergebnis; end; {*************** selbstdefinierte Methoden ohne Klassenzugehörigkeit *********} function gezaehlt(Text: String; Zeichen: Char): Shortint; // diese Funktion muss verändert werden, weiß aber nicht wie :( Var Index: Shortint; Anzahl: Shortint; begin Anzahl := 0; // Initialisierung der Zeichenanzahl For Index := 1 TO Length(Text) Do If Text[Index] = Zeichen Then Anzahl := Anzahl + 1; gezaehlt := Anzahl; // Zuweisung an die Funktion erforderlich end; procedure TFrmString.BtZaehlenClick(Sender: TObject); Var Text: String; Zeichen: Char; Anzahl: Shortint; begin Einlesen(Text, Zeichen); Anzahl := gezaehlt(Text, Zeichen); Ausgeben('Anzahl von '+ Zeichen + ' : ' + IntToStr(Anzahl)); // hier sollte dann das Wort OHNE den Buchstaben stehen end; procedure TFrmString.BtBeendenClick(Sender: TObject); begin FrmString.Close end; procedure TFrmString.BtLoeschenClick(Sender: TObject); begin EdText.Text := ''; EdZeichen.Text := ''; EdErgebnis.Text := ''; end; |
Re: Ein Zeichen durch eine Leerstelle ersetzen
Schau dir mal
StringReplace(...) an |
Re: Ein Zeichen durch eine Leerstelle ersetzen
Danke für deine schnelle Antwort, aber das hilft MIR leider auch nicht weiter, wie gesagt, bin ziemlich schlecht in Info. Habe über die Hilfe rausgefunden, das die Funktion so aufgerufen wird:
Delphi-Quellcode:
Wie kann ich diese denn so umändern, das der eingegebene Buchstabe aus dem Feld "BtZeichen" durch eine Leerstelle ersetzt wird?
function StringReplace(const S, OldPattern, NewPattern: string; Flags: TReplaceFlags): string;
|
Re: Ein Zeichen durch eine Leerstelle ersetzen
Zitat:
Zitat:
Borland hat nämlich dazu geschrieben 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, daß der String Multibyte-Zeichen enthalten kann. Wenn im Parameter Flags nicht rfReplaceAll enthalten ist, wird nur das erste Vorkommen von OldPattern im String S ersetzt. Andernfalls werden alle Instanzen von OldPattern durch NewPattern ersetzt. Wenn der Parameter Flags rfIgnoreCase enthält, wird die Groß-/Kleinschreibung nicht berücksichtigt. |
Re: Ein Zeichen durch eine Leerstelle ersetzen
[OT] Das wird der Frau Moritz aber gar nicht gefallen, wenn du einen unbekannten Aufruf benutzt :thuimb: [OT]
Also ich geb dir den Tipp, dass du einfach noch ne neue String Variable nimmst, die du am anfang immer auf '' (also leer) setzt. Nun fügst du diesem text , falls "Text[Index] = Zeichen" ist, ein leerzeichen hinzu, anderenfalls einfach "Text[Index]". @ Alle die sich darüber wundern: unsere Lehrerin hat nen Knall und keine Ahnung von der Materie :wall: :wall: :wall: €dit: @MathiasSimmack: So besser. Du hast aber ansprüche. :zwinker:
Delphi-Quellcode:
{***** zeichen durch leerzeichen ersetzen *****}
function aendern(Text: String; Zeichen: Char): String; Var Index: Shortint; text_neu:string; begin text_neu:=''; For Index := 1 TO Length(Text) Do If Text[Index] = Zeichen Then text_neu:=text_neu+' ' else text_neu:=text_neu+text[index]; result:=text_neu; end; //Der Aufruf procedure TFrmString.b_ersetzen1Click(Sender: TObject); Var Text: String; Zeichen,ersatzzeichen: Char; begin Einlesen(Text, Zeichen,ersatzzeichen); Ausgeben(aendern(Text, Zeichen)); end; |
Re: Ein Zeichen durch eine Leerstelle ersetzen
Zitat:
Zitat:
|
Re: Ein Zeichen durch eine Leerstelle ersetzen
Ah, bist also auch hier angemeldet... Gut zu wissen :) Ich tue morgen einfach so, als hätte ich keine andere Lösung gefunden, denn so ist es ja viel einfacher:
Delphi-Quellcode:
Trotzdem danke, ich kopier's mir mal in ein neues Programm zur Sicherheit :p
procedure TFrmString.BtErsetzenClick(Sender: TObject);
begin EdErgebnis.Text := StringReplace(EdText.Text,EdZeichen.Text,' ',[rfReplaceAll, rfIgnoreCase]); end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00: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