Hallo!!
Ich habe vor kurzem festgestellt, dass Read/Writeprogramstring bei manchen consolen Programmen scheinbar erst funktioniert, nachdem das Programm beendet wurde.
Die schreibfunktionen werden ausgeführt und haben auch Auswirkungen, allerdings scheint das Auslesen des Texts aus der Console erst nach dem Beenden der Anwendung zu funktionieren.
Dieses Problem taucht bei consolen Programmen auf, die NICHT in Purebasic geschrieben wurden.
Habe diverse Programme getestet immer mit dem Problem, dass die Textausgabe immer erst nach beenden des gestarteten Programms erfolgte.
Hier mein Thread - dort finden sie auch die Binary, bei der das beschriebene eintritt.
Viele Grüße, benji
Consolen-Programme Lesen/schreiben teils inkompatibel
- 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
Betriebssystem?
PureBasic Version?
evt. Computerausstattung
Beispielcode?
Dem Link kann ich nur entnehmen, das Du das Eventhandling noch nicht
verstanden hast.
http://www.chiark.greenend.org.uk/~sgta ... gs-de.html
PureBasic Version?
evt. Computerausstattung
Beispielcode?
Dem Link kann ich nur entnehmen, das Du das Eventhandling noch nicht
verstanden hast.
http://www.chiark.greenend.org.uk/~sgta ... gs-de.html
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.

OS: Win XP SP3ts-soft hat geschrieben:Betriebssystem?
PureBasic Version?
evt. Computerausstattung
Beispielcode?
Dem Link kann ich nur entnehmen, das Du das Eventhandling noch nicht
verstanden hast.
http://www.chiark.greenend.org.uk/~sgta ... gs-de.html
PB.: 4.30
der gag ist aber, dass der "Fehler" nur bei manchen anwendungen auftaucht
Code hier - ein und der selbe Code - unterschiedliche Anwendungen - unterschiedliches Ergebnis:
Code: Alles auswählen
UIN.s = "476077258" ; 476077258 465879999
pw.s = "123456"
*mem = AllocateMemory(2000)
hwnd = OpenWindow(0,0,0,400,300,"Test",#PB_Window_ScreenCentered|#PB_Window_SystemMenu)
CreateGadgetList(hwnd)
List = ListIconGadget(#PB_Any,5,5,390,290,"Test",350)
anz = 0
zeile$ = ""
listid = GadgetID(List)
; prog = RunProgram("imcore/bin/base/accbuddy.exe" ,"" , "" , #PB_Program_Open | #PB_Program_Read |#PB_Program_Write ) ; Cpp (?)Console-Program -> erst am Ende der Runtime wird der Text ausgegeben
prog = RunProgram("testconsole2.exe" ,"", "" , #PB_Program_Open | #PB_Program_Read | #PB_Program_Error |#PB_Program_Write) ;PB-Programm -> Text wird in echtzeit ausgegeben
; prog = RunProgram("cmd.exe" ,"/k testconsole2.exe", "D:\Programmierung\Purebasic\source" , #PB_Program_Open | #PB_Program_Read ) ;"umweg" über die CMD -> erst am Ende der Runtime wird der Text ausgegeben
If prog
; CreateThread(@readtext(), prog)
While ProgramRunning(prog)
zeile$ = ReadProgramString(prog)
AddGadgetItem(List, -1, zeile$)
anz=SendMessage_(listid, #LVM_GETITEMCOUNT, 0, 0) - 1
SendMessage_(listid, #LVM_ENSUREVISIBLE, anz, #True)
While WindowEvent() : Wend
Wend
EndIf
CloseProgram(prog)
Repeat
event = WaitWindowEvent()
Until Event = #PB_Event_CloseWindow
End - 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
Der Code zur Testconsole2 wäre zwar auch nett, aber das Eventhandling,
wo Ereignisse verschluckt werden ist eine Krücke, da kann man nicht von
einem Bug sprechen.
Du solltest das Fenster disablen, verstecken oder ähnlich, während Du die
Ausgaben liest. Erst danach das Fenster aktualisieren.
Oder Du verwendest Threads und kommunizierst mit dem Eventloop per
Messages (für Anfänger nicht geeignet.)
Ist IMHO kein Bug.
// Nachtrag:
siehe freak
wo Ereignisse verschluckt werden ist eine Krücke, da kann man nicht von
einem Bug sprechen.
Du solltest das Fenster disablen, verstecken oder ähnlich, während Du die
Ausgaben liest. Erst danach das Fenster aktualisieren.
Oder Du verwendest Threads und kommunizierst mit dem Eventloop per
Messages (für Anfänger nicht geeignet.)
Ist IMHO kein Bug.
// Nachtrag:
siehe freak
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.
