Aktuelle Zeit: 23.08.2019 21:50

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]




Ein neues Thema erstellen Auf das Thema antworten  [ 16 Beiträge ]  Gehe zu Seite Vorherige  1, 2
Autor Nachricht
 Betreff des Beitrags: Re: Programmabsturz / Crash bei OpenWindowedScreen in proced
BeitragVerfasst: 26.11.2018 12:56 
Offline

Registriert: 15.05.2018 20:02
PS: Ich habe das jetzt im meiner Anwendung mal geändert. Funktioniert im Prinzip.

Nachteile im Moment:
Ich muss jetzt am Anfang des Programms schon festlegen wie groß mein Screen werden soll. später kann ich weder eine Resize machen noch einen neuen Screen mit anderer Grösse erzeugen, da das ja anscheinend -ohne Absturz nicht geht.
Das schränkt ein....


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Programmabsturz / Crash bei OpenWindowedScreen in proced
BeitragVerfasst: 26.11.2018 21:26 
Offline
Benutzeravatar

Registriert: 19.10.2006 12:51
Was hast du genau vor?

Soll das ein Spiel werden?
Optionscreen, wo man alles mögliche einstellen kann und dann das Spiel starten kann, so dass erst dann der Grafikscreen öffnet?

Teile es doch auf zwei Binaries auf, so dass quasi zwei unabhängige Prozesse entstehen.
Die erste ist der Optionscreen, die dann die zweite mit entsprechenden Parametern startet. Hätte auch Vorteile, dass du dich nicht bei jedem Testlauf auf's neue durch die Optionen klicken musst :) .

_________________
Bild


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Programmabsturz / Crash bei OpenWindowedScreen in proced
BeitragVerfasst: 29.11.2018 16:19 
Offline

Registriert: 15.05.2018 20:02
Nein, kein Spiel.

Ich habe eine Anwendung die Kurvenverläufe berechnet und dann als Kurvengrafik anzeigt.

Zusätzlich -über Button- biete ich dann noch an aus der Kurve, durch Drehung, eine 3D Figur anzuzeigen damit mein eine räumliche Vorstellung bekommt...

Man kann sich das dann schön hin- und herdrehen und von vorn und hinten anschauen … so die Idee.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Programmabsturz / Crash bei OpenWindowedScreen in proced
BeitragVerfasst: 05.12.2018 03:31 
Offline
Benutzeravatar

Registriert: 19.10.2006 12:51
Achso.

Ist prinzipiell nicht anderes als ein Spiel mit vorgeschaltetem Launcher. :)

Könntest daher trotzdem auf zwei ausführbare Dateien (einmal "Launcher" mit der ganzen Mathematik usw und einmal die 3D-Ausgabe) aufteilen, um das Problem zu umschiffen.

Kannst diese zwei natürlich wieder vereinen.

Dann wird die Engine als zweiter Prozess gestartet.

Wie du die Ausgabedaten rüberbekommst... suche dir was aus:
- Daten als Parameter mitgeben, wenn es nicht zu viele sind
- Temporäre Datei und Pfad zu dieser als Übergabeparameter (diese Variante habe ich für das nachfolgende Beispiel genommen)
- Direkte Kommunikation über stdin/stdout (Ich weiß nicht 100%ig, ob Windows da mitspielt, da dieses AFAIK zwischen Konsolen- und Nicht-Konsolen-Anwendung unterscheidet)
- Network-Library (Echtzeitkommunikation, bei der Server und Client auf demselben Host laufen, also nicht wirklich Netzwerk). Musst dir halt eine Schnittstelle bauen. Mit PB relativ einfach. :)

Beispiel (primitiv, ohne Fehlerhandling):

Code:

Procedure Run3DView()
  ;In echt kommt hier das Ogre-Gedöns rein
  tmpFile$ = ProgramParameter()
  If tmpFile$
    file = ReadFile(#PB_Any,tmpfile$)
    If file
      text$ = ReadString(file)
      CloseFile(file)
      If text$ ;obacht! Die Daten vor Verwendung auf Korrektheit prüfen. Sonst evtl. Sicherheitslücke!
        MessageRequester("Bla","Die Texteingabe ist: "+text$,0) 
      EndIf   
    EndIf
  EndIf
EndProcedure
Procedure runLauncher()
  mainWin = OpenWindow(#PB_Any,#PB_Ignore,#PB_Ignore,512,384,"Launcher",#PB_Window_ScreenCentered)
  textbox = StringGadget(#PB_Any,8,8,256,20,"")
  button = ButtonGadget(#PB_Any,256+8,8,20,20,"Fire!")
  Repeat
    event = WaitWindowEvent()
    If event = #PB_Event_Gadget
      If EventGadget() = button
        text$ = GetGadgetText(textbox)       
        If text$
          tmpPath$ = GetTemporaryDirectory()
          If tmpPath$
            tmpFile$ = tmpPath$ + "purebasic_ogre_bla.dat"  ;Vorsicht! Nicht mit den Tempdateien anderer Programmen kollidieren! In Echt einen eigenen Unterordner verwenden und noch einen Hashwert mit rein (damit mehrere Instanzen möglich sind)!
            file = OpenFile(#PB_Any,tmpFile$)
            WriteString(file,text$)
            CloseFile(file)
           ;Datei wieder löschen nicht vergessen! (mache ich jetzt nicht^^. Der zweite Prozess muss irgendwie an den ersten zurückmelden, dass er die Datei ausgelesen hat und dann weg damit. Oder dem zweiten Prozess die Löschung überlassen)
            If file
              RunProgram(ProgramFilename(), "-view " + tmpFile$,GetCurrentDirectory()) ;Die 3D-Ausgabe starten
            EndIf
          EndIf
        EndIf
      EndIf
    EndIf   
  Until event = #PB_Event_CloseWindow
EndProcedure
If ProgramParameter() = "-view"
  Run3DView()
Else
  RunLauncher()
EndIf
End

_________________
Bild


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Programmabsturz / Crash bei OpenWindowedScreen in proced
BeitragVerfasst: 09.12.2018 14:36 
Offline

Registriert: 15.05.2018 20:02
… oder man müsste mal probieren was passiert wenn man den 3D Kram in einen eignen Thread auslagert... in der Hoffnung das das Programm dann nicht abstürzt wenn man den Thread mehrmals nacheinander startet.. mal sehen.
Das mit der Datenübergabe muss dann natürlich auch bedacht werden.
Danke für die Tipps...


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Programmabsturz / Crash bei OpenWindowedScreen in proced
BeitragVerfasst: 09.12.2018 15:37 
Offline

Registriert: 27.11.2016 18:13
Wohnort: Erzgebirge
Zitat:
der man müsste mal probieren was passiert wenn man den 3D Kram in einen eignen Thread auslagert... in der Hoffnung das das Programm dann nicht abstürzt wenn man den Thread mehrmals nacheinander startet.. mal sehen.


Das wäre fatal falsch!

Das stürzt dann mit eigentlich 100% Sicherheit ab. ;)


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 16 Beiträge ]  Gehe zu Seite Vorherige  1, 2

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 6 Gäste


Sie dürfen keine neuen Themen in diesem Forum erstellen.
Sie dürfen keine Antworten zu Themen in diesem Forum erstellen.
Sie dürfen Ihre Beiträge in diesem Forum nicht ändern.
Sie dürfen Ihre Beiträge in diesem Forum nicht löschen.

Suche nach:
Gehe zu:  

 


Powered by phpBB © 2008 phpBB Group | Deutsche Übersetzung durch phpBB.de
subSilver+ theme by Canver Software, sponsor Sanal Modifiye