Entwickler-Ecke
Grafische Benutzeroberflächen (VCL & FireMonkey) - Alle Leerzeichen Löschen.
Danny W. - Mi 29.11.06 10:49
Titel: Alle Leerzeichen Löschen.
Hallo,
ich habe hier einen String..sagen wir mal:
davon möchte ich jetzt gerne die Leerzeichen entfernen. Zuerst habe ich es mit Pos und Delete gemacht. Allerdings bin ich dann auf die Funktion "Trim" gestoßen...allerdings ersetzt er bei mir nur die ersten und letzten leerstellen (was ja auch laut Delphi Hilfe so sein soll^^)
Gibt es jetzt noch eine alternative um jedes Leerzeichen zu löschen?
liebe Grüße,
Danny
oldmax - Mi 29.11.06 11:06
Hi
Ich könnte mir mehrere Vorgehensweisen vorstellen, die ich dann in eine Function packe.
Z.B.
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8:
| Function TMyForm.Leerweg(Quelle: String):String; Var i : Integer; Ziel : String; Begin Ziel:=''; For i:=1 to Length(Quelle) do if Quelle[i] <>' ' then Ziel:=Ziel+Quelle[i]; Result:=Ziel; end; |
Natürlich geht auch delete und Pos an dieser Stelle, aber du wirst nicht drum herum kommen, irgendwie jedes einzelne Zeichen zu prüfen. Machen übrigends eingebaute Functions nicht anders, vielleicht in einer anderen Sprache, aber auch wenn du direkt mit ASM auf den Speicher zugreifst, musst du Byte für Byte prüfen und das Ergebnis irgendwohin schreiben.
Gruß oldmax
Danny W. - Mi 29.11.06 11:11
das funktioniert super =) vielen dank
iKilledKenny - Mi 29.11.06 11:18
das sollte auch einfacher gehen:
Delphi-Quelltext
1:
| sTxt := StringReplace (sTxt, #32, '', [rfReplaceAll]); |
grüße
alex
Danny W. - Mi 29.11.06 11:21
acuh eine schöne Lösung =)
aber die Idee mit der function war nicht schlecht..so kann ich das auch häufiger verwenden..Danke euch beiden
liebe Grüße,
Danny
jasocul - Mi 29.11.06 11:54
Dann baue aber bitte noch eine Prüfung ein. Falls "Quelle" mal ein Leerstring ist, könnte es sonst zu Problemen kommen.
Danny W. - Mi 29.11.06 12:01
wäre schon sinnvoll, allerdings kann das definitiv nicht vorkommen! Da ich nur die Leerzeichen aus Dateinamen entfernen möchte..diese haben ja noch mindestens eine Endung, sonst werden sie garnicht erst gelesen :)
mfG
jasocul - Mi 29.11.06 12:05
Das kann nur bei Deinem jetzigen Einsatz nicht vorkommen (wirklich nicht?). Wenn Du die Funktion mal woanders benötigst, denkst Du vielleicht nicht mehr daran und verlässt Dich darauf, dass sie einwandfrei funktioniert.
Aber Du musste es natürlich nicht machen... :twisted:
Danny W. - Mi 29.11.06 12:18
Hauptsache ein schlechtes gewissen einreden :P *implementier*
so..jetz habe ich die abfrage mit drinne + auskommentiert usw. ^^
Danke nochmal an alle
Udontknow - Mi 29.11.06 12:37
Hallo!
Wieso soll die Funktion nicht arbeiten, wenn Quelle leer ist? Die For-Schleife wird bei einem leeren String doch gar nicht angegangen...
Cu,
Udontknow
jasocul - Mi 29.11.06 12:59
Hallo Andreas,
habe ich gerade mal geprüft. Du hast Recht.
Aber war das früher nicht mal so, dass eine For-Schleife mindestens einmal durchlaufen wird?
Gruß,
Peter
Pille - Mi 29.11.06 13:23
jasocul hat folgendes geschrieben: |
Aber war das früher nicht mal so, dass eine For-Schleife mindestens einmal durchlaufen wird?
|
Ich denke, nur dann, wenn der 2 Parameter wenigestens so groß ist wie der erste.
wird dann nicht durchlaufen, da die Bedingung schon zuvor erfüllt ist.
mfg Pille
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!