StandardIO - sprintf() - Frage

Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Neue Antwort erstellen

Farbfinsternis

Betreff: StandardIO - sprintf() - Frage

BeitragMi, Jul 05, 2006 10:17
Antworten mit Zitat
Benutzer-Profile anzeigen
Für eine aktuelle Aufgabe benötige ich die Formatierung eines Zeichenpuffers in der Art wie es sprintf() erledigt. Leider komme ich weder über das Importieren einer C-Wrapperfunktion, noch über ein externes binden zum Ziel.

Hier mein kläglicher Versuch:
Code: [AUSKLAPPEN]

SuperStrict

Import BRL.StandardIO

Extern "Win32"
   Function sprintf:Int(target_string:Byte Ptr, format:Byte Ptr)
End Extern


Local format:Float = 3.0/2.0
Local ausgabe:String = "Test : %1.4f"

Local ret:Int = sprintf(ausgabe,String(format))

DebugLog String(ret)+" > "+ausgabe

DebugStop()

Hat vielleicht jemand einen Denkanstoß für mich?
Farbfinsternis.tv

Suco-X

BeitragMi, Jul 05, 2006 10:34
Antworten mit Zitat
Benutzer-Profile anzeigen
Also wenn du Extern "C" benutzt, funktioniert dein obiger Code.
Mfg Suco
Intel Core 2 Quad Q8300, 4× 2500 MHz, 4096 MB DDR2-Ram, GeForce 9600GT 512 MB

Farbfinsternis

BeitragMi, Jul 05, 2006 10:41
Antworten mit Zitat
Benutzer-Profile anzeigen
*batsch* Da hätte ich aber auch selbst drauf kommen können ...

Aber: Der Kram wird zwar fehlerfrei kompiliert und auch ohne zu meckern ausgeführt, aber die Ausgabe stimmt nicht. Eigentlich sollte das Ergebnis von 3/2 auf die Ausgabe %1.4f (1 Vorkommastelle, 4 Nachkommastellen Float) formatiert werden ... weißt Du vielleicht warum er dies nicht tut?

[EDIT]
Na das ist ja lustig ... laut Recherche sieht der Aufruf so aus:

sprintf( Zielpuffer für den formatierten String, Formatanweisungen, beliebig viele Parameter)

Besonders der letzte Punkt ist der Haken. Zum ersten kann man in BMax keine beliebig vielen Parameter definieren und zum anderen ist der Datentyp der Parameter unbestimmt.

Ich kann so nicht arbeiten... Evil or Very Mad
[/EDIT]
Farbfinsternis.tv

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group