AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Ein bestimmtes Zeichen aus einem String löschen
Thema durchsuchen
Ansicht
Themen-Optionen

Ein bestimmtes Zeichen aus einem String löschen

Offene Frage von "Sherlock"
Ein Thema von Rabbid · begonnen am 19. Okt 2010 · letzter Beitrag vom 19. Okt 2010
Antwort Antwort
Seite 1 von 2  1 2      
Rabbid

Registriert seit: 19. Okt 2010
9 Beiträge
 
#1

Ein bestimmtes Zeichen aus einem String löschen

  Alt 19. Okt 2010, 12:38
Delphi-Version: 5
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
  Mit Zitat antworten Zitat
Benutzerbild von Sherlock
Sherlock

Registriert seit: 10. Jan 2006
Ort: Offenbach
3.763 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Ein bestimmtes Zeichen aus einem String löschen

  Alt 19. Okt 2010, 12:40
Schau Dir mal die Funktion Delphi-Referenz durchsuchenStringReplace an.

Sherlock
Oliver
Geändert von Sherlock (Morgen um 16:78 Uhr) Grund: Weil ich es kann
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.149 Beiträge
 
Delphi 12 Athens
 
#3

AW: Ein bestimmtes Zeichen aus einem String löschen

  Alt 19. Okt 2010, 13:28
edzeichenkette.text[b] := ''; .
Damit kann man ein Zeichen durch ein Anderes ersetzen, aber nicht löschen.

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.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Rabbid

Registriert seit: 19. Okt 2010
9 Beiträge
 
#4

AW: Ein bestimmtes Zeichen aus einem String löschen

  Alt 19. Okt 2010, 14:37
Ich versteh den Befehl von Sherlock aber nicht, wie genau muss ich dieses StringReplace anwenden?
  Mit Zitat antworten Zitat
Benutzerbild von Sherlock
Sherlock

Registriert seit: 10. Jan 2006
Ort: Offenbach
3.763 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: Ein bestimmtes Zeichen aus einem String löschen

  Alt 19. Okt 2010, 14:46
Na, schau Dir mal die Parameter von dem Ding an:
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
Oliver
Geändert von Sherlock (Morgen um 16:78 Uhr) Grund: Weil ich es kann
  Mit Zitat antworten Zitat
gmc616

Registriert seit: 25. Jun 2004
Ort: Jena
627 Beiträge
 
Delphi 10.3 Rio
 
#6

AW: Ein bestimmtes Zeichen aus einem String löschen

  Alt 19. Okt 2010, 14:47
Ich versteh den Befehl von Sherlock aber nicht, wie genau muss ich dieses StringReplace anwenden?
Warum schaust du nicht in die Hilfe?

  edzeichenkette.text := StringReplace(edzeichenkette.text, edzeichen.text , '', [rfReplaceAll]);
  Mit Zitat antworten Zitat
Benutzerbild von Sherlock
Sherlock

Registriert seit: 10. Jan 2006
Ort: Offenbach
3.763 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: Ein bestimmtes Zeichen aus einem String löschen

  Alt 19. Okt 2010, 14:54
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
Oliver
Geändert von Sherlock (Morgen um 16:78 Uhr) Grund: Weil ich es kann
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#8

AW: Ein bestimmtes Zeichen aus einem String löschen

  Alt 19. Okt 2010, 14:56
Hallo,

es geht auch über
1.
Pos, Delete.

2.
Pos, Copy


Heiko
Heiko
  Mit Zitat antworten Zitat
Rabbid

Registriert seit: 19. Okt 2010
9 Beiträge
 
#9

AW: Ein bestimmtes Zeichen aus einem String löschen

  Alt 19. Okt 2010, 15:11
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....
  Mit Zitat antworten Zitat
Benutzerbild von Sherlock
Sherlock

Registriert seit: 10. Jan 2006
Ort: Offenbach
3.763 Beiträge
 
Delphi 11 Alexandria
 
#10

AW: Ein bestimmtes Zeichen aus einem String löschen

  Alt 19. Okt 2010, 15:15
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
Oliver
Geändert von Sherlock (Morgen um 16:78 Uhr) Grund: Weil ich es kann

Geändert von Sherlock (19. Okt 2010 um 15:18 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:13 Uhr.
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