Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Zahlenformate (https://www.delphipraxis.net/111541-zahlenformate.html)

NEPH1L1M 4. Apr 2008 23:59


Zahlenformate
 
Hallo,

ich habe eigentlich eine banale Frage, aber trotz intensiver Suche habe ich hier noch nicht die passende Antwort gefunden.

Also von TurboPascal kenne ich noch den Befehl "write(Zahl:3:2)", um z.B. eine REAL-Variable mit 2 Stellen hinter dem Komma auszugeben. Wie mache ich das in Delphi ? Z.B. von einer Variable SINGLE ?

Delphi-Quellcode:
L,B,A1: integer; A2:single
A1:=l*b;    
A2:=A1/100;
Flaeche.text:= IntToStr(A1);
Flaeche_cm.text:= FloatToStr(A2)
Danke für eine Antwort!

Christian Seehase 5. Apr 2008 00:08

Re: Zahlenformate
 
Moin Nephilim,

schau Dir dazu in der Hilfe mal Delphi-Referenz durchsuchenFormat und die zugehörigen Delphi-Referenz durchsuchenFormat-Strings an, oder aber auch Delphi-Referenz durchsuchenFormatFloat

NEPH1L1M 5. Apr 2008 18:10

Re: Zahlenformate
 
Hallo Christian,

meinst du das hier:

Format Strings

A format string is an interpreted token that the NDR engine understands. Format strings are often referred to as MOPs; this documentation uses the term format string throughout.

To be more precise, a format character is an individual (atomic) interpretable token. Each format character is one byte in size. A format string is a sequence of format characters or format characters and numerical data. The term descriptor is also used for naming common sequences; for example, a parameter format string or a parameter descriptor is a format string used to describe a parameter of a routine.

Format characters have suggestive symbolic names like FC_LONG or FC_STRUCT. All format string characters used by MIDL and the NDR engine are defined in the Ndrtypes.h file.


Format String Tables

Two primary format string tables are used by the engine: the procedure format string table, __MIDL_ProcFormatString, that keeps the procedure descriptors; and the type format string table, __MIDL_TypeFormatString, that keeps the data type descriptors. The compiler generates both into the main stub files (*_c.c, *_s.c, *_p.c). The procedure format string table is used mostly by various interpreters but it is also used for the buffer conversion regardless of the compiler mode. The type format string table is used when calling the core NDR engine to indicate specific data types to be worked on.


Format String Notation

The notation used in this document follows common programming description guidelines, with a bar ( | ) used to denote alternative constructs and square brackets ( [ ] ) used to indicate optional elements. Format strings are frequently stacked up for readability (accountability). Throughout this document, FC denotes a single format character. Format characters are presented in all CAPS, using their actual symbolic names. Other arbitrary fields are represented by a name and a size.

Angle brackets ( <> ) are used to denote sizes of the descriptors. The conventions shown in the following table are employed.


:shock:

Zeigt mir - sorry - jetzt nicht wie ich es machen muss ?!

Warum ist das bei DELPHI so kompliziert geworden :(

Gruss NEPHI

Dani 5. Apr 2008 20:51

Re: Zahlenformate
 
Zitat:

Zitat von Christian Seehase

ist ganz einfach zu benutzen:
Delphi-Quellcode:
FormatFloat('0.0#', -17.37777777777) = '-17,38'

3_of_8 5. Apr 2008 22:25

Re: Zahlenformate
 
So ähnlich geht es mit Delphi auch noch, und zwar mit dem Str-Befehl, glaube ich. Format ist halt praktisch die neuere Variante. Mächtiger. Besser. Und auch nicht wirklich schwer zu verstehen.

NEPH1L1M 6. Apr 2008 17:50

Re: Zahlenformate
 
Delphi-Quellcode:
FormatFloat('0.0#', -17.37777777777) = '-17,38'
D.h. ich muss das Ergebnis kennen - in deinem Bsp. -17.3777 - und dann umwandeln?
Nein oder?
Für -17,37777 muss ich dann wohl die Variablen-Bezeichnung eintragen ?

Für was steht das '0.0#' ?

Gruss Nephi

Luckie 6. Apr 2008 17:55

Re: Zahlenformate
 
Zitat:

Zitat von NEPH1L1M
Für was steht das '0.0#' ?

Sollte in der Hilfe erklärt sein.

NEPH1L1M 7. Apr 2008 17:14

Re: Zahlenformate
 
Ich frag doch hier :?: - die Hilfe kann man überwiegend vergessen!

Thorben_Ko 7. Apr 2008 18:10

Re: Zahlenformate
 
Zitat:

FormatFloat formatiert den mit Value angegebenen Gleitkommawert. Dazu wird der im Parameter Format übergebene Format-String verwendet. Die folgende Tabelle enthält die unterstützen Formatbezeichner:

Bezeichner Beschreibung

0 Platzhalter für eine Ziffer. Enthält der zu formatierende Wert an der Position eine Ziffer, an der im Format-String '0' steht, wird diese in den Ausgabe-String kopiert. Andernfalls wird das Zeichen '0' an dieser Position im Ausgabe-String gespeichert.
# Platzhalter für eine Ziffer. Enthält der zu formatierende Wert an der Position eine Ziffer, an der im Format-String '#' steht, wird diese in den Ausgabe-String kopiert. Andernfalls wird an dieser Position kein Zeichen im Ausgabe-String gespeichert.

. Dezimaltrennzeichen. Das erste '.'-Zeichen im Format-String bestimmt die Position des Dezimaltrennzeichens im formatierten Wert. Alle weiteren dieser Zeichen werden ignoriert. Das tatsächlich im Ausgabe-String verwendete Zeichen wird mit der globalen Variable DecimalSeparator festgelegt. Die Variable erhält als Standardwert den entsprechenden Eintrag in der Registerkarte Zahlen im Modul Ländereinstellungen der Windows-Systemsteuerung.
, Tausendertrennzeichen. Enthält der Format-String ein oder mehrere ','-Zeichen, werden in den Ausgabe-String links des Dezimaltrennzeichens nach jeder Gruppe von drei Ziffern Tausendertrennzeichen eingefügt. Die Position und Anzahl der Trennzeichen im Format-String wirkt sich nicht auf die Ausgabe aus. Sie geben nur an, daß Trennzeichen eingefügt werden sollen. Das tatsächlich im Ausgabe-String verwendete Zeichen wird mit der globalen Variable ThousandSeparator festgelegt. Die Variable erhält als Standardwert den entsprechenden Eintrag in der Registerkarte Zahlen des Moduls Ländereinstellungen der Windows-Systemsteuerung.

E+ Wissenschaftliche Schreibweise. Sind die Zeichen 'E+', 'E-', 'e+' oder 'e-' im Format-String enthalten, wird die Zahl in der wissenschaftlichen Schreibweise formatiert. Bis zu vier '0'-Zeichen können direkt nach 'E+', 'E-', 'e+' oder 'e-' angegeben werden, um die minimale Anzahl der Stellen im Exponenten festzulegen. Bei den Formaten 'E+' und 'e+' wird für positive Exponenten ein Pluszeichen und für negative Exponenten ein Minuszeichen in den String eingefügt. Bei den Formaten 'E-' und 'e-' wird lediglich für negative Exponenten ein Vorzeichen ausgegeben.

'xx'/"xx" In halbe oder ganze Anführungszeichen eingeschlossene Zeichen wirken sich nicht auf die Formatierung aus und werden wie eingegeben angezeigt.
; Trennt Abschnitte für positive, negative und Nullwerte im Format-String.
Ich find das sehr hilfreich... weiss net wo dein prob ist..

NEPH1L1M 7. Apr 2008 19:09

Re: Zahlenformate
 
Danke für die copy :-D

Aber am Anfang der Hilfe steht das:

Formatiert einen Gleitkommawert.

Namespace
Borland.Vcl.SysUtils

Syntax

[Delphi] function FormatFloat(const Format: string, Value: Extended): string;
[Delphi] function FormatFloat(const Format: string, Value: Extended, const FormatSettings: TFormatSettings): string;
[Delphi] function FormatFloat(const Format: string, Value: Extended, Provider: IFormatProvider): string;

Und ehrlich gesagt habe ich da, die Formatierung, wie oben nicht erkennen können.

Ich habe es inzwischen so gelöst :

[pre][pre][/pre]A1:=l*b; //Fläche in mm²
A2:=A1/100;
gewicht:=kg*A2;
Flaeche.text:= IntToStr(A1);
Flaeche_cm.text:= FloatToStr(A2);
Flaeche_cm.text := FloatToStrF(StrToFloat(Flaeche_cm.text),ffNumber,5 ,2)[delphi]

Mal eine andere Frage:
Kann ich das Buch "Borland Delphi 7 - Grundlagen, Profiwissen, Kochbuch. Das umfassende Handbuch für die Win32-Anwendungsentwicklung" auch für DELPHI 2005 was ich
habe kaufen? Ich suche immer noch ein g´scheites Buch mit Grundlagen von DELPHI 2005 (komme direkt aus der TurboPascal 6-Welt).

Danke für eine Info und danke für die Tipps!


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:36 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