Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Ein bestimmtes Zeichen aus einem String löschen (https://www.delphipraxis.net/155337-ein-bestimmtes-zeichen-aus-einem-string-loeschen.html)

Rabbid 19. Okt 2010 12:38

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

Sherlock 19. Okt 2010 12:40

AW: Ein bestimmtes Zeichen aus einem String löschen
 
Schau Dir mal die Funktion Delphi-Referenz durchsuchenStringReplace an.

Sherlock

himitsu 19. Okt 2010 13:28

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.

Rabbid 19. Okt 2010 14:37

AW: Ein bestimmtes Zeichen aus einem String löschen
 
Ich versteh den Befehl von Sherlock aber nicht, wie genau muss ich dieses StringReplace anwenden?:(

Sherlock 19. Okt 2010 14:46

AW: Ein bestimmtes Zeichen aus einem String löschen
 
Na, schau Dir mal die Parameter von dem Ding an:
Delphi-Quellcode:
function StringReplace(const S: string; const OldPattern: string; const NewPattern: string; Flags: TReplaceFlags): string; overload;
Erster Parameter ist ein String - das ist der, den Du nach einem Zeichen durchsuchen willst.
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

gmc616 19. Okt 2010 14:47

AW: Ein bestimmtes Zeichen aus einem String löschen
 
Zitat:

Zitat von Rabbid (Beitrag 1056521)
Ich versteh den Befehl von Sherlock aber nicht, wie genau muss ich dieses StringReplace anwenden?:(

Warum schaust du nicht in die Hilfe?:roll:

Delphi-Quellcode:
  edzeichenkette.text := StringReplace(edzeichenkette.text, edzeichen.text , '', [rfReplaceAll]);

Sherlock 19. Okt 2010 14:54

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

hoika 19. Okt 2010 14:56

AW: Ein bestimmtes Zeichen aus einem String löschen
 
Hallo,

es geht auch über
1.
Pos, Delete.

2.
Pos, Copy


Heiko

Rabbid 19. Okt 2010 15:11

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....

Sherlock 19. Okt 2010 15:15

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:
if edzeichenkette.text[b] = edzeichen.text then
  edzeichenkette.text[b]:='';
Ü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.

Wie gesagt: StringReplace dürfte als Lösung nicht akzeptiert werden...

Sherlock


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:09 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz