RunProgram und ReadProgramString will nicht funktionieren
- ts-soft
- Beiträge: 22292
- Registriert: 08.09.2004 00:57
- Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel - Wohnort: Berlin
Re: RunProgram und ReadProgramString will nicht funktioniere
Da scheint es noch einen Bug zu geben, im Compiler-Modus ASCII funktioniert es, in Unicode nicht.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Re: RunProgram und ReadProgramString will nicht funktioniere
Ich habe das mal bei mir ausprobiert.
Es scheint so, dass ping die Zeichen in OEM 852 Codierung zurückgibt.
Deshalb sollte man wohl eher "ReadProgramString(TestProg, #PB_ASCII)" verwenden und danach müsste man das Ergebnis entsprechend umwandeln!
==> https://de.wikipedia.org/wiki/Codepage_852
Es kann aber sein, dass auf anderen PCs eine andere Codepage für die Konsole eingestellt ist.
Das sollte man dann wohl auch berücksichtigen.
lg,
guido
Es scheint so, dass ping die Zeichen in OEM 852 Codierung zurückgibt.
Deshalb sollte man wohl eher "ReadProgramString(TestProg, #PB_ASCII)" verwenden und danach müsste man das Ergebnis entsprechend umwandeln!
==> https://de.wikipedia.org/wiki/Codepage_852
Es kann aber sein, dass auf anderen PCs eine andere Codepage für die Konsole eingestellt ist.
Das sollte man dann wohl auch berücksichtigen.
lg,
guido
Windows 10
PB Last Final / (Sometimes testing Beta versions)
PB Last Final / (Sometimes testing Beta versions)
Re: RunProgram und ReadProgramString will nicht funktioniere
Hi helpy,
Was spricht eigentlich gegen die Funktion OemToChar_()? Es funktioniert damit ja einwandfrei, nur muss man mit "ReadProgramString(TestProg, #PB_Unicode)" auslesen.
Gibt es dafür eine einfache Methode/Funktion?Deshalb sollte man wohl eher "ReadProgramString(TestProg, #PB_ASCII)" verwenden und danach müsste man das Ergebnis entsprechend umwandeln!
Was spricht eigentlich gegen die Funktion OemToChar_()? Es funktioniert damit ja einwandfrei, nur muss man mit "ReadProgramString(TestProg, #PB_Unicode)" auslesen.
Re: RunProgram und ReadProgramString will nicht funktioniere
Hallöchen!!!
Hier mal meine ein paar Tests bei mir.
OemToChar_() ist bei mir immer fehlerhaft und bringt nichts - Außer einen Absturz des Programms !!!!
Test1:
Die Ausgabe (Test1):
Test2:
Die Ausgabe (Test2):
Test3 (Unicode): Hier mit OemToChar_() !!!
Tja, Bug hin oder her, hier müsste man vorher über eine API die befindliche Code-Tabelle prüfen.
Es scheint je nach Rechner hier Unterschiede zugeben.
Hier mal meine ein paar Tests bei mir.
OemToChar_() ist bei mir immer fehlerhaft und bringt nichts - Außer einen Absturz des Programms !!!!
Test1:
Die Ausgabe (Test1):
Test2:
Die Ausgabe (Test2):
Test3 (Unicode): Hier mit OemToChar_() !!!
Tja, Bug hin oder her, hier müsste man vorher über eine API die befindliche Code-Tabelle prüfen.
Es scheint je nach Rechner hier Unterschiede zugeben.
Betriebssysteme: div. Windows, Linux, Unix - Systeme
no Keyboard, press any key
no mouse, you need a cat
no Keyboard, press any key
no mouse, you need a cat
Re: RunProgram und ReadProgramString will nicht funktioniere
Hi ccode_new,
jetzt weiß ich, warum wir unterschiedliche Ergebnisse haben. Du verwendest das ältere PureBasic 5.42, ich jedoch die Version 5.51.
Unicode wurde hier auch komplett entfernt...ich habe auch nicht mehr die Compiler-Option "Unicode-Executable erstellen" (zumindest in der IDE), da es immer Unicode ist.
Stürzt OemToChar_() auch ab, wenn du mit #PB_Unicode einließt?
jetzt weiß ich, warum wir unterschiedliche Ergebnisse haben. Du verwendest das ältere PureBasic 5.42, ich jedoch die Version 5.51.
Unicode wurde hier auch komplett entfernt...ich habe auch nicht mehr die Compiler-Option "Unicode-Executable erstellen" (zumindest in der IDE), da es immer Unicode ist.
Stürzt OemToChar_() auch ab, wenn du mit #PB_Unicode einließt?
Re: RunProgram und ReadProgramString will nicht funktioniere
So, ich habe jetzt Purebasic 5.51 runtergehauen und die neue LTS 5.44 installiert. Damit funktioniert fast alles einwandfrei.
Ich habe jetzt zwei Möglichkeiten bei ReadProgramString():
1. Compiler auf Unicode:
Hier muss ich die Konsole mit #PB_Unicode auslesen und OemToChar_() umwandeln...dann sind alle Umlaute korrekt.
2. Compiler auf Ascii:
Hier kann man einfach mit #PB_Ascii (oder eben keinem Parameter) auslesen und alle Umlaute sind korrekt.
Bei ReadProgramError() muss ich bei Punkt 1 weiterhin zwingend ein Delay in der Schleife setzen, sonst stürzt das Programm ab.
Im Ascii-Modus funktioniert auch hier alles einwandfrei (ohne Delay).
Was habe ich jetzt für Vor- und Nachteile, wenn ich den Compiler auf Ascii oder Unicode stelle?
Ich habe jetzt zwei Möglichkeiten bei ReadProgramString():
1. Compiler auf Unicode:
Hier muss ich die Konsole mit #PB_Unicode auslesen und OemToChar_() umwandeln...dann sind alle Umlaute korrekt.
2. Compiler auf Ascii:
Hier kann man einfach mit #PB_Ascii (oder eben keinem Parameter) auslesen und alle Umlaute sind korrekt.
Bei ReadProgramError() muss ich bei Punkt 1 weiterhin zwingend ein Delay in der Schleife setzen, sonst stürzt das Programm ab.
Im Ascii-Modus funktioniert auch hier alles einwandfrei (ohne Delay).
Was habe ich jetzt für Vor- und Nachteile, wenn ich den Compiler auf Ascii oder Unicode stelle?
Re: RunProgram und ReadProgramString will nicht funktioniere
OemToChar_() stürzt bei mir nur bei fehlerhalften/keinen Unicode ab.
Dieser Code liest eine Unicode-Datei mit folgenden Text ein:
Aber die Ausgabe ist mit OemToChar_ fehlerhaft und ohne OemToChar_ korrekt.
Daher ist OemToChar_ bei mir Sinnlos!!!
Dieser Code liest eine Unicode-Datei mit folgenden Text ein:
Hierbei stürzt das OemToChar_ nicht ab, weil Unicode übergeben wird.@€{[]▲▲►►ὢ
Это тест.
Aber die Ausgabe ist mit OemToChar_ fehlerhaft und ohne OemToChar_ korrekt.
Daher ist OemToChar_ bei mir Sinnlos!!!
Code: Alles auswählen
Global Text1.s
Global Text2.s
OpenConsole()
If ReadFile(0, "E:\Unicode_Test.txt")
While Eof(0) = 0
Text1 = ReadString(0,#PB_Unicode)
Text2 = Space(Len(Text1))
OemToChar_(Text1, Text2)
PrintN(Text2)
Wend
CloseFile(0)
Else
MessageRequester("Information","Konnte Datei nicht öffnen!")
EndIf
Input()
CloseConsole()
Betriebssysteme: div. Windows, Linux, Unix - Systeme
no Keyboard, press any key
no mouse, you need a cat
no Keyboard, press any key
no mouse, you need a cat
Re: RunProgram und ReadProgramString will nicht funktioniere
Jetzt haben wir überkreuzt geschrieben
OemToChar_() ist bei dir sinnlos, weil du den Compiler wohl auf Ascii gestellt hast.
Früher oder später muss man sich wohl auf Unicode einstellen, wenn Ascii in den nächsten Versionen schon gestrichen ist.
OemToChar_() ist bei dir sinnlos, weil du den Compiler wohl auf Ascii gestellt hast.
Früher oder später muss man sich wohl auf Unicode einstellen, wenn Ascii in den nächsten Versionen schon gestrichen ist.
Re: RunProgram und ReadProgramString will nicht funktioniere
OemToChar_ funktioniert bei mir unter PB 5.42 LTS mit "Unicode"-Einstellung und ohne dieser Einstellung nicht.
Das ist vollkommen egal. OemToChar_ liefert bei mir nie eine korrekte Ausgabe, weil wahrscheinlich nie eine korrekte Eingabe kommt.
Das ist vollkommen egal. OemToChar_ liefert bei mir nie eine korrekte Ausgabe, weil wahrscheinlich nie eine korrekte Eingabe kommt.
Betriebssysteme: div. Windows, Linux, Unix - Systeme
no Keyboard, press any key
no mouse, you need a cat
no Keyboard, press any key
no mouse, you need a cat