AGB  ·  Datenschutz  ·  Impressum  







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

FloatToStrF ??

Ein Thema von Hansa · begonnen am 2. Okt 2004 · letzter Beitrag vom 2. Okt 2004
Antwort Antwort
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#1

FloatToStrF ??

  Alt 2. Okt 2004, 09:30
Hi,

wieso liefert das hier :

Delphi-Quellcode:
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));
folgende Ausgabe:

1.00
12.00
123.00



Bzw. was ist zu tun, damit die Zahlen rechtsbündig werden ?
Gruß
Hansa
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.252 Beiträge
 
Delphi 2006 Professional
 
#2

Re: FloatToStrF ??

  Alt 2. Okt 2004, 10:06
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;
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
Alexander

Registriert seit: 28. Aug 2002
Ort: Oldenburg
3.513 Beiträge
 
Turbo Delphi für .NET
 
#3

Re: FloatToStrF ??

  Alt 2. Okt 2004, 10:10
Zitat von OH zu ffFixed:
Festkommaformat. Der Wert wird in einen String der folgenden Form umgewandelt: "-ddd.ddd...". Der resultierende String beginnt mit einem Minuszeichen, wenn es sich um eine negative Zahl handelt. Vor dem Dezimaltrennzeichen steht immer mindestens eine Ziffer. Die Anzahl der Stellen nach dem Dezimalkomma wird über den Parameter Digits angegeben. Es muss sich dabei um eine Zahl zwischen 0 und 18 handeln. Ist die Anzahl der Stellen links vom Dezimalkomma größer als die angegebene Genauigkeit, wird für den resultierenden Wert das wissenschaftliche Format verwendet.
Danach formatiert er doch genau richtig

Du könntest einfach die anderen Stellen mit Leerzeichen auffüllen. Was anderes fällt mir jetzt nicht ein...

Edit: Mist zu spät...
Alexander
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.252 Beiträge
 
Delphi 2006 Professional
 
#4

Re: FloatToStrF ??

  Alt 2. Okt 2004, 10:13

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;
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#5

Re: FloatToStrF ??

  Alt 2. Okt 2004, 10:43
Zitat von Alexander:
Danach formatiert er doch genau richtig
Was heißt schon richtig ? Das einzige was richtig ist, das sind die 2 Nachkommastellen. Und die Zahlen werden letztenendes im Kraut und Rüben - Format dargestellt.

Ihr meint also, es gibt in Delphi nicht mal Ersatz für folgendes :

writeln (r:8:2); Nun denn, dann nehme ich vorerst eben meine eigenen Funktionen. Falls die noch jemand braucht :

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;
Gruß
Hansa
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#6

Re: FloatToStrF ??

  Alt 2. Okt 2004, 10:47
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 Delphi-Referenz durchsuchenFormat angucken.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#7

Re: FloatToStrF ??

  Alt 2. Okt 2004, 11:09
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:
Betrag :   1234,00
Anzahlung : 567,00
           --------
Diff. :     667,00
Unter folgender Voraussetzung:

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
Gruß
Hansa
  Mit Zitat antworten Zitat
Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#8

Re: FloatToStrF ??

  Alt 2. Okt 2004, 11:11
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
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  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 07:24 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