![]() |
FloatToStrF ??
Hi,
wieso liefert das hier :
Delphi-Quellcode:
folgende Ausgabe:
ListBox1.Lines.Add ('Var 1 : '+FloatToStrF (1,ffFixed,8,2));
ListBox1.Lines.Add ('Var 2 : '+FloatToStrF (12,ffFixed,8,2)); ListBox1.Lines.Add ('Var 3 : '+FloatToStrF (123,ffFixed,8,2)); 1.00 12.00 123.00 :?: Bzw. was ist zu tun, damit die Zahlen rechtsbündig werden ? |
Re: FloatToStrF ??
Hai Hansa,
IMHO füllt FloatToStrF den String links nicht mit ' ' auf. Mit einer kleinen Funktion sollte es aber möglich sei das selber zu machen. Hier mal etwas auf die Schnell:
Delphi-Quellcode:
function StrRight (Const str : string; size : Integer) : String;
var foo : String; ndx : Integer; apos : Integer; begin if (Length (str) > size) then begin result := 'Fehler'; Exit; end; apos := size; for ndx := 1 to size do // tmp-String füllen begin foo := foo + ' '; end; for ndx := Length(str) downto 1 do begin foo[apos] := str[ndx]; Dec (apos); end; result := foo; end; procedure TForm1.Button1Click(Sender: TObject); begin Memo1.Lines.Add(StrRight (Edit1.text,10)); end; |
Re: FloatToStrF ??
Zitat:
Du könntest einfach die anderen Stellen mit Leerzeichen auffüllen. Was anderes fällt mir jetzt nicht ein... Edit: Mist zu spät... |
Re: FloatToStrF ??
:wall:
Warum mache ich das eigentlich so kompliziert?
Delphi-Quellcode:
function StrRight2 (Const str : string; size : Integer) : String;
var foo : String; ndx : Integer; begin if (Length (str) > size) then begin result := 'Fehler'; Exit; end; for ndx := 1 to size - Length(str) do begin foo := foo + ' '; end; result := foo + str; end; |
Re: FloatToStrF ??
Zitat:
Ihr meint also, es gibt in Delphi nicht mal Ersatz für folgendes :
Delphi-Quellcode:
Nun denn, dann nehme ich vorerst eben meine eigenen Funktionen. Falls die noch jemand braucht :
writeln (r:8:2);
Delphi-Quellcode:
function blanks (anzahl : byte) : string;
var i : integer; b : string; begin b := ''; for i := 1 to anzahl do b := b + ' '; blanks := b; end; function rb (st : string;feldweite : byte) : string; begin st := Trim (st); // eventuelle Blanks am "Rand" weglöschen rb := blanks (feldweite - length (st)) + st; end; function lb (st : string;feldweite : byte) : string; begin st := Trim (st); // eventuelle Blanks am "Rand" weglöschen lb := st + blanks (feldweite - length (st)); end; |
Re: FloatToStrF ??
Dann versuch mal die Zahlen: 111,11 und 88,88 rechtsbündig darzustellen, wenn du eine Schriftart mit nicht gleich breiten Zeichen benutzt. Eventual sollte man sich mal die Funktion
![]() |
Re: FloatToStrF ??
Der Einwand mit nicht proportionalen Schriftarten ist durchaus berechtigt. Ich habe das aber dadurch geregelt, daß eben z.B. Courier benutzt wird. In anderen Fällen (z.B. Stringgrid) verwende ich OnDrawCell.
Nun interessiert mich allerdings doch, wie man z.B. folgendes in einer Listbox oder einem Memo anzeigen kann mit nicht proportionalen Schriften:
Code:
Unter folgender Voraussetzung:
Betrag : 1234,00
Anzahlung : 567,00 -------- Diff. : 667,00 1. wie man sieht links und rechtsbündig. 2. Trennstriche nur rechtsbündig und optisch größer/gleich, als die größte Zahl 3. immer 2 Nachkommastellen 4. muß im selben Stil gedruckt werden können EDIT : Schriftart geändert :mrgreen: |
Re: FloatToStrF ??
Hi Hansa,
evtl. musst du anstatt mit Leerzeichen einen oder mehrere Tabulatorsprünge einfügen. Ob der Text im Memo bündig ausgerichtet wird wie z.B. in Word, weiß ich jetzt nicht. Greetz alcaeus |
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:15 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