Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

2 Includes benötigen die selbe Funktion

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
-schumi-



Anmeldungsdatum: 28.10.2009
Beiträge: 131
Wohnort: Südbayern

BeitragVerfasst am: 31.12.2010, 17:18    Titel: 2 Includes benötigen die selbe Funktion Antworten mit Zitat

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 missbilligen

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 lächeln
-schumi-
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
XOR



Anmeldungsdatum: 23.07.2010
Beiträge: 161

BeitragVerfasst am: 31.12.2010, 17:45    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Flo
aka kleiner_hacker


Anmeldungsdatum: 23.06.2006
Beiträge: 1210

BeitragVerfasst am: 31.12.2010, 17:58    Titel: Re: 2 Includes benötigen die selbe Funktion Antworten mit Zitat

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 ( grinsen ), 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 lächeln
_________________
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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Sebastian
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 5969
Wohnort: Deutschland

BeitragVerfasst am: 31.12.2010, 18:07    Titel: Antworten mit Zitat

Wenn man Mehrfachdeklarationen bei Includes vermeiden möchte, kann man ja mit Präprozessor-Direktiven arbeiten, siehe z. B. #IFNDEF. Am besten mal in bestehende Header-Dateien hineinschauen.
Über Präprozessor-Anweisungen lässt sich vermeiden, dass Includes mehrmals eingebunden werden, was zu einem Compilezeit-Fehler führen würde.
_________________

Die gefährlichsten Familienclans | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Flo
aka kleiner_hacker


Anmeldungsdatum: 23.06.2006
Beiträge: 1210

BeitragVerfasst am: 31.12.2010, 18:09    Titel: Antworten mit Zitat

#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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
-schumi-



Anmeldungsdatum: 28.10.2009
Beiträge: 131
Wohnort: Südbayern

BeitragVerfasst am: 31.12.2010, 18:46    Titel: Antworten mit Zitat

Oha, da ging ja schnell - Danke vielmals!! lächeln

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 grinsen

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 zwinkern

Nochmal vielen Dank für die Hilfe!
-schumi-
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC. Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
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.

 Impressum :: Datenschutz