Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

Neue/alte Funktion Format$()

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
ytwinky



Anmeldungsdatum: 28.05.2005
Beiträge: 2624
Wohnort: Machteburch

BeitragVerfasst am: 28.11.2005, 18:19    Titel: Neue/alte Funktion Format$() Antworten mit Zitat

Hi AlleMann,
bei meinen Versuchen, Zahlen zu formatieren/runden bin ich im englischen Help-File auf die Funktion Format$ gestoßen,
die in der deutschen Hilfe nicht erwähnt wird!
Ich habe sie gleich ausprobiert:
Code:
'$include: "vbcompat.bi"
'$include: "MsgBox.bi"
'MsgBox.bi ist im Prinzip die Messagebox von DOSe
'$gui
Option Explicit
Option Escape
Dim As Double d=-1234567.89
Dim As String w
w=Format$(d, "+,#.###")
MsgBox 0, w, "Dies ist ja prima!", fbInformation
d=Val(w)
w=Format$(d, "+,#.#####")
MsgBox 0, w &"\nrichtig gemacht, aber doch verkehrt..", "Dies ist nicht schön!", fbCritical
'Sleep 'ist nicht mehr nötig, da das Programm mit -$gui compiliert wird(oder bei fbc:<fbc> -s gui <filename>)
End

Da ich sie ganz nützlich finde, habe ich die Beschreibung gleich übersetzt, damit sie auch denjenigen zur Verfügung steht, die
ihr Vokabelheft gerade nicht zu Hand haben zwinkern
Damit nicht der Eindruck entsteht, in diesem Forum gäbe es nur Links zu 'irgendwelchen' Seiten, zitiere ich mich einfach selbst:
Jörg Zühlke hat Folgendes geschrieben:
entn.:FB-manual-5.nov.2005.chm
übersetzt: 28.11.2005 von Jörg Zühlke, MD
FORMAT
Syntax:
#include "vbcompat.bi"
format[$](numerischer_Ausdruck, Formatier_Ausdruck)

Beschreibung

Format$ liefert einen String mit dem Ergebnis von numerischer_Ausdruck formatiert mit den Angaben vom Formatier_Ausdruck.
Formatier_Ausdruck ist ein String, der numerische oder Datum/Zeit-Werte erzeugen kann.
Um sinnvolle Datum/Zeit-Werte zu liefern, muß numerischer_Ausdruck als serieller Wert von den entsprechenden Funktionen
erhalten werden.
Diese Funktion ist Teil von FB, jedoch wird sie erst erkannt/ausgewertet, wenn vbcompat.bi eingebunden wird.

Formatierzeichen für numerische Werte:
Symbol Beschreibung
Null-string Allgemeines Format (keine Formatierung)
0 ZiffernPlatzhalter: Wenn die Zahl weniger Zeichen hat, als es Nullen gibt(egal auf welcher Seite des '.')
im Formatier_Ausdruck werden führende und nachfolgende Nullen angezeigt. Wenn mehr Ziffern rechts des '.' sind als
Nullen im Format, wird die Zahl gerundet. Sind links des Dezimalpunktes mehr Ziffern als Nullen im Format, werden alle
Ziffern angezeigt.
# ZiffernPlatzhalter: Folgt den selben Regeln wie das '0'-Zeichen, nur werden führende und nachfolgende Nullen nicht
angezeigt.
. Platzhalter für '.' Wenn das Format nur '#' links vom '.' enthält, beginnen die Zahlen<1 mit dem '.'
% Prozent: Der Ausdruck wird mit 100 multipliziert und das '%'-Zeichen eingefügt.
, Tausender-Trenner. Zwei benachbarte Kommata oder ein Komma gleich links des '.' (egal ob eine Dezimalzahl angegeben ist
oder nicht) bedeutet:'laß' die drei Ziffern weg, die zwischen diese Kommata fallen oder zwischen Komma und '.', runde
nach Erfordernis.'
E- E+ e- e+ wissenschaftliches Format: Wenn ein Format ein Zeichen(0 or #) rechts von E-, E+, e-, oder e+ wird die Zahl im
wissenschaftlichen Format ausgegeben und ein E oder e wird zwischen Mantisse und Exponent eingefügt. Die Anzahl der
'0' oder '#' rechts davon bestimmen die Anzahl der Zeichen im Exponenten. Mit E- oder e- erhalten negative Exponenten
auch ein negatives Vorzeichen. Mit E+ oder e+ erhalten negative Exponenten negative und positive Exponenten auch
positive Vorzeichen.
: ? + $ () space Anzeige von Zeichen, um andere Zeichen als diese anzuzeigen, muß den Zeichen ein '\' vorausgehen oder die
Zeichen müssen von Anführungszeichen umgeben sein
\ Das nächste Zeichen im String wird angezeigt, so wie es ist.
"text in anführungszeichen" Der Text zwischen den Anführungszeichen wird angezeigt.
: Zeit-Trenner wird benutzt, um Stunden, Minuten und Sekunden zu trennen, wenn Zeit-Werte formatiert werden
/ Datums-Trenner wird benutzt, um Tag, Monat und Jahr zu trennen, wenn Datums-Werte formatiert werden

Formatierzeichen für Datum/Time-Formate:
Symbol Beschreibung
d Anzeige des Tages(day) als Zahl ohne führende Null(1-31)
dd Anzeige des Tages(day) als Zahl mit führender Null(01-31)
ddd Anzeige des Tages(day) als Abkürzung(Sun-Sat)
dddd Anzeige des Tages(day) als ganzer Name(Sunday-Saturday)
ddddd Anzeige eines seriellen Datum-Wertes als komplettes Datum (inkl. Tag, Monat und Jahr)
m Anzeige des Monats(month) als Zahl ohne führende Null(1-12)
Wenn m direkt nach h oder hh steht, wird Minute statt des Monats angezeigt
mm Anzeige des Monats(month) als Zahl mit führender Null(01-12)
Wenn mm direkt nach h oder hh steht, wird Minute statt des Monats angezeigt
mmm Anzeige des Monats(month) als Abkürzung(Jan-Dec)
mmmm Anzeige des Monats(month) als ganzer Name(January-December)
y Anzeige des Jahres(year) mit zwei Ziffern(00-99)
yyyy Anzeige des Jahres(year) mit vier Ziffern(1900-2040)
h Anzeige der Stunde(hour) als Zahl ohne führende Null(0-23)
hh Anzeige des Stunde(hour) als Zahl mit führender Null(00-23)
m Anzeige des Minute(minute) als Zahl ohne führende Null(0-59)
Wenn m nicht direkt nach h oder hh steht, wird Monat statt der Minute angezeigt
mm Anzeige des Minute(minute) als Zahl mit führender Null(00-59)
Wenn m nicht direkt nach h oder hh steht, wird Monat statt der Minute angezeigt
s Anzeige des Sekunde(second) als Zahl ohne führende Null(0-59)
ss Anzeige des Sekunde(second) als Zahl mit führender Null(00-59)
ttttt Anzeige eines seriellen Zeit-Wertes als komplettes Zeit(inkl. Stunde, Minute und Sekunde)
AM/PM (Standard) am/pm Anzeige der 12-Stunden Zeit mit Angabe von AM oder am für jede Stunde vor Mittag, PM oder pm für jede
Stunde zwischen Mittag und 11:59
A/P a/p Anzeige der 12-Stunden Zeit mit Angabe von A oder a für jede Stunde vor Mittag, P oder p für jede Stunde zwischen
Mittag und 11:59

Beispiel:
Beispiele numerischer Formate
FORMAT (fmt$) 5 -5 .5
Null STRING 5 -5 0.5
0 5 -5 1
0.00 5.00 -5.00 0.50
#,##0 5 -5 1
#,##0.00 5.00 -5.00 0.50
$#,##0;($#,##0) $5 ($5) $1
$#,##0.00;($#,##0.00) $5.00 ($5.00) $0.50
0% 500% -500% 50%
0.00% 500.00% -500.00% 50.00%
0.00E+00 5.00E+00 -5.00E+00 5.00E-01
0.00E-00 5.00E00 -5.00E00 5.00E-01

Beispiele Datums- und Zeit-Formate
Die folgenden sind Beispiele von Datums- und Zeit-Formaten:
FORMAT$ Ausdruck Anzeige
m/d/yy 12/7/58
d-mmmm-yy 7-December-58
d-mmmm 7-December
mmmm-yy December-58
h:mm AM/PM 8:50 PM
h:mm:ss AM/PM 8:50:35 PM
h:mm 20:50
h:mm:ss 20:50:35
m/d/yy h:mm 12/7/58 20:50

Unterschiede zu QB
Gibts nicht in QB 4.5. Diese Funktion erschien zuerst in PDS 7.1

Siehe auch:
PRINT USING
STR$

[A.d.Ü]
Den englischen Text habe ich nach bestem Wissen und Gewissen übersetzt, Fehler passieren aber auch mir zwinkern)
-Wer Dreckfuhler findet darf sie behalten(das ist geklaut, aber ich weiß nicht mehr woher.. *gr*)
-Kommasetzung, habe ich sowieso nie kapiert..
-bei mir 'sind' Dateien irgendwo, wenn sie 'liegen' würden, wüßte ich schon einen Weg, um die faule Bande aufzuscheuchen zwinkern)
-vbcompat.bi ist normalerweise in [FB-Verzeichnis]\inc\
-Wenn Format$ zum Runden benutzt werden soll, darf der numerische_Wert nicht mit Tausender-Trennzeichen formatiert werden!
(Val() interpretiert das Tausender-Trennzeichen(',') richtig als Zahlenende und wandelt nicht die ganze Zahl um..)
-'.' ist der Dezimalpunkt(Es kann nur einen geben..)
-bei den Formaten ist 11:59 wohl 23:59
Ich habe den englischen Text übersetzt, allerdings habe ich die Beispiele nicht getestet.
Mit FB0.15b funktioniert Format$ jedenfalls, denn DASS sie funktioniert habe ich ausprobiert.
Bei Rückfragen bitte erst im Original nachsehen


Happy FORMATting
ytwinky

PS: Ooops, Formatierung futsch!
bei Bedarf mache ich daraus 'ne HTM-Datei..
Gruß
ytwinky
[Edit]
PS: Volta hat in dieser Richtung schon mal was gemacht
Verfasst am: 03.09.2005, 20:40 Titel: Die erweiterten Date und Time Funktionen in FB - 0.15
Bin aber grade erst drauf gestoßen zwinkern

16.12.2005 Da Rosenkranz das Beispiel nicht kompilieren konnte, hier die nun die MsgBox.bi:
Code:
Const fbOkOnly = 0            'Nur die Schaltfläche OK anzeigen
Const fbOkCancel = 1          'Schaltflächen OK und Abbrechen anzeigen
Const fbAbortRetryIgnore = 2  'Abbruch, Wiederholen und Ignorieren
Const fbYesNoCancel = 3       'Ja, Nein und Abbrechen
Const fbYesNo = 4             'Schaltflächen Ja und Nein
Const fbRetryCancel = 5       'Schaltflächen Wiederholen und Abbrechen

Const fbCritical = 16         'Stop-Symbol
Const fbQuestion = 32         'Fragezeichen-Symbol
Const fbExclamation = 48      'Ausrufezeichen-Symbol
Const fbInformation = 64      'Information-Symbol

Const fbOK=1                  'Rückgabewert OK
Const fbCancel=2              'Rückgabewert Abbrechen
Const fbAbort=3               'Rückgabewert Abbruch
Const fbRepeat=4              'Rückgabewert Wiederholen
Const fbIgnore=5              'Rückgabewert Ignorieren
Const fbYes=6                 'Rückgabewert Ja
Const fbNo=7                  'Rückgabewert Nein
Const fbNull=0
Declare Function MsgBox Lib "user32" Alias "MessageBoxA" _
   (ByVal hWnd As Integer, ByVal lpText As String, _
   ByVal lpCaption As String, ByVal wType As Integer) As Integer
Sie gehört ins ..\inc Verzeichnis..
..und da ich schon gerade am Editieren bin:
Die Beschreibung von Format[$] hat sich in FB015b v. 01.12.2005 nicht geändert.. happy
[/Edit]
_________________
v1ctor hat Folgendes geschrieben:
Yeah, i like INPUT$(n) as much as PRINT USING..
..also ungefähr so, wie ich GOTO..
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC. Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz