 |
Das deutsche QBasic- und FreeBASIC-Forum Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
-schumi-

Anmeldungsdatum: 28.10.2009 Beiträge: 131 Wohnort: Südbayern
|
Verfasst am: 31.12.2010, 17:18 Titel: 2 Includes benötigen die selbe Funktion |
|
|
Hallo,
ich hab schon länger nicht mehr FB-programmiert - merkt man^^
Mein Problem:
Ich hab eine:
- Hauptprogramm.bas
- Konsole_io.bas
- connect.bas
In der Konsole.bas und der connect.bas sind Funktionen ausgelagert, um den Code übersichtlicher zu machen.
Jetzt benötige ich aber in den 2 Includes eine Funktion um Fehlermeldungen auszugeben, die exakt identisch ist.
Was ich ausprobiert hab:
In der Konsole_io.bas ist die Funktion drin, in connect.bas steht am Anfang >>>#include "connect.bas"<<<
Hat leider nicht funktioniert
Im Moment ist des so, das beide Includes ihre eigene Fehlermeldungs-Funktion haben, die aber exakt identisch sind (nur andere Namen, sonst meckert der FBC wieder). Funktioniert so weit, nur ist das natürlich Verschwendung...
Gibts eine bessere Möglichkeit?
Schon mal Danke
-schumi- |
|
Nach oben |
|
 |
XOR
Anmeldungsdatum: 23.07.2010 Beiträge: 161
|
Verfasst am: 31.12.2010, 17:45 Titel: |
|
|
Zitat: |
In der Konsole_io.bas ist die Funktion drin, in connect.bas steht am Anfang >>>#include "connect.bas"<<<
|
warum includest du in connect.bas, connect.bas?
oder sollte das >>>#include "Konsole_io.bas"<<<
Wenn ich das richtig verstehe, du hast 2 include datein, in beiden ist eine Funktion fuer Fehler, du willst aber nur eine Funktion haben?
Fals ich so richtig liege konntest du in der include datein, in der die ErrorFunktion nach der der anderen datei definirt wird, mit #define Namen_der_Errorfunction(P) Namen_der_Errorfunction_in_der_anderen_datei(P)
und die Function wegmachen.
also ungefahr so
im Hauptprogramm.bas steht am anfang #include "connect.bas"
im connect.bas steht am anfang #include "Konsole_io.bas"
dann schreibst du in "connect.bas" nach denn #include "Konsole_io.bas"
#define Namen_der_Errorfunction_in_Konsole_io.bas(P) Namen_der_Errorfunction_in_connect.bas(P)
und lasst die Function in connect.bas weg. |
|
Nach oben |
|
 |
Flo aka kleiner_hacker
Anmeldungsdatum: 23.06.2006 Beiträge: 1210
|
Verfasst am: 31.12.2010, 17:58 Titel: Re: 2 Includes benötigen die selbe Funktion |
|
|
also, wenn du nur diese drei bas-dateien ohne irgendwelche bi-s hast, hast du vermutlich in der Hauptprogramm.bas zwei includes, die die beiden anderen bas-dateien includen.
WENN das stimmt:
das ist pöhze, das macht man nicht
ich habs auch mal gemacht, und das ist ein einziges durcheinander.
besser wäre es, zu den .bas-dateien jeweils eine .bi zu erstellen, welche nur die DECLARE FUNCTION etc enthalten, während die .bas nur die implementierungen, also FUNCTION foo() <code> END FUNCTION enthalten
hat auch bei größeren projekten den vorteil, das bei ner kleinen änderung nicht gleich ALLES neukompiliert werden muss.
besser wäre es also, das wie grade beschrieben umzubauen
wenn du allerdings (verständlicherweise) dafür zu faul bist ( ), dann definiere doch die ausgabe-funktion einfach VOR den beiden include "foo.bas"-zeilen. dann können die geincludeten codes die funktion sehen und aufrufen.
END
-------------------
WENN das nicht stimmt (du also die .bas-dateien nicht in der main.bas includest):
schreib doch einfach eine print_error(foo as string)-funktion in eine neue datei namens print_error.bas. dann das passende DECLARE SUB ins print_error.bi. dann bei allen .BAS-dateien, die diese funktion nutzen wollen die print_error.bi ganz oben includen. und alles zusammenlinken
so macht mans normal, und so isses auch schön sauber  _________________ MFG
Flo
Satoru Iwata: Wer Spaß am Spielen hat, fragt nicht nach Grafik.
zum korrekten Verstaendnis meiner Beitraege ist die regelmaessige Wartung des Ironiedetektors unerlaesslich. |
|
Nach oben |
|
 |
Sebastian Administrator

Anmeldungsdatum: 10.09.2004 Beiträge: 5969 Wohnort: Deutschland
|
|
Nach oben |
|
 |
Flo aka kleiner_hacker
Anmeldungsdatum: 23.06.2006 Beiträge: 1210
|
Verfasst am: 31.12.2010, 18:09 Titel: |
|
|
#include once tut das auch soweit ich weiß.
aber, stimmt, per Präprozessor ist das schöner weil sicherer _________________ MFG
Flo
Satoru Iwata: Wer Spaß am Spielen hat, fragt nicht nach Grafik.
zum korrekten Verstaendnis meiner Beitraege ist die regelmaessige Wartung des Ironiedetektors unerlaesslich. |
|
Nach oben |
|
 |
-schumi-

Anmeldungsdatum: 28.10.2009 Beiträge: 131 Wohnort: Südbayern
|
Verfasst am: 31.12.2010, 18:46 Titel: |
|
|
Oha, da ging ja schnell - Danke vielmals!!
Also ich habs jetz mal so gelöst:
Hauptprogramm.bas:
Code: | #include "connect.bi"
#include "konsole_io.bi"
#include once "global.bi" |
konsole_io.bas:
Code: | #include once "global.bi" |
connect.bas:
Code: | #include once "global.bi" |
und in der global.bi bzw. global.bas ist der Errorhandler drin
ahja, und das
"In der Konsole_io.bas ist die Funktion drin, in connect.bas steht am Anfang >>>#include "connect.bas"<<< "
hätte tatsächlich
"In der Konsole_io.bas ist die Funktion drin, in connect.bas steht am Anfang >>>#include "konsole_io.bas"<<< "
heißen sollen
Nochmal vielen Dank für die Hilfe!
-schumi- |
|
Nach oben |
|
 |
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
|