Seite 1 von 1

PB Compilerversion ermitteln in Unicode Exe

Verfasst: 16.08.2013 12:21
von Bisonte
Hallo.

Ich hab da mal wieder ein Problem ...

Ich habe folgenden Code um den Versionsstring der "pbcompiler.exe" (hier jetzt unter Windows) auszulesen.

Code: Alles auswählen

EnableExplicit

Procedure.s GetCompilerVersion(File.s = "")
  Protected Compiler, result.s
  If File <> ""
    CompilerSelect #PB_Compiler_OS
      CompilerCase #PB_OS_Windows
        Compiler = RunProgram(File, "/VERSION", "", #PB_Program_Open | #PB_Program_Read | #PB_Program_Write | #PB_Program_Hide)
      CompilerDefault
        Compiler = RunProgram(File, "--version", "", #PB_Program_Open | #PB_Program_Read | #PB_Program_Write | #PB_Program_Hide)
    CompilerEndSelect
    If Compiler
      result = StringField(ReadProgramString(Compiler), 1, #TAB$)
      WriteProgramStringN(Compiler, "END")
      CloseProgram(Compiler)
    EndIf
  EndIf
  ProcedureReturn result
EndProcedure

Debug GetCompilerVersion("D:\PureBasic\x64\Compilers\pbcompiler.exe")
Als ASCII Kompilat treten hier keine Probleme auf.
Wenn ich nun aber ein Unicode Kompilat erstelle, kommt nur noch Müll...

Wie bekomme ich in einem Unicode Kompilat nun einen vernünftigen Versionsstring ?
Anscheinend ist die Ausgabe des Compilers nur in ASCII (wegen der Console ?) verfügbar...

Re: PB Compilerversion ermitteln in Unicode Exe

Verfasst: 16.08.2013 12:32
von Shardik
Bisonte hat geschrieben:Wie bekomme ich in einem Unicode Kompilat nun einen vernünftigen Versionsstring ?
Einfach

Code: Alles auswählen

  If #PB_Unicode
    result = PeekS(@result, -1, #PB_UTF8)
  EndIf
vor ProcedureReturn result einfügen.

Warum verwendest Du nicht gleich

Code: Alles auswählen

Debug #PB_Compiler_Version
Dann ist eine Unicode-Umwandlung nicht nötig.

Re: PB Compilerversion ermitteln in Unicode Exe

Verfasst: 16.08.2013 12:40
von Bisonte
Stimmt ... das war einfach (klatschanstirn) :oops: danke.

Die Konstante fällt aus, da ich den kompletten String brauche ...