![]() |
StringReplace: Fehlender Parameter?
Hi erneut!
Ich wollte in meiner Unwissenheit die Funktion StringReplace einsetzen, um die durch die Funktion STR verursachten Leerzeichen am Anfang eines Strings zu entfernen. Bei PHO gibt es ja schöne Funktionen wie TRIM, aber bei meinem Delphi 7 gibt es dies offenbar leider nicht. Hier erstmal der gegenwärtige Code:
Code:
ValueFrom, ValueTo und Rounded sind vom Typ REAL.
Rounded:=StrToFloat(EditFrom.Text)*(ValueFrom/ValueTo);
Str(Rounded:1000:Floater,Results); Calculate:=StringReplace(Results,' ',''); Results und Calculate sind vom Type String. Floater ist vom Typ Integer. Ich verwende STR, um durch den Benutzer entscheiden zu lassen, wieviele Stellen hinter dem Komma angezeigt werden sollen (Floater). Jedoch scheint es keine Möglichkeit zu geben, den Parameter für die Stellen vor dem Komma nicht zu gebrauchen und nur den Parameter für die Nachkommastellen, oder? Ich würde sehr gerne die Stellen vor dem Komma so viele sein lassen, wie die Zahl eben benötigt. Da ich dies anscheinend nicht kann, habe ich die Vorkommastellen großzügig mit 1000 gesetzt. Das verursacht aber leider viele Leerzeichen, wenn die Zahl halt nicht so viele Stellen hat. Deswegen muß ich dann auch StringReplace einsetzen, um die ganzen Leerzeichen wieder zu entfernen. Aber es wird ein weiterer Parameter erwartet, hier ist die entsprechende Fehlermeldung: Zitat:
- Wie komplettiere ich den Aufruf der Funktion StringReplace? - Kann ich bei STR die Nachkommastellen setzen, doch die Vorkommastelen nur so viele seinlassen wie benötigt werden von der Zahl? Wie? |
AW: StringReplace: Fehlender Parameter?
Lösung selbst gefunden:
",[rfReplaceAll]" als letzten Parameter benutzen, ist nicht optional sondern MUSS benutzt werden. Aber meine Frage in Bezug auf STR bleibt. |
AW: StringReplace: Fehlender Parameter?
Hallo Sven,
bei der Ur-Pascal-Prozedur Str() gibst Du mit Width die minimale Anzahl an Zeichen im Ergebnis an. Leerstellen werden zum Auffüllen verwendet, aber eine Verkürzung findet nicht statt. Width = 0 erfüllt also deine Anforderung perfekt. Grüße vom marabu |
AW: StringReplace: Fehlender Parameter?
Man könnte natürlich statt dem uralten
![]() ![]() Dort kann man die entsprechenden Werte der Formatparameter durch ein * ersetzen und dieses dann als Parameter mit übergeben.
Delphi-Quellcode:
Results := Format('%.*n', [Floater, StrToFloat(EditFrom.Text) * (ValueFrom / ValueTo)]);
/////////////////////////////////////////////////////// Rounded := StrToFloat(EditFrom.Text) * (ValueFrom / ValueTo); Results := Format('%.*n', [Floater, Rounded]); Rounded := StrToFloat(EditFrom.Text) * (ValueFrom / ValueTo); Str(Rounded::Floater, Results); /////////////////////////////////////////////////////// Rounded := StrToFloat(EditFrom.Text) * (ValueFrom / ValueTo); Results := Format('%*.*n', [0, Floater, Rounded]); Rounded := StrToFloat(EditFrom.Text) * (ValueFrom / ValueTo); Str(Rounded:0:Floater, Results); |
AW: StringReplace: Fehlender Parameter?
|
AW: StringReplace: Fehlender Parameter?
Vielen Dank an alle! Ein guter Teamgeist hier im Forum.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:16 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