![]() |
Leerzeichen aus string löschen
Hallo!
Ich habe einen String a mit mehreren Leerzeichen am Anfang. Diese möchte ich komplett löschen. ICh dachte das kann man so machen:
Delphi-Quellcode:
aber ich bekomme immer eine fehlermeldung und die letzte zeile wird markiert.
repeat
delete(a,0,1); until a[1]<>' '; Wo ist der Fehler? |
Re: Leerzeichen aus string löschen
Guck mal in der Hiulfe unter [oh]trim(left/right)[/oh].
|
Re: Leerzeichen aus string löschen
Danke!
|
Re: Leerzeichen aus string löschen
Merkwürdig,
in der Hiulfe habe ich nichts gefunden und ein Fehler zeigt er mir auch nicht, er hängt sich nur auf... * er = mein PC |
Re: Leerzeichen aus string löschen
Also am Code würde ich mal folgendes ändern:
Delphi-Quellcode:
while a[1]=' ' do delete(a,0,1);
[edit=SirThornberry]Delphitags berichtigt. Mfg, SirThornberry[/edit] |
Re: Leerzeichen aus string löschen
Trim entfernt Leerzeichen am Anfang und am /ende eines Strings. Soll nur am Anfang oder nur am Ende entfernt werden verwendet man die Funktioenne TrimLeft bzw. TrimRight
Zitat:
|
Re: Leerzeichen aus string löschen
Trim ist die beste Lösung, aber so sollte auch die Andere funktionieren:
Delphi-Quellcode:
Florian
repeat
Delete(a, 1, 1); until Copy(a, 1, 1) <> ' '; |
Re: Leerzeichen aus string löschen
trim würde ich aus performancegründen vorziehen.
|
Re: Leerzeichen aus string löschen
Das mit a[1] dürfte eleganter sein als copy. Und das repeat würde ich durch ein while ersetzen.
Denn mal angenommen, am Anfang des Strings befindet sich kein Leerzeichen, dann würde trotzdem das erste Zeichen gelöscht werden. Besser noch: Folgender String: 'a b' Bei deinem Code würde nur 'b' übrig bleiben. |
Re: Leerzeichen aus string löschen
ich würde mit einer For-Schleife von Anfang bis ende durchgehen und eine zweite zählvariable mitführen die bestimmt wohin geschrieben wird. Kommt ein Leerzeichen so wird diese nicht weitergerückt. Da aber Trim wohl nix anderes macht erspaare ich mir mal den Quelltext zz posten.
|
Re: Leerzeichen aus string löschen
Zitat:
Zitat:
|
Re: Leerzeichen aus string löschen
Es ging nur um die allgemeine Verwendbarkeit. :mrgreen:
|
Re: Leerzeichen aus string löschen
Zitat:
|
Re: Leerzeichen aus string löschen
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:
|
Re: Leerzeichen aus string löschen
Dein Fehler kam wahrscheinlich weil du nen Leerstring hattest und dann kann der nicht mehr auf das 1 Element zugreifen.
Delphi-Quellcode:
das stürtzt dann nicht ab. wobei dein Trim Befehl schneller sein dürfte.
While Pos(' ',a) =1 do
delete(a,1,1) |
Re: Leerzeichen aus string löschen
Zitat:
Zitat:
Außerdem wird das erste Zeichen immer gelöscht, selbst wenn es kein Leerzeichen ist :warn: also erst Prüfen was für ein Zeichen und dann löschen
Delphi-Quellcode:
Da ja explizit auf das Erste Zeichen zugegriffen wird, sollte auch noch eine Abfrage drin sein, welche nachsieht, ob überhaupt ein Zeichen im string ist...
While a[1] = ' ' do
delete(a,1,1);
Delphi-Quellcode:
Wärend TrimLeft das in etwa so macht, also erstmal nachsehn wieviel Leerzeichen drin sind und erst dann diese löschen, somit wird nur einmal gelöscht, also der zeitaufwendigere Prozess einer Stringmanipulation so wenig wie möglich ausgeführt.
while (a <> '') and (a[1] = ' ') do
delete(a,1,1);
Delphi-Quellcode:
if a <> '' then begin
i := 1 while a[i] = ' ' do inc(i); delete(a, 1, i - 1); end; |
Re: Leerzeichen aus string löschen
wie wärs wenn du einfach StringReplace benutzenwürdest.
Delphi-Quellcode:
[edit] sorry ich hab vergessen alles zu lesen. du willst ja nur die lerzeichen am anfang entfernen. [/edit]
stringvar:= StringReplace(stringvar, ' ', '',[rfReplaceAll]);
|
Re: Leerzeichen aus string löschen
@himitsu
Zitat:
|
Re: Leerzeichen aus string löschen
Zitat:
Also in meinem D4 hab ich noch keine Exception bei sowas bekommen :stupid: |
Re: Leerzeichen aus string löschen
Der Compiler richtet sich nach der Einstellung für die Boolesche Kurzauswertung. {$B-} oder {$BOOLEVAL OFF} veranlasst ihn die Auswertung von Ausdrücken vorzeitig abzubrechen, wenn das Ergebnis bereits feststeht.
Grüße vom marabu |
Re: Leerzeichen aus string löschen
Da Frage ich mich warum diese Einstellung nicht standartmäsig in meinem Compiler Aktiviert ist.
Gibts da ne Hilfe die die ganzen Einstellungen alle auflistet ? |
Re: Leerzeichen aus string löschen
Ja, die OH :zwinker:
Such mal alles was mit $ beginnt und dann könnte sich ein Blick in die Projektoptionen auch lohnen ^_^ PS: wenn ich mich nicht irre, dann ist das doch standardmäßig deaktiviert? Also so, daß nich alles ausgewärtet wird, sobald das ergebnis feststeht :gruebel: |
Re: Leerzeichen aus string löschen
@himitsu: Wenn Du es ganz genau nimmst, dann verwende 'Copy'. Denn offiziell sind Strings nicht indizierbar. :gruebel: Sagt Borland. :gruebel: Jahaa! :wall:
Egal, wir machen das so seit 1856 und dann ist es mir schnurz. Wenn Du Copy verwendest, dann klappt es immer. Nur viel langsamer. Insofern ist mein Einwand nur theoretischer Natur.
Delphi-Quellcode:
Var
s: String; Begin s:=''; Showmessage ('So siehts hinter dem String aus'+Copy(s,1,1)); End; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:58 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