Zahl in Tausender unterteilen?

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
PMV
Beiträge: 2765
Registriert: 29.08.2004 13:59
Wohnort: Baden-Württemberg

Beitrag von PMV »

AND51 hat geschrieben:Hier noch ein Klassiker in PB Syntax: <)

Code: Alles auswählen

OnErrorGoto(?Bed)
lol ... ich kannte den glaub nocht nicht, ist aber wirklich gut :lol:

Code: Alles auswählen

Procedure.s Str1000(Quad.q)
  Protected s.s = StrQ(Quad)
  Protected l.l = Len(s)
  Protected i.l, r.s
  Protected m.s
  If Quad < 0 : m = "-" : s = Right(s, Len(s) - 1) : l - 1 : EndIf
  
  For i = l To 4 Step -3
    r = "." + Mid(s, i - 2, 3) + r
  Next
  ProcedureReturn m + Left(s, i) + r
EndProcedure
Ich hab da auch noch ne Variante :lol:

MFG PMV
alte Projekte:
TSE, CWL, Chatsystem, GameMaker, AI-Game DLL, Fileparser, usw. -.-
Benutzeravatar
KeyKon
Beiträge: 1412
Registriert: 10.09.2004 20:51
Computerausstattung: Laptop: i5 2,8 Ghz, 16GB DDR3 RAM, GeForce 555GT 2GB VRAM
PC: i7 4,3 Ghz, 32GB DDR3 RAM, GeForce 680 GTX 4GB VRAM
Win10 x64 Home/Prof
PB 5.30 (64bit)
Wohnort: Ansbach
Kontaktdaten:

Beitrag von KeyKon »

Naja, ich finde es besteht doch ein kleiner unterschied zwischen einem Code der eine Zahl in Tausender unterteilt und einem vorgefertigtem CS *g*
Ich fände eine Funktion wie in PHP (number_format) doch manchmal ganz praktisch...
Sicher kann man das alles per Hand lösen^^ Aber wir reden hier von PureBasic^^ Einer Sprache die doch eigentlich sehr simpel und praktisch sein sollte *g*
(\/) (°,,,°) (\/)
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

KeyKon hat geschrieben:Sicher kann man das alles per Hand lösen^^ Aber wir reden hier von PureBasic^^ Einer Sprache die doch eigentlich sehr simpel und praktisch sein sollte *g*
siehe: http://purebasic.fr/german/viewtopic.ph ... 775#194775
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
KeyKon
Beiträge: 1412
Registriert: 10.09.2004 20:51
Computerausstattung: Laptop: i5 2,8 Ghz, 16GB DDR3 RAM, GeForce 555GT 2GB VRAM
PC: i7 4,3 Ghz, 32GB DDR3 RAM, GeForce 680 GTX 4GB VRAM
Win10 x64 Home/Prof
PB 5.30 (64bit)
Wohnort: Ansbach
Kontaktdaten:

Beitrag von KeyKon »

Hab ich ja schon gesehen (*g*) aber wie gesagt, solche Funktionen könnten meiner Meinung nach schon in PB integriert sein....
Aber is ja egal, ich will hier keine Szene veranstalten ^^
(\/) (°,,,°) (\/)
Benutzeravatar
Fluid Byte
Beiträge: 3110
Registriert: 27.09.2006 22:06
Wohnort: Berlin, Mitte

Beitrag von Fluid Byte »

Sicher kann man das alles per Hand lösen^^ Aber wir reden hier von PureBasic^^ Einer Sprache die doch eigentlich sehr simpel und praktisch sein sollte *g*
1.) PB ist sehr simpel und praktisch
2.) PB ist kein GameMaker
3.) Das von ts-soft gepostete Snippet kommt ohne API aus, es ist reiner PB code. Was wieder beweist das wenn etwas in PB "fehlt" man es meistens trotzdem nativ umsetzen kann. Man muss bzw. darf selber programmieren.
4.) Was Fred in den letzten Jahren bis zur heutigen Version geleistet hat ist gigantisch. Aber natürlich ist es unmöglich für jede Situation einen Befehl zu Verfügung zu stellen. Dann hol dir lieber ein Zusammen-Klick-Tool.
Windows 10 Pro, 64-Bit / Outtakes | Derek
Benutzeravatar
KeyKon
Beiträge: 1412
Registriert: 10.09.2004 20:51
Computerausstattung: Laptop: i5 2,8 Ghz, 16GB DDR3 RAM, GeForce 555GT 2GB VRAM
PC: i7 4,3 Ghz, 32GB DDR3 RAM, GeForce 680 GTX 4GB VRAM
Win10 x64 Home/Prof
PB 5.30 (64bit)
Wohnort: Ansbach
Kontaktdaten:

Beitrag von KeyKon »

Oh man das man hier immer gleich "zurechtgewiesen" wird nur weil man einen Vorschlag macht...
(\/) (°,,,°) (\/)
Benutzeravatar
Shardik
Beiträge: 746
Registriert: 25.01.2005 12:19

Beitrag von Shardik »

KeyKon hat geschrieben:Warum is so eine Funktion eig nich in PB integriert? Wär doch ma ganz praktisch...
In PB ist so eine Funktion nicht integriert, aber ins Windows API...
Paul hatte dafür im englischen Forum folgende Prozedur vorgestellt (http://www.purebasic.fr/english/viewtop ... 01&start=1):

Code: Alles auswählen

Procedure.s FormatNumber(Number.q) 
  Buffer.s=Space(255) 
  GetNumberFormat_(0,0,StrQ(Number),0,@Buffer,Len(Buffer)) 
  ProcedureReturn Buffer 
EndProcedure 

Debug FormatNumber(123456789)
Benutzeravatar
AND51
Beiträge: 5220
Registriert: 01.10.2005 13:15

Beitrag von AND51 »

@Shradik:
Ein Buffer von 20 SPaces reicht, da Quads inkl. Minusvorzeichen maxa. 20-stellig sind. :wink:
Fluid Byte hat geschrieben:
PureBasic[, e]iner Sprache die doch eigentlich sehr simpel und praktisch sein sollte *g*
[...]
2.) PB ist kein GameMaker
Nun, ich finde auch, dass ein paar Befehle z. B. für die Math- oder STring-Lib nicht schaden könnten.

Überlegen wir doch mal: StringField() könnte locker selbst realisiert werden. Das geht genauso einfach wie Tausendertrennzeichen(). Warum nicht also auch ein paar "wünschenswerte" Befehle einbauen?
Natürlich wollen wir kein CreateGame() Befehl, wir wollen nur, dass ein paar klein(st)e Dinge angenehmer gestaltet werden. ReceiveHTTPFile() ist schließlich auch nur ein Ersatz für URLDownloadToFile_() und kann (wenn auch mit etwas mehr Aufwand) auch selbst realisiert werden. Es stellt auch niemand Fred's 'gigantische Leistung' in Frage. Wir wollen ihm ja nichts Böses, im Gegenteil, wir wollen helfen. Er muss ja Tausendertrennzeichen() nicht selbst coden und implementieren, er kann ja auch unsere Vorlagen nehmen, die wir hier gegenseitig optimieren, ggf. selbst noch ein wenig dran rumbasteln und dann implementieren.
PB 4.30

Code: Alles auswählen

Macro Happy
 ;-)
EndMacro

Happy End
Antworten