modul erstellen

Übersicht BlitzMax, BlitzMax NG Allgemein

Neue Antwort erstellen

 

FredFeuerstein

Betreff: modul erstellen

BeitragFr, Dez 28, 2007 13:40
Antworten mit Zitat
Benutzer-Profile anzeigen
hallo,

ich möchte gerne ein modul erstellen, habe aber jetzt folgendes problem:
in meiner "hauptdatei" steht
Code: [AUSKLAPPEN]

    Module [modulname]
    ...
    Import "[dateiname1].bmx"
    Import "[dateiname2].bmx"
    ...


mein problem ist nun das ich in der datei [dateiname1].bmx sachen aus der datei [dateiname2].bmx benötige und umgekehrt. deswegen habe ich in der datei [dateiname2].bmx stehen
Code: [AUSKLAPPEN]

    Import "[dateiname1].bmx"

und in der datei [dateiname1].bmx stehen
Code: [AUSKLAPPEN]

    Import "[dateiname2].bmx"

jetzt tut der compiler aber leider meckern und sagt mir das er die datei ".bmx/[dateiname1].bmx.[...]" nicht öffnen könne. gut, verstehe ja sogar das er diese nicht öffnen kann, weil sie ja eben noch nicht existiert.

die frage ist halt jetzt, wie kann ich das ganze nun lösen? komme ich eventuell nicht drum herum alle sachen in eine datei zu kopieren, oder gibt es so was wie einen "header" den ich erstellen und dann includieren bzw. importieren kann, oder welche möglichkeiten habe ich sonst?

im voraus schon mal danke für eure mühen
 

Dreamora

BeitragFr, Dez 28, 2007 13:48
Antworten mit Zitat
Benutzer-Profile anzeigen
ersetz die 2 import mit include

wenn sie dinge von einander benötigen müssen sie in der gleichen BMX sein beim compilieren, was mittels Include erreicht werden kann.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.
 

FredFeuerstein

BeitragFr, Dez 28, 2007 14:10
Antworten mit Zitat
Benutzer-Profile anzeigen
ok, erst mal danke.
habe deinen vorschlag so befolgt. danach hat aber mein "lieber" compiler gemeint, weil ich noch weitere Imports in den dateien stehen habe, Import müßte am anfang der datei stehen. gut habe ich mir gedacht, ersetzt du eben diese Imports auch noch durch Includes, hat so weit auch geklappt.
Nun meint das dumme ding aber ich hätte jetzt einen doppelten identifier, hmmm. jetzt bin ich zwar etwas weiter, funktionieren tut es aber leider immer noch nicht Sad
hättest nicht eventuell noch eine gute idee für mich Very Happy
 

FredFeuerstein

BeitragFr, Dez 28, 2007 14:23
Antworten mit Zitat
Benutzer-Profile anzeigen
dann hätte ich auch direkt noch eine frage Smile

benötige in der einen datei TList, deshalb habe ich dort auch
Code: [AUSKLAPPEN]

    Import BRL.LinkedList

gemacht. aber aus den oben erwähnten gründen habe ich dann das Import auch durch Include ersetzen wollen, wurde aber dann darauf hingewiesen das der compiler einen String erwartet aber einen Identifier bekommt. gut also dachte ich mir machst du anführungszeichen drum herum also
Code: [AUSKLAPPEN]

    Include "BRL.LinkedList"

hat leider auch nicht ganz funktioniert, also habe ich noch ein .bmx dran gehängt. jetzt sagt er mir aber das er die datei nicht finden kann. er kann sie auch nicht finden, weil das verzeichnis das er mir anzeigt, in dem existiert diese datei auch nicht, er sucht halt in meinem modul verzeichnis. wie erkläre ich ihm nun das er nicht dort suchen soll sondern in "[...]/mod/brl.mod/[...]"?
suche praktisch so etwas wie bei c++: include <[dateiname]> um ihm halt zu erzählen er soll im "standard" pfad suchen.
 

Dreamora

BeitragFr, Dez 28, 2007 14:37
Antworten mit Zitat
Benutzer-Profile anzeigen
Das Import und Include hat wenig mit C++ zu tun, es ist viel mehr verwandt mit Javas Packages.


Für das TList Problem: Module musst du immer importieren. Da diese alles selbst importieren was sie benötigen gibts da keinen Grund für ein Include.

Da eine TList nicht von deinen Daten abhängen kann wüsste ich auch nicht warum sie included werden sollte. Das macht nur da sinn, wo verschiedene Klassen zusammen ein Package (a la Java) also ein "geschlossenes Packet" bilden das von einander alles wissen muss.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.
 

FredFeuerstein

BeitragFr, Dez 28, 2007 15:09
Antworten mit Zitat
Benutzer-Profile anzeigen
das hab ich mir schon so halb gedacht das ich ich ein import machen muß.
leider sagt er mir dann, wie schon oben erwähnt, das der Import eintrag der erste eintrag in der datei sein muß, was aber anscheinend nicht möglich ist, weil ich in den beiden dateien ja scheinbar ein Include von der jeweils anderen machen muß.
hmm, schon alles seltsam genug, aber egal!
deswegen kann ich nun leider kein Import von TList mehr machen, zumindest weiß ich nicht wie bzw. wo und desahlb sagt mir der compiler: "Compile Error: Identifier 'TList' not found", ganz toll.
und selbst wenn ich das problem gelöst bekomme habe ich immer noch das problem mit den doppelten identifiers vor mir, weil ich in beiden dateien das gleiche includieren tue und dann scheinbar die klassen doppelt includiert werden, oh boah ey. gibt es vielleicht wenigstens so etwas wie precompiler anweisungen das ich das doppelte includieren unterbinden kann?

irgendwie drehe ich mich im kreis und komme einfach nicht weiter Sad
hiiiilllllffffffffffeeeeeeeeeeeeee, biiiiiiiiitttttttttteeeeeeeee, das muß doch alles irgendwie gehn, oder?
 

Dreamora

BeitragFr, Dez 28, 2007 15:31
Antworten mit Zitat
Benutzer-Profile anzeigen
Import müssen immer ganz oben sein.

Das heisst ganz oben in der Datei wo sie zusammen kommen!

Da du mit Include nichts anderes machst als den Source einer anderen Datei reinkopieren heisst das im Klartext dass die Imports alle in der Datei sein müssen die die anderen Dateien included.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.
 

FredFeuerstein

BeitragFr, Dez 28, 2007 16:07
Antworten mit Zitat
Benutzer-Profile anzeigen
@Dreamora
oh man wie geil, es geht endlich Very Happy hab dich scheinbar die ganze zeit falsch verstanden!

habe jetzt in der hauptdatei von dem modul, wo ich auch
Code: [AUSKLAPPEN]

    Module [modulname]

sage, die Imports auf Includes geändert und aus allen anderen dateien alles entfernt was mit Include und Import zu tun hat und siehe da, es geht tatsächlich Very Happy

vielen dank noch mal und sorry das ich mich so dämlich angestellt habe, ab und an stehe ich einfach auf der leitung Smile
 

Dreamora

BeitragFr, Dez 28, 2007 16:20
Antworten mit Zitat
Benutzer-Profile anzeigen
Das ist kein Problem.


Übrigens: was auch immer du mit BM programmierst, sorg immer dafür das du Strict / SuperStrict benutzt.
zum einen wegen Optimierungen die es sonst net gibt und weil du sonst keinen Scope support hast für local.
Und natürlich weil sie dir sagen wenn du versuchst unmögliche zuweisungen zu machen Wink
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group