AppTerminate?
Übersicht

#ReaperNewsposterBetreff: AppTerminate? |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
appterminate bedeutet, wenn man auf das [x] klickt. | ||
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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. |
#ReaperNewsposter |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Mhh.. naja, dann hab ich die Benutzung dieser Funktion wohl doch falsch verstanden :-/
Also das mit OnEnd() funktioniert auch nicht ![]() 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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 ![]() |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
#ReaperNewsposter |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Stdin (bzw. Input() verwendet das ja..) hält ja jedesmal das Programm auf ![]() 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 ![]() Ich schätze mal, das die paar Zeilen C sind vermutlich eh so, oder so ähnlich dann auch ein einem BMax-Modul? ![]() |
||
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 ![]() 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. |
#ReaperNewsposter |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Danke ![]() 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 :-/ ![]() Der Kompiler gibt einfach nur eine leere Zeile aus, keine Meldung oder sonstiges, das verwirrt mich ![]() Und das alles ist in: BlitzMax\mod\Reaper.mod\ScanF.mod\ Sollte demnach auch richtig sein..? ![]() |
||
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 ![]() |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
#ReaperNewsposter |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Gut, nun kann ich es zwar ausführen, aber mein Programm wird immernoch angehalten ![]() 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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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. |
#ReaperNewsposter |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
#ReaperNewsposter |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 ![]() 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... ![]() |
||
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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. |
#ReaperNewsposter |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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
#ReaperNewsposter |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Mist ![]() Das ist dann wohl doch zu hoch für mich, schade ![]() |
||
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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. |
#ReaperNewsposter |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Öhm...^^° ![]() 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 ![]() Vorallem auch nicht, wie und wo die da Dateien (lib-Ordner etc.) haben und so.. ![]() |
||
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Darum nutzen viele make files wo man am schluss mit make install das System selbst installieren lassen kann ![]() 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. |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group