ich lese schon eine Weile mit und habe mich jetzt frisch angemeldet. Ich nutze PureBasic seit etwa einem Jahr und finde es einfach genial...leider stehe ich jetzt vor einem für mich unlösbarem Problem und hoffe, dass ihr mir weiterhelfen könnt
Und zwar geht es um die Prozedur RunProgram() im Zusammenhang mit ReadProgramString().
Ich versuche den Output eines Konsolenprogramms auszulesen. Das funktioniert aber einfach nicht...es kommt absolut nichts in meinem PureBasic-Programm an.
Es handelt sich um "ArgyllCMS", eine Softwaresammlung für Farbmanagement (Bildbearbeitung, usw). In dem Paket sind lauter EXE-Dateien, die eine spezielle Funktion haben. Aber ich kann von keinem die Konsolenausgabe einlesen. Beim Programm "Ping" funktioniert es jedoch.
Hier mein Code zum Testen:
Code: Alles auswählen
Define TestProg.i = RunProgram("C:\Diverses\Argyll_V1.9.2\bin\colprof.exe", "", GetTemporaryDirectory(), #PB_Program_Open | #PB_Program_Read)
Text.s
While ProgramRunning(TestProg)
Text = ReadProgramString(TestProg)
Debug Text
Wend
Ersetze ich das Konsolenprogramm "colprof.exe" durch "ping", funktioniert es einwandfrei.
Getestet habe ich es bisher mit PureBasic 32-Bit und 64-Bit. Ebenso jeweils mit ArgyllCMS 32-Bit und 64-Bit. Ich nutze Win 7 64-Bit.
Bisher habe ich das Problem umgangen, indem ich die Konsolenausgabe in eine Datei umgeleitet habe und diese dann ausgelesen habe...aber das ist eine Pfusch-Lösung
Falls es jemand testen möchte, das Programm ist OpenSource und kann hier heruntergeladen werden:
http://www.argyllcms.com/downloadwin.html
Die EXE's sind alle im darin enthaltenen BIN-Ordner.
Vielleicht hilft das noch zur Fehlersuche...
Wenn ich das Programm "Ping" einlese, werden ja die Umlaute nicht richtig dargestellt.
Eine Umwandlung des Strings mit der Funktion OemToChar_() hat ebenfalls keine Auswirkung...die Umlaute bleiben falsch.
Hat jemand einen Rat?
Ich bin mit meinem Latein leider am Ende