AND51 hat geschrieben:und der ausgegebene String ist nicht nullterminiert, könnte einen IMA ergeben!
im Code steht test.s{99} und das sind 99 Nullchar und davon stehen nun 98 zur Verfügung. Und wem das nicht reicht, der schreibt da halt 1024 hin.
1023 Zeichen sollten für kleinere Infotexte ja wohl reichen.
Und wer Probleme mit dem einhalten dieser kleinen Grenze hat, der benutzt halt eine Structure mit StructureUnion
Außerdem wozu selbst schreiben, wenn es die Funktion schon gibt
Und nun noch ein Beispiel mit mehr Variablen, man kann wie im Beispiel 6 Variablen nehmen, aber auch 8 oder 10.
Hauptsache ImportC stimmt mit dem späteren Aufruf überein.
Code: Alles auswählen
ImportC "msvcrt.lib"
c_vsprintf_(a,b,c,d,e,f) As "_vsprintf"
EndImport
Structure cInfo
StructureUnion
s.s{99}
s0.s{100} ; <-- für die Sicherheitsfanatiker, damit ein NullChar da ist
EndStructureUnion
EndStructure
ausgabe.cInfo
vorgabe.cInfo\s = "Byteposition ist: %d / Hex = $%02X / Dez = %03d / Ascii = %c"
wert1 = 650000
wert2 = 210
wert3 = wert2 ;das muß leider sein, die Variablen müssen existieren
wert4 = wert2
c_vsprintf_(@ausgabe, @vorgabe, @wert1,@wert2,@wert3,@wert4)
Debug ausgabe\s
wert1 = 8956
wert2 = 41
wert3 = wert2
wert4 = wert2
c_vsprintf_(@ausgabe, @vorgabe, @wert1,@wert2,@wert3,@wert4)
Debug ausgabe\s