![]() |
Delphi-Version: 5
Ein bestimmtes Zeichen aus einem String löschen
Hallo,
Ich bin was Delphi betrifft ein Anfänger und habe ein Problem, was ich einfach nicht gelöst bekomme: Es soll ein bestimmtest Zeichen das in einem Editfeld angegeben wird, aus einem String gelöscht werden, den man in einem anderen edit fenster eingibt, per Button soll dieses dann ablaufen. procedure Tedlaenge.btloeschezeichenClick(Sender: TObject); var a,b: Integer; begin a:= Length(edzeichenkette.text); for b:= 1 to a do begin if edzeichenkette.text[b]=edzeichen.text then edzeichenkette.text[b]:=''; end; das ist mein Lösungsansatz der aber leider nicht funktioniert! edzeichenkette.text soll der String sein, edzeichen.text soll das Zeichen sein, welches aus dem String gelöscht werden soll! Vielen dank schonmal:) MfG Rabbid |
AW: Ein bestimmtes Zeichen aus einem String löschen
|
AW: Ein bestimmtes Zeichen aus einem String löschen
Delphi-Quellcode:
.
edzeichenkette.text[b] := '';
Damit kann man ein Zeichen durch ein Anderes ersetzen, aber nicht löschen.
Delphi-Quellcode:
.
for b:= 1 to a do
Und Löschschleifen sollten besser rückwärts laufen oder man muß den Index anpassen. Denn beim Löschen/Einfügen verschieben sich nachfolgende Indize. Aber im Allgemeinen bin ich, bei diesem Thema, Sherlocks Meinung. |
AW: Ein bestimmtes Zeichen aus einem String löschen
Ich versteh den Befehl von Sherlock aber nicht, wie genau muss ich dieses StringReplace anwenden?:(
|
AW: Ein bestimmtes Zeichen aus einem String löschen
Na, schau Dir mal die Parameter von dem Ding an:
Delphi-Quellcode:
Erster Parameter ist ein String - das ist der, den Du nach einem Zeichen durchsuchen willst.
function StringReplace(const S: string; const OldPattern: string; const NewPattern: string; Flags: TReplaceFlags): string; overload;
Zweiter Parameter ist auch ein String - da kannst Du das zu suchende Zeichen, ja sogar eine Zeichenfolge reinstellen. Dritter Parameter ist schon wieder ein String - da kommt rein, wodurch Du das gefundene ersetzen möchtest. Vierter Parameter ist eine Art Schalter - Du legst darin fest, ob nur einmal ersetzt werden soll oder jedes Vorkommen, des Strings. Auch kannst Du da einstellen, ob die Groß-Kleinschreibung beachtet werden soll. Ergebnis der Funktion schließlich ist der bearbeitete String. Nun, damit müsstest du jetzt wirklich zum Ziel kommen, oder? Sherlock |
AW: Ein bestimmtes Zeichen aus einem String löschen
Zitat:
Delphi-Quellcode:
edzeichenkette.text := StringReplace(edzeichenkette.text, edzeichen.text , '', [rfReplaceAll]);
|
AW: Ein bestimmtes Zeichen aus einem String löschen
Ein Wort der Warnung sei aber noch erlaubt:
Dies ist mit Sicherheit nicht die erwartete Lösung! Offenkundig geht es hier ja um eine Aufgabe, in der man lernen soll, wie mit Strings umzugehen ist. Insofern schau dir lieber nochmal an, was Himitsu geschrieben hat. Oder versuch es etwas anders: Nimm die Zeichen für Zeichen Dein edZeichenkette.Text vor (das hast Du mit der Schleife ja schon getan). Untersuche jedes Zeichen, ob es Deinem edZeichen.Text entspricht. Wenn nicht, dann kopiere das Zeichen in einen neuen temporären String. Wenn ja, dann kopiere nichts. Am Ende überschreibst Du Dein edZeichenkette.Text mit dem temporären String und fertig. Das dürfte der erwarteten Lösung weitestgehend entsprechen. Sherlock |
AW: Ein bestimmtes Zeichen aus einem String löschen
Hallo,
es geht auch über 1. Pos, Delete. 2. Pos, Copy Heiko |
AW: Ein bestimmtes Zeichen aus einem String löschen
Vielen Dank euch allen,
dank Deiner Erklärung Sherlock, hab ich das mitm StrinReplace hinbekommen sodass es jetzt so wie bei gmc616 beschrieben, aussieht. Das mit mit Pos,Delete und dann Pos,Copy hab ich schon mal versucht das hat aber nicht geklappt(weil ichs falsch gemacht hab). Die Lösung mit der Schleife schaff ich nicht, ich weiss nicht wie man das einzelne Zeichen was gerade überprüft wird betitelt um es dann in einen neuen String zu speichern.... |
AW: Ein bestimmtes Zeichen aus einem String löschen
Du schaust Dir doch schon in Deinem ersten Beitrag ein einzelnes Zeichen in der Zeichenkette an (die eckigen Klammern helfen dabei ungemein).
Zur Erinnerung:
Delphi-Quellcode:
Übertrag das doch mal auf meinen in Prosa gehaltenen Lösungsweg. Versuch doch mal die beiden Zeilen oben so umzuformulieren, daß sie meinem Vorschlag entsprechen. Dann bist du ja fast schon fertig.
if edzeichenkette.text[b] = edzeichen.text then
edzeichenkette.text[b]:=''; Wie gesagt: StringReplace dürfte als Lösung nicht akzeptiert werden... Sherlock |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:01 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