Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - Steuerzeichen in einem String löschen?


drohne200 - So 25.04.04 01:20
Titel: Steuerzeichen in einem String löschen?
Servus,

wie kann ich die Steuerzeichen CR, LF oder Tab (#$D, #$A oder #9) innerhalb eines Strings entfernen :?:

Zum Beispiel "Hallo#$D#$Adas#9#9ist#$D#$ATest" danach sollte nur noch "DasisteinTest" im String stehe.

Ich habe schon das Forum durchsucht aber leider nix passendes gefunden.

Wäre Super wenn mir jemand helfen könnte!! :D

Danke


Delete - So 25.04.04 08:43

Ist das so was wie hier [http://www.delphipraxis.net/topic23850_problem+mit+string+und+a+am+ende.html]?
Dann solltest du, um Verwirrungen auszuschließen, vielleicht mal erklären, ob du tatsächlich Steuerzeichen wie einen Zeilenumbruch (#13#10) oder einfach nur aufeinander folgende Zeichen (CHARs) in einem String meinst. Es macht nämlich einen Unterschied ob du

Delphi-Quelltext
1:
'Hallo'#$d#$a'das'#9#9'ist'#$d#$a'Test'                    

oder

Delphi-Quelltext
1:
'Hallo#$d#$adas#9#9ist#$d#$aTest'                    

schreibst. Und dieser Unterschied muss natürlich beachtet werden, wenn du versuchst, die unerwünschten Zeichen zu entfernen.


bms - So 25.04.04 10:55

Schon mal was von StringReplace gehört? Einfach die SteuerZeichen suchen und durch ein Leerzeichen ersetzten.


drohne200 - So 25.04.04 13:44

Also ich meine


Quelltext
1:
'Hallo'#$d#$a'das'#9#9'ist'#$d#$a'Test'                    


Mit StringReplace funktionierts nicht da er die Steuerzeichen nicht beachtet.

Trim funktioniert irgendwie auch nicht was wohl daran liegt das meine Steuerzeichen nicht am Anfang oder Ende liegen sondern in der Mitte!

Im Moment komme ich keinen Schritt weiter ....


drohne200 - So 25.04.04 15:37

So habs gelöst :D :D :D :autsch:

Danke an alle die mir helfen wollten aber die Lösung dafür ist 'relativ' einfach :roll:

Delphi-Syntax:

Delphi-Quelltext
1:
procedure Delete(var S: string; Index, Count:Integer);                    

Beschreibung

In Delphi entfernt Delete, beginnend mit S[Index], Count Zeichen aus dem String S. S ist eine String-Variable. Index und Count sind Integer-Ausdrücke.

Wenn index größer als die Länge von String oder kleiner als 1 ist, werden keine Zeichen gelöscht.

Werden mit Count mehr Zeichen angegeben, als beginnend bei Index im String vorhanden sind, wird der Rest des Strings gelöscht. Wenn Count kleiner oder gleich 0 ist, werden keine Zeichen gelöscht.

Praktisch sieht das dann wie folgt aus :


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
procedure TForm1.Button1Click(Sender: TObject);
var
textversuch : string;
begin
  textversuch := 'Das ist'+#$D#$A#9+' ein Test';
  while (Pos(#$D#$A#9,textversuch) > 0do
  begin
    Delete(textversuch, pos(#$D#$A#9,textversuch), 3);
  end;
  ShowMessage(textversuch);
end;


Hinweis :!: :!: :!:
#$D oder #$A oder #9 sind jeweils als ein Zeichen zu betrachten!!

Danke an alle

:rofl:


Delete - So 25.04.04 16:22

Das hättest du aber mit StringReplace einfacher haben können.


UGrohne - Sa 07.08.04 13:28

Hatte eben dasselbe Problem...
MathiasSimmack hat folgendes geschrieben:
Das hättest du aber mit StringReplace einfacher haben können.

Nein, StringReplace beachtet, wie oben schon angemerkt, die Steuerzeichen nicht, daher ist der vorgeschlagene Weg der einzige mir bisher als funktionierend bekannte Weg.


en!gma - Di 31.05.05 19:22

hab grad nach sowas gesucht und bin auf das hier gestossen...

ist zwar schon alt der thread, aber es geht auch so :D
falls das nochmal jemand braucht:


Delphi-Quelltext
1:
a:=StringReplace(a,char(#9),'',[rfReplaceAll, rfIgnoreCase]);                    


das entfernt zB alle tabs...