AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

StringReplace: Fehlender Parameter?

Ein Thema von SvenLittkowski · begonnen am 17. Jan 2011 · letzter Beitrag vom 19. Jan 2011
Antwort Antwort
SvenLittkowski

Registriert seit: 18. Dez 2004
98 Beiträge
 
#1

StringReplace: Fehlender Parameter?

  Alt 17. Jan 2011, 00:24
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:
 Rounded:=StrToFloat(EditFrom.Text)*(ValueFrom/ValueTo);
 Str(Rounded:1000:Floater,Results);
 Calculate:=StringReplace(Results,' ','');
ValueFrom, ValueTo und Rounded sind vom Typ REAL.
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 von Delphi 7:
Not enough actual parameters
Fragen:
- 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?

Geändert von SvenLittkowski (17. Jan 2011 um 00:29 Uhr)
  Mit Zitat antworten Zitat
SvenLittkowski

Registriert seit: 18. Dez 2004
98 Beiträge
 
#2

AW: StringReplace: Fehlender Parameter?

  Alt 17. Jan 2011, 00:32
Lösung selbst gefunden:

",[rfReplaceAll]" als letzten Parameter benutzen, ist nicht optional sondern MUSS benutzt werden. Aber meine Frage in Bezug auf STR bleibt.
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#3

AW: StringReplace: Fehlender Parameter?

  Alt 17. Jan 2011, 05:43
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
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: StringReplace: Fehlender Parameter?

  Alt 17. Jan 2011, 07:38
Man könnte natürlich statt dem uralten Delphi-Referenz durchsuchenStr auch einfach das neuere Delphi-Referenz durchsuchenFormat nutzen.
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);
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (17. Jan 2011 um 07:42 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Sherlock
Sherlock

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

AW: StringReplace: Fehlender Parameter?

  Alt 17. Jan 2011, 08:30
Davon abgesehen gibt es Delphi-Referenz durchsuchentrim auch schon in Delphi 7. Man muss halt die SysUtils einbinden.

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

Registriert seit: 18. Dez 2004
98 Beiträge
 
#6

AW: StringReplace: Fehlender Parameter?

  Alt 19. Jan 2011, 06:19
Vielen Dank an alle! Ein guter Teamgeist hier im Forum.
  Mit Zitat antworten Zitat
Antwort Antwort


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 13:35 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