Das so zu importieren ist ueberhaupt nicht moeglich. Man kann aber bei dem Import einmal das ABC (*A=0...) durchgehen.mk-soft hat geschrieben: sprintf(...) arbeitet mit dynamischen Parameteranzahl. Ist glaube es ist ich nicht so einfach zu importieren.
Formatfunktion ähnlich wie sprintf (C)
Re: Formatfunktion ähnlich wie sprintf (C)
Re: Formatfunktion ähnlich wie sprintf (C)
@mk-soft
Vllt kannst du ja mein Macro benutzen : DimP()
Es liefert zwar auch nicht unbegrenzt Parameter, aber immer hin 16, und es wäre ausbaufähig.
Außerdem kann man Strings direkt übergeben und nicht als Pointer ... Außer du willst weiterhin Pointer nutzen:
Hier mal n ganz einfaches Beispiel ...
EDIT: aber leider kann man hier die ParameterTypen nicht mischen, hat sich also erledigt ..
Vllt kannst du ja mein Macro benutzen : DimP()
Es liefert zwar auch nicht unbegrenzt Parameter, aber immer hin 16, und es wäre ausbaufähig.
Außerdem kann man Strings direkt übergeben und nicht als Pointer ... Außer du willst weiterhin Pointer nutzen:
Hier mal n ganz einfaches Beispiel ...
Code: Alles auswählen
; Meine Macros ...
Macro _O_ : ( : EndMacro
Macro _C_ : ) : EndMacro
Macro MacroRepeat2(F,B)
F#0#B,F#1#B,F#2#B,F#3#B,F#4#B,F#5#B,F#6#B,F#7#B, F#8#B,F#9#B,F#10#B,F#11#B,F#12#B,F#13#B,F#14#B,F#15#B
EndMacro
Macro MacroRepeat3(F,M,B)
F#0#M#0#B:F#1#M#1#B:F#2#M#2#B:F#3#M#3#B:F#4#M#4#B:F#5#M#5#B:F#6#M#6#B:F#7#M#7#B:F#8#M#8#B: F#9#M#9#B:F#10#M#10#B:F#11#M#11#B:F#12#M#12#B:F#13#M#13#B:F#14#M#14#B:F#15#M#15#B
EndMacro
Macro DimP(Parameter, DefaultValue)
MacroRepeat2(Nr,_#Parameter=DefaultValue) )
Dim Parameter(15)
MacroRepeat3(Parameter# _O_, _C_ =Nr, _#Parameter)
Defined(0,0
EndMacro
; -------------
; Definition der Procedure:
Procedure.s Format(MainString.s, DimP(String.s,""))
Protected n = 0
While String(n)
MainString = ReplaceString(MainString, "%"+Str(n+1), String(n))
n + 1
Wend
ProcedureReturn MainString
EndProcedure
Debug Format("%1 hier %3 %2 mega %4 ", "Das","ja", "ist", "cool")
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Re: Formatfunktion ähnlich wie sprintf (C)
Update v2.01
Sollte jetzt alles stimmen. Die Ausgabe wird nicht mehr abgeschnitten wenn diese größer ist als die angegebene Breite.
Bei Hexzahlen wird jetzt der Type der Variable mit angegeben.
Könnt ja mal schauen was man noch verbessern oder erweitern kann.
FF
Sollte jetzt alles stimmen. Die Ausgabe wird nicht mehr abgeschnitten wenn diese größer ist als die angegebene Breite.
Bei Hexzahlen wird jetzt der Type der Variable mit angegeben.
Könnt ja mal schauen was man noch verbessern oder erweitern kann.
FF
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Re: Formatfunktion ähnlich wie sprintf (C)
Nun ist mir doch noch etwas bei den Hex-Befehlen aufgefallen. Hier mein Test:
Code: Alles auswählen
name.s = "Michael Schulze"
Debug Format("%'#-25.9s", @name) ;linksbündig, abschneiden nach 9. Stelle, Auffüllung mit '#' auf 25 Stellen
value.l = $1FE0
Debug Format("%X", @value) ;normal (Fehler wegen Auffüllung auf 8 Stellen mit '0'?)
Debug Format("%12X", @value) ;Auffüllen auf 12 Stellen
Debug Format("%'#12X", @value) ;Auffüllung mit '#' auf 12 Stellen
Debug Format("%'#12.12X", @value) ;Fehler
Debug Format("%'#12.7X", @value) ;Fehler
Debug Format("%'#12.4X", @value) ;"Menschenskinder, das Niveau dieses Forums singt schon wieder!" — GronkhLP ||| "ich hogffe ihr könnt den fehle endecken" — Marvin133 ||| "Ideoten gibts ..." — computerfreak ||| "Jup, danke. Gruss" — funkheld
Re: Formatfunktion ähnlich wie sprintf (C)
Update v2.02
- Bugfix: Hexwert lesen aus Parameter
Sorry
Update v2.02
- Bugfix: Typeangabe Hexwert lesen
Siehe beispiel für Hexwerte
FF
P.S. Beispiel
- Bugfix: Hexwert lesen aus Parameter
Sorry
Update v2.02
- Bugfix: Typeangabe Hexwert lesen
Siehe beispiel für Hexwerte
FF
P.S. Beispiel
Code: Alles auswählen
IncludeFile "Format.pb"
valuelong.l = $12341FE0
valueword.w = $EEEE
valueinteger.i = $12345
Debug Format("%X", @valueinteger) ; Fehler
Debug Format("%12.8X", @valuelong) ; Breite 12, Type Long
Debug Format("%'#12.8X", @valuelong) ; Auffüllung mit '#' ; Breite 12, Type Long
Debug Format("%4X", @valueword) ; Ohne Breite ist Type ; Type Word
Debug Format("%8X", @valuelong) ; Ohne Breite ist Type ; Type Long
Debug Format("%'#12.4X", @valueword) ; Auffüllung mit '#' ; Breite 12, Type Word
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive