Plugins für meine App - Wie ?

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
PMV
Beiträge: 2765
Registriert: 29.08.2004 13:59
Wohnort: Baden-Württemberg

Beitrag von PMV »

Hm, ich habs jetzt nicht getestet aber wenn das verhalten so ist, wie du
sagst ... und das ist wohl recht logisch ... dann liegt das darann, weil
das Programm erst beendet wird und dann du die Strings ausließt. Versuch
erst mal das ReadProgramString() in eine Schleife zu bauen und wenn das
nicht hilft, darf die schleife erst verlassen werden, wenn das Programm
beendet wurde.

MFG PMV
alte Projekte:
TSE, CWL, Chatsystem, GameMaker, AI-Game DLL, Fileparser, usw. -.-
Benutzeravatar
scholly
Beiträge: 793
Registriert: 04.11.2005 21:30
Wohnort: Düsseldorf

Beitrag von scholly »

Ok, Schleife eingebaut (siehe umseitigen Code), aber nu kommt nur das erste Zeichen jeder Zeile an :freak:
Ich bin blutiger PB-Anfänger.
seit 17.12.08: PB 4.3 unter XP Home(SP3)
Benutzeravatar
PMV
Beiträge: 2765
Registriert: 29.08.2004 13:59
Wohnort: Baden-Württemberg

Beitrag von PMV »

Nutzt du wirklich pb 4.20 wie in deiner Signatur angegeben? Bei mir
funktionierts nämlich wie erwartet -.-

MFG PMV
alte Projekte:
TSE, CWL, Chatsystem, GameMaker, AI-Game DLL, Fileparser, usw. -.-
Benutzeravatar
edel
Beiträge: 3667
Registriert: 28.07.2005 12:39
Computerausstattung: GameBoy
Kontaktdaten:

Beitrag von edel »

Versuch es mal so :

Code: Alles auswählen

If OpenWindow(0, 100, 200, 195, 260, "Plugin-test", #PB_Window_SystemMenu) 

  hProcess = RunProgram("plugin.exe","Das Schweigen der Lämmer",GetCurrentDirectory(),#PB_Program_Open|#PB_Program_Read|#PB_Program_Hide) 
  
  Repeat 
    Event = WaitWindowEvent(1) 

    If hProcess 
      
      While AvailableProgramOutput(hProcess) 
        Debug ReadProgramString(hProcess) 
      Wend     
      
    EndIf 
    
    If Event = #PB_Event_CloseWindow  ; If the user has pressed on the close button 
      Quit = 1 
    EndIf 

  Until Quit = 1 
  
  CloseProgram(hProcess)
  
EndIf 

End
Benutzeravatar
PMV
Beiträge: 2765
Registriert: 29.08.2004 13:59
Wohnort: Baden-Württemberg

Beitrag von PMV »

Und was ist, wenn das "PlugIn" ins stocken gerät und mit dem schreiben
der Daten nicht nach kommt? ... dann würde AvailableProgramOutput() null
zurück geben und komplete Zeilen fehlen.

Was ich nicht verstehe ist, das ReadProgramString() nur das erste Zeichen
ausließt ... wo der Befehl doch eigentlich nur ganze Zeilen zurück gibt.
Wenn scholly die PB4.20 verwendet sollte er eventuell mal die aktuelle
PB4.30 Beta 5 versuchen.

MFG PMV
alte Projekte:
TSE, CWL, Chatsystem, GameMaker, AI-Game DLL, Fileparser, usw. -.-
Benutzeravatar
scholly
Beiträge: 793
Registriert: 04.11.2005 21:30
Wohnort: Düsseldorf

Beitrag von scholly »

Uuups...

@PMV:
Sig korrigiert :oops:
Ich habs aber eben nochmal mit der 4.2 getestet - selbes Ergebnis :(

@edel:
Da kommt noch weniger, aber ich bastel ma an meiner Schleife rum..

Wenn ich den Fenster-Kram rauswerf, wirds auch nich besser :(
Ich bin blutiger PB-Anfänger.
seit 17.12.08: PB 4.3 unter XP Home(SP3)
Benutzeravatar
edel
Beiträge: 3667
Registriert: 28.07.2005 12:39
Computerausstattung: GameBoy
Kontaktdaten:

Beitrag von edel »

und warum kommt da nichts? Wurde das Programm ueberhaupt
gestartet? Welchen Wert hat hProcess?

Davon mal ab, halte ich diesen Weg nicht fuer sehr brauchbar, man muss
ja immer nachgucken ob auch etwas geschrieben wurde. Mit einer
Scriptsprache (z.b. Lua) oder einer DLL waere das etwas komfortabler.
Benutzeravatar
scholly
Beiträge: 793
Registriert: 04.11.2005 21:30
Wohnort: Düsseldorf

Beitrag von scholly »

Problem gelöst, beim aufrufenden Code war das Unicode-Kästchen nicht gecheckt, keine AHnung wieso :oops:

@edel:
Das ist doch nur ein Test für mich, um zu testen, ob/wie es funktioniert.
Mit welcher Sprache jemand anderes ein Plugin schreibt, kann ich doch nicht wissen.
Ich kann nur die Schnittstelle zur Verfügung stellen.
Das sollte aber aus meinen bisherigen Ausführungen erkennbar sein /:->
Ich bin blutiger PB-Anfänger.
seit 17.12.08: PB 4.3 unter XP Home(SP3)
Antworten