ytwinky
 
  
  Anmeldungsdatum: 28.05.2005 Beiträge: 2624 Wohnort: Machteburch
  | 
		
			
				 Verfasst am: 28.11.2005, 17:19    Titel: Neue/alte Funktion Format$() | 
				     | 
			 
			
				
  | 
			 
			
				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  
 
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  )
 
-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  )
 
-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  
 
 
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..   
 
[/Edit] _________________
  	  | v1ctor hat Folgendes geschrieben: | 	 		  | Yeah, i like INPUT$(n) as much as PRINT USING.. | 	  ..also ungefähr so, wie ich GOTO.. | 
			 
		  |