AppTerminate?

Übersicht BlitzMax, BlitzMax NG Allgemein

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen

 

#Reaper

Newsposter

Betreff: AppTerminate?

BeitragMo, Jul 30, 2007 23:23
Antworten mit Zitat
Benutzer-Profile anzeigen
Irgendwie habe ich das Gefühl, das AppTerminate() nicht richtig funktioniert. Zu mindestens was Linux angeht.
Unter Linux (Console) lassen sich ja Programme entweder mit Strg+C oder mit Q beenden. Nur bei Q sollte ja mal rein theoretisch eventuell AppTerminate() etwas zurück geben, tut es aber nicht. Aber wie kann man denn dann sonst abfragen, ob Q gedrückt wurde. KeyHit() gibt nur 0 zurück.
Und ehrlich gesagt hab ich noch nie bemerkt, das AppTerminate() was zurückgegeben hat. Ich bezweifel auch mal, das jedes Programm sofort gekillt wird..? :-/

Oder habe ich da etwa was falsch verstanden?
AMD Athlon 64 3500+, ATI AX800 Pro/TD, 2048 MB DRR 400 von Infineon, ♥RIP♥ (2005 - Juli 2015 -> sic!)
Blitz3D, BlitzMax, MaxGUI, Monkey X; Win7

Goodjee

BeitragDi, Jul 31, 2007 0:33
Antworten mit Zitat
Benutzer-Profile anzeigen
appterminate bedeutet, wenn man auf das [x] klickt.
 

Dreamora

BeitragDi, Jul 31, 2007 1:39
Antworten mit Zitat
Benutzer-Profile anzeigen
In der Konsole wird kein Event erzeugt -> Anwendung bekommt auch nix mit.
KeyHit ist noch simpler: Existiert nur bei den wenigen Gadgets die überhaupt einen Input erlauben der nicht direkt als Text endet (Canvas vor allem, oder Graphics falls man kein MaxGUI hat).
Wenn was anderes aktiv ist, gibts keine Key / Mouse Events.

Aber wenn du eine "Ende der Anwendung Reaktion" willst, einfach OnEnd( func() ) nutzen.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.
 

#Reaper

Newsposter

BeitragDi, Jul 31, 2007 12:01
Antworten mit Zitat
Benutzer-Profile anzeigen
Mhh.. naja, dann hab ich die Benutzung dieser Funktion wohl doch falsch verstanden :-/
Also das mit OnEnd() funktioniert auch nicht Sad

Kennt ihr vielleicht eine Möglichkeit, Rückgaben der Console an das Programm abzufragen? (Also unter Linux)
Geht ja irgendwie, gibt ja auch Consolenprogramme wie "top", welche man auch per Tastendruck steuern kann. Oder vielleicht einer, wo ich den Sourcecode von "top" oder ähnlichem finde?
(Input ist ja auch schwachsinnig, hält ja das Programm an, und ich bezweifle das die was mit Threading gelöst haben :-/ )
AMD Athlon 64 3500+, ATI AX800 Pro/TD, 2048 MB DRR 400 von Infineon, ♥RIP♥ (2005 - Juli 2015 -> sic!)
Blitz3D, BlitzMax, MaxGUI, Monkey X; Win7
 

Dreamora

BeitragDi, Jul 31, 2007 12:35
Antworten mit Zitat
Benutzer-Profile anzeigen
Du musst STDIN auslesen um die Tasteneingaben in der Konsole abzufragen.
Ob das in BM selbst geht weiss ich nicht, mit wenigen Zeilen in C gehts auf jeden Fall Smile
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.
 

#Reaper

Newsposter

BeitragDi, Jul 31, 2007 12:42
Antworten mit Zitat
Benutzer-Profile anzeigen
Stdin (bzw. Input() verwendet das ja..) hält ja jedesmal das Programm auf Sad
Vermutlich braucht man da wohl doch Threading... und obwohl es ja nur wirklich eine kleine Funktion wäre, die Parallel laufen müsste, weiß ich nicht, trotz BtbN's Modul, wie ich das machen kann :-/
Wäre ja auch nur für Linux Sad

Ich schätze mal, das die paar Zeilen C sind vermutlich eh so, oder so ähnlich dann auch ein einem BMax-Modul? Wink
AMD Athlon 64 3500+, ATI AX800 Pro/TD, 2048 MB DRR 400 von Infineon, ♥RIP♥ (2005 - Juli 2015 -> sic!)
Blitz3D, BlitzMax, MaxGUI, Monkey X; Win7
 

Dreamora

BeitragDi, Jul 31, 2007 13:15
Antworten mit Zitat
Benutzer-Profile anzeigen
STDIN hält das Programm eigentlich nicht auf, du kannst den Buffer auch ohne Input auslesen.
Das ist lediglich BM (Blitz allgemein) eigene Implementation die es Aufhält bzw. liegt daran, dass Windows nicht ganz sooo konsolen orientiert ist wie Linux.

Du kannst aber sonst auch die eigene Prozess Pipe auslesen, wenn du net was auf Basis von STDIN auslesen willst. ( scanf())

In allen Fällen: Eventbasierend geht nicht, du wirst also in jedem Falle eine Loop machen müssen und die Daten dort auslesen. Denn BM generiert keine Events ohne UI Elemente.

Hier ein kleiner Link der dir sicher Hilft Smile

http://en.wikipedia.org/wiki/Scanf

statt %d einfach %s
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.
 

#Reaper

Newsposter

BeitragDi, Jul 31, 2007 13:54
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke Smile

Ich habe noch nie ein Modul selber geschrieben, und bekomme meins nicht Kompiliert..
Ich habe auch d-bug's Tutorial gelesen, müsste insofern doch alles richtig sein?


ScanF.bmx
Code: [AUSKLAPPEN]
SuperStrict

Module Reaper.ScanF
ModuleInfo "Version: 0.01"
ModuleInfo "Author: #Reaper"
ModuleInfo "License: Public Domain"
ModuleInfo "History: 0.01 Creating Module..."

Import "extern.c"


Extern
   Function BBScanf:Int() = "BBScanf"
End Extern


Und extern.c:
Code: [AUSKLAPPEN]
#include <stdio.h>

int BBScanf(void) {
  int n;
  scanf("%s", &n); //Oder doch %d ?
  return n;
}


Ich hoffe dass das alles richtig ist :-/ Embarassed
Der Kompiler gibt einfach nur eine leere Zeile aus, keine Meldung oder sonstiges, das verwirrt mich Sad
Und das alles ist in: BlitzMax\mod\Reaper.mod\ScanF.mod\
Sollte demnach auch richtig sein..? Confused
AMD Athlon 64 3500+, ATI AX800 Pro/TD, 2048 MB DRR 400 von Infineon, ♥RIP♥ (2005 - Juli 2015 -> sic!)
Blitz3D, BlitzMax, MaxGUI, Monkey X; Win7
 

Dreamora

BeitragDi, Jul 31, 2007 14:02
Antworten mit Zitat
Benutzer-Profile anzeigen
du brauchst garkein modul

du kannst
Code: [AUSKLAPPEN]

Import "extern.c"


Extern
   Function BBScanf:Int() = "BBScanf"
End Extern


machen, die c datei in den gleichen Ordner packen und das wars Smile
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.
 

#Reaper

Newsposter

BeitragDi, Jul 31, 2007 14:15
Antworten mit Zitat
Benutzer-Profile anzeigen
Gut, nun kann ich es zwar ausführen, aber mein Programm wird immernoch angehalten Sad
Oder mache ich immernoch etwas falsch?
AMD Athlon 64 3500+, ATI AX800 Pro/TD, 2048 MB DRR 400 von Infineon, ♥RIP♥ (2005 - Juli 2015 -> sic!)
Blitz3D, BlitzMax, MaxGUI, Monkey X; Win7
 

Dreamora

BeitragDi, Jul 31, 2007 14:25
Antworten mit Zitat
Benutzer-Profile anzeigen
wie sieht der rest deines programmes aus?

Konsolenanwendungen sind drauf ausgelegt eigentlich nichts zu tun bis etwas rein kommt als befehl
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.
 

#Reaper

Newsposter

BeitragDi, Jul 31, 2007 14:29
Antworten mit Zitat
Benutzer-Profile anzeigen
Mein Test-Programm sieht ganz einfach so aus:

Code: [AUSKLAPPEN]
Framework BRL.Blitz
Import BRL.StandardIO

Import "ScanF.c"

Extern
   Function BBScanF:Int() = "BBScanf"
End Extern

Repeat
   Print BBScanF()
   Print "-"
Forever



Naja, aber nicht jedes Consolenprogramm, wie z.B. "top" muss/soll ja auch unentwegt etwas ausgeben, und gleichzeitig auch Inputs auswerten (wie z.B. Q zum Beenden, oder andere Tasten um etwas einzustellen)
AMD Athlon 64 3500+, ATI AX800 Pro/TD, 2048 MB DRR 400 von Infineon, ♥RIP♥ (2005 - Juli 2015 -> sic!)
Blitz3D, BlitzMax, MaxGUI, Monkey X; Win7
 

#Reaper

Newsposter

BeitragDo, Aug 02, 2007 15:17
Antworten mit Zitat
Benutzer-Profile anzeigen
Also evt. hat sich das soweit erledigt. Ich hab nämlich herausgefunden, dass es für Linux eine extra Term-Lib gibt.

z.B. sowas in C:

Code: [AUSKLAPPEN]
#include <curses.h>
#include <term.h>

int setupterm(const char *term, int fd, int *error_return);

//Ein Aufruf der Funktion
int ret = 0;
ret = setupterm (NULL, fileno (stdin), NULL);

Als Framework dient dann ncurses

(Das hab ich von hier: http://www.pronix.de/pronix-388.html)

Nur bekomm ich es einfach nicht hin, das in BB einzubinden.
Seltsammer weiße meint er bei
Import "-lterm", das es das nicht gibt, aber der C Include von term.h funktioniert.

Hab die Includes mal in eine .c gepackt, scheint insofern dann zu funktionieren, zu mindestens meckert er da nicht...

Aber die Extern-Deklinaration bekomm ich nicht hin Sad
Code: [AUSKLAPPEN]
Import "Term.c"
Extern
   Function setupterm:Int(term$z, fx:Int, errro_return:Int)
End Extern


Die BM-Hilfe ist echt nicht hilfreich... Sad
AMD Athlon 64 3500+, ATI AX800 Pro/TD, 2048 MB DRR 400 von Infineon, ♥RIP♥ (2005 - Juli 2015 -> sic!)
Blitz3D, BlitzMax, MaxGUI, Monkey X; Win7
 

Dreamora

BeitragDo, Aug 02, 2007 15:42
Antworten mit Zitat
Benutzer-Profile anzeigen
import "-lterm" erwartet dass die .a datei in blitzmax/lib ist

und das geht nur wenn du von Term eine GCC 3.3 version findest, denn 4.X kannst du nicht gegen 3.3 linken was von BM benutzt wird. dann müsstest du die term lib selbst importieren und mit deinem Programm kompilieren oder mit GCC 3.3 eine entsprechende Version kompilieren.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.
 

#Reaper

Newsposter

BeitragDo, Aug 02, 2007 16:04
Antworten mit Zitat
Benutzer-Profile anzeigen
Mhh.. naja.. kann ich denn nicht den GCC 3.3 einfach auf GCC 4 linken? In Windows geht ja auch das neuste MinGW mit BMax.. :-/
Naja, term.h ist angeblich eh schon uralt, sollte also eigentlich insofern kein Problem sein (man freu ich mich schon auf das BMax Update..)
AMD Athlon 64 3500+, ATI AX800 Pro/TD, 2048 MB DRR 400 von Infineon, ♥RIP♥ (2005 - Juli 2015 -> sic!)
Blitz3D, BlitzMax, MaxGUI, Monkey X; Win7
 

Dreamora

BeitragDo, Aug 02, 2007 16:08
Antworten mit Zitat
Benutzer-Profile anzeigen
Nur das der neueste MingW unter Windows GCC 3.4 ist oder so.
Es gibt keinen GCC 4 auf Windows sofern du nicht selbst 6 - 12 Stunden kompilierst.


Aber gibt einige BM User die meinen sie hätten BM mit GCC4 kompiliert. Du musst nur alle Module rekompilieren, ohne gehts natürlich nicht.
und die Term libraries müssen korrekt installiert sein ... (falls du sie selbst kompilierst: make und dann make install)
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.
  • Zuletzt bearbeitet von Dreamora am Do, Aug 02, 2007 16:12, insgesamt einmal bearbeitet
 

#Reaper

Newsposter

BeitragDo, Aug 02, 2007 16:12
Antworten mit Zitat
Benutzer-Profile anzeigen
Mist Sad

Das ist dann wohl doch zu hoch für mich, schade Sad
AMD Athlon 64 3500+, ATI AX800 Pro/TD, 2048 MB DRR 400 von Infineon, ♥RIP♥ (2005 - Juli 2015 -> sic!)
Blitz3D, BlitzMax, MaxGUI, Monkey X; Win7
 

Dreamora

BeitragDo, Aug 02, 2007 16:14
Antworten mit Zitat
Benutzer-Profile anzeigen
Ctrl-D in MaxIDE ist zu hoch? ^^

Was den Rest betrifft: Wenn du mit Linux arbeiten willst vor allem als Programmierer, musst du lernen wie man mit den Compilern etc umgeht. Ohne kannst du das Programmierertum auf dem Bastel OS streichen, das ist nicht einfach ein wenig Code, compile und es geht für gewöhnlich, sofern du nicht etwas nutzt was als Teil der Distribution mitinstalliert wurde.
Sprich du musst effektiv zum Programmierer werden, nicht zu "Blitz Hacker"
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.
 

#Reaper

Newsposter

BeitragDo, Aug 02, 2007 16:19
Antworten mit Zitat
Benutzer-Profile anzeigen
Öhm...^^° Embarassed

Also ich muss doch aber vorher GCC-3.3 auf GCC-4.1 linken, oder?
Nur bin ich mir nicht sicher, ob das der richtige Ordner ist: /usr/bin

Naja.. und wie das ganze mit den Compilern funktioniert weiß ich echt noch nicht Sad
Vorallem auch nicht, wie und wo die da Dateien (lib-Ordner etc.) haben und so.. Embarassed
AMD Athlon 64 3500+, ATI AX800 Pro/TD, 2048 MB DRR 400 von Infineon, ♥RIP♥ (2005 - Juli 2015 -> sic!)
Blitz3D, BlitzMax, MaxGUI, Monkey X; Win7
 

Dreamora

BeitragDo, Aug 02, 2007 16:35
Antworten mit Zitat
Benutzer-Profile anzeigen
Darum nutzen viele make files wo man am schluss mit make install das System selbst installieren lassen kann Smile

Und ja, müsstest du umlinken oder BM ein wenig austricksen, sprich BMK umschreiben müsste eigentlich sonst auch reichen um einfach gcc statt gcc-3.3 aufzurufen
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group