#PB_Compiler_Version + zusätzlich Betaversion
#PB_Compiler_Version + zusätzlich Betaversion
Hallo,
ich verwende einen Präprozessor, wobei ich mit ReadProgramString alle vordefinierten Strukturen und Interfaces auslese. Aus Zeitgründen speichere ich diese in einem temporären Verzeichnis unter einem Dateinamen ergänzt durch den Inhalt aus #PB_Compiler_Version zwischen.
Aus Sicherheitsgründen würde ich diesen Dateinamen gerne mit der Betaversion ergänzen. Hat jemand eine Idee, ob ich per Programm irgendwie herausfinden kann, ob es sich beim PB-Compiler um eine Betaversion (und dann um welche) handelt?
Danke
Josh
ich verwende einen Präprozessor, wobei ich mit ReadProgramString alle vordefinierten Strukturen und Interfaces auslese. Aus Zeitgründen speichere ich diese in einem temporären Verzeichnis unter einem Dateinamen ergänzt durch den Inhalt aus #PB_Compiler_Version zwischen.
Aus Sicherheitsgründen würde ich diesen Dateinamen gerne mit der Betaversion ergänzen. Hat jemand eine Idee, ob ich per Programm irgendwie herausfinden kann, ob es sich beim PB-Compiler um eine Betaversion (und dann um welche) handelt?
Danke
Josh
Re: #PB_Compiler_Version + zusätzlich Betaversion
Ich würde einfach den CRC32-Fingerprint des Compilers mit an die Version hängen:
der dürfte sich ja ändern.
Code: Alles auswählen
Debug CRC32FileFingerprint(#PB_Compiler_Home+"Compilers\pbcompiler.exe")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: #PB_Compiler_Version + zusätzlich Betaversion
Es geht doch viel einfacher und zwar kannst du mit Hilfe eines Parameters "/version" die vollständige Versionsbezeichnung abfragen.
Code: Alles auswählen
PID = RunProgram(#PB_Compiler_Home+"Compilers\pbcompiler.exe", "/version","", #PB_Program_Open | #PB_Program_Read|#PB_Program_Hide )
If PID
Debug ReadProgramString(PID)
EndIfMan braucht dann nur " - (c) 2012 Fantaisie Software" rausschneiden und man hat dann die vollständige Version.Ausgabe hat geschrieben:PureBasic 5.10 Beta 1 (Windows - x86) - (c) 2012 Fantaisie Software
Re: #PB_Compiler_Version + zusätzlich Betaversion
Und ohne das PureBasic wäre es dann:
könnte man sicher noch verfeinern, ob und mit OS-Angabe als Flag usw. ^^
Code: Alles auswählen
Procedure.s GetCompilerVersion()
Protected Program = RunProgram(#PB_Compiler_Home+"Compilers\pbcompiler.exe", "/version", "", #PB_Program_Open|#PB_Program_Read|#PB_Program_Hide)
Protected Version.s
If Program
Version = ReadProgramString(Program)
ProcedureReturn Trim(Mid(Version, 10, FindString(Version, "(c)")-13))
EndIf
EndProcedure
Debug GetCompilerVersion()
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: #PB_Compiler_Version + zusätzlich Betaversion
Code: Alles auswählen
EnableExplicit
Procedure.s GetCompilerVersion()
Protected Program = RunProgram(#PB_Compiler_Home+"Compilers\pbcompiler.exe", "/version", "", #PB_Program_Open|#PB_Program_Read|#PB_Program_Hide)
Protected Version.s
If Program
Version = ReadProgramString(Program)
CloseProgram(Program)
ProcedureReturn Trim(Mid(Version, 10, FindString(Version, "(c)")-13))
EndIf
EndProcedure
Debug GetCompilerVersion()Re: #PB_Compiler_Version + zusätzlich Betaversion
Danke euch allen. Ich hatte in meiner alten Version ohnehin einen Fehler. Da ich den Präprozessor als Werkzeug verwende, darf ichnicht verwenden, sondern mussverwenden. Leider hab ich in meinem ersten Beitrag auch nicht erwähnt, dass es sich um ein Werkzeug handelt.
Code: Alles auswählen
#PB_Compiler_Home+"Compilers\pbcompiler.exe"Code: Alles auswählen
GetEnvironmentVariable("PB_TOOL_Compiler")Re: #PB_Compiler_Version + zusätzlich Betaversion
Klasse, vielen Dank!RSBasic hat geschrieben:Code: Alles auswählen
EnableExplicit Procedure.s GetCompilerVersion() Protected Program = RunProgram(#PB_Compiler_Home+"Compilers\pbcompiler.exe", "/version", "", #PB_Program_Open|#PB_Program_Read|#PB_Program_Hide) Protected Version.s If Program Version = ReadProgramString(Program) CloseProgram(Program) ProcedureReturn Trim(Mid(Version, 10, FindString(Version, "(c)")-13)) EndIf EndProcedure Debug GetCompilerVersion()
Ich sehe noch eine kleine Verbesserungsmöglichkeit. Die beiden Leerzeichen am Anfang und am Ende des "Versionsstrings" können auch gleich bei Mid() ausgelassen werden, so dass Trim() gar nicht nötig ist:
Code: Alles auswählen
ProcedureReturn Mid(Version, 11, FindString(Version,"(c)")-14)
