Befehl "Include", Mehrfachverwendung net möglich!

Übersicht BlitzBasic Allgemein

Gehe zu Seite 1, 2, 3  Weiter

Dieses Thema ist gesperrt, du kannst keine Beiträge editieren oder beantworten.

 

Mansoor

Betreff: Befehl "Include", Mehrfachverwendung net möglich!

BeitragSo, Aug 01, 2004 16:18
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi Leutz,

Also, ich habe folgendes Problem mit dem befehl "Include"! Wieso kann man den Befehl "Include" nicht mehrfach einsetzten, also die Datei?

Beispiel:

Es sind 4 Daten vorhanden:

1.) data\Fonts\Fonts_1.bb
2.) data\Mainmenu.bb
3.) data\A\Menu_1.bb
4.) data\B\Menu_2.bb

So, das Programm startet mit Mainmenu.bb

Code: [AUSKLAPPEN]

; Code von Mainmenu.bb
...........
;#---[Fonts werden geladen!
Include "data\Fonts\Fonts_1.bb"

......

;Fonts werden verarbeitet
SetFont Font_Arial_1
........

; If Bedingungen etc...
If ..... Then Include "data\A\Menu_1.bb"

.......


Bis hier ist alles ok!

Aber nun kommts!

Code: [AUSKLAPPEN]

; Code vom Menü_1.bb

.......
;#---[Fonts werden geladen!
Include "data\Fonts\Fonts_1.bb"
.....

;Fonts werden verarbeitet
SetFont Font_Arial_1
......

; If Bedingungen etc...

If ..... Then Include "data\mainmenu.bb"

If ..... Then Include "data\B\Menu_2.bb"


Verarbeitung von mainmenu.bb & Fonts_1.bb ist net möglich! Aber die verarbeitung von Menu_2.bb ist möglich!

So, um das Problem zu beheben braucht man andere Benennung für die Dateien mainmenu.bb & Fonts.bb !

Dann müsste der Code soaussehen von der Datei Menu_1.bb

Code: [AUSKLAPPEN]

; Code von Menu_1.bb verbessert

.......
;#---[Fonts werden geladen!
Include "data\Fonts\Fonts_2.bb"
.....

;Fonts werden verarbeitet
SetFont Font_Arial_1
......

; If Bedingungen etc...

If ..... Then Include "data\mainmenu_2.bb"

If ..... Then Include "data\B\Menu_2.bb"



So nun wie ihr seht ist der Code Inhalt der gleiche geblieben, nur der Dateiname wurde geändert und alles functioniert! Nur Include lässt dieselbe datei nicht benutzten! Das ist doch kacke, so bleibt der Inhalt des Codes aber man kommt bei solchen vielen Dateien (130.000 Zeilen Code) durcheinander! Dann müsste man per Varibilen den Code so strückturieren, dass man dinge nur einer Stelle zu verändern braucht!

Ich habe mich mit dem Befehl "Include" 1 Studen beschäftigt und rumprobiert ob es doch kein Fehler bei meinen Code and anderen stellen liegt, aber zwecklos Crying or Very sad ! Die Mehrfacheverwendung von "Include" ist mit der selben Dateinamen zwecklos! Crying or Very sad Crying or Very sad Crying or Very sad
User posted image

simi

BeitragSo, Aug 01, 2004 16:28
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich denke dir ist die Funcktion von include nicht ganz klar.
Eigentlich Fügt man mit dem Include-Befehl eine Datei in die Maindatei.
Diese Datei enthält entweder Functionen oder sonstige sachen, aber nicht ein code:

Code: [AUSKLAPPEN]

;Includierte Datei
Function bla(x$)
 Print x
end Function

Code: [AUSKLAPPEN]

;Haupdatei
Include "Datei.bb"
bla("Diese Function ist in einer externen Datei!")
wautkey()
end


Das sind jetzt zwei Dateien, aber Blitz sieht es eigentlich so:
Code: [AUSKLAPPEN]

Function bla(x$)
 Print x
end Function

bla("Diese Function ist in einer externen Datei!")
wautkey()
end


Ich hoffe du kommst nun draus.

cu simi Very Happy

Vertex

BeitragSo, Aug 01, 2004 16:29
Antworten mit Zitat
Benutzer-Profile anzeigen
Meister, Include und If haben soviel Gemeinsam wie der Papst und Kelly Trump. Entweder du inkludierst eine Datei oder lässt es, zur Laufzeit erscheint der Blitzcompiler nicht von Geisterhand und kompiliert dann deine Datei.
mfg olli
vertex.dreamfall.at | GitHub

sidolin

BeitragSo, Aug 01, 2004 16:32
Antworten mit Zitat
Benutzer-Profile anzeigen
Zitat:
Die Mehrfacheverwendung von "Include" mit dem selben Dateinamen zwecklos

ist ja auch logisch. wenn er eine datei einmal includet hat kann/muß er sie nicht noch mal includen. warum auch.

..:: P4 1500 MHZ : 512 MB RDRAM : GFORCE 4 ::..
 

Mansoor

BeitragSo, Aug 01, 2004 16:44
Antworten mit Zitat
Benutzer-Profile anzeigen
@ simi, Include ist dazu da um den Code aufzuteilen und übersichtlicher zu machen! Nur, das Mehrfache verwenden von Include ist net möglich!

@ sidolin, um z.b.: seine Mühe zusparen! Wäre sowas möglich hätten wir mehr Übersicht!

@ All, ich will echt net Gusub oder Goto verwenden Crying or Very sad ! Da ich oft höre das diese Befehle böse sind! Rolling Eyes

Edit:

Zitat:

Meister, Include und If haben soviel Gemeinsam wie der Papst und Kelly Trump. Entweder du inkludierst eine Datei oder lässt es, zur Laufzeit erscheint der Blitzcompiler nicht von Geisterhand und kompiliert dann deine Datei.
mfg olli


Naja, aber das mit dem If & Include functioniert, nur der Befehl Include macht ärger!

PS: Was ist Kelly Tumb?
User posted image
 

graythread

BeitragSo, Aug 01, 2004 16:59
Antworten mit Zitat
Benutzer-Profile anzeigen
Trump: http://tvshots.free.fr/images/trump/kelly01.jpg

Na ja, Vertex, ich wage mal dir (ansatzweise) zu wiedersprechen:

Der Compiler darf doch ruhig immer includen, der Code wird zur Laufzeit ja nur ausgeführt, wenn die Bedinung zutrifft, ob er jetzt schon includet ist oder nicht gibt sich dann doch nix oder?

cu
(eine Vernichtende Antwort erwachtet)
graythread

€dit: Oder meintest du, dass er gar nicht includet, wenn ein Include im If Satz steht?
 

Mansoor

BeitragSo, Aug 01, 2004 17:03
Antworten mit Zitat
Benutzer-Profile anzeigen
graythread hat Folgendes geschrieben:
Trump: http://tvshots.free.fr/images/trump/kelly01.jpg

Na ja, Vertex, ich wage mal dir (ansatzweise) zu wiedersprechen:

Der Compiler darf doch ruhig immer includen, der Code wird zur Laufzeit ja nur ausgeführt, wenn die Bedinung zutrifft, ob er jetzt schon includet ist oder nicht gibt sich dann doch nix oder?

cu
(eine Vernichtende Antwort erwachtet)
graythread


Jo, der Befehl "Include" ist nur da um uns beim Coden zuhelfen und nachher wird ja daraus eine exe! Wink Und jetzt frage ich mich auch, wieso man das net mehrfach benutzten kann mit dem selben Dateinamen? Ist irgendwie beknakt!

Edit:
Doch er includet wenn ein IF Satz ist, nur wenn der selbe Dateiname der schon Includet wurde, kann net nochmal includet werden!
User posted image
 

x.Force

BeitragSo, Aug 01, 2004 17:37
Antworten mit Zitat
Benutzer-Profile anzeigen
anscheinend verstehst du den Sinn nicht richtig

AMD Athlon XP 2000+ | 1024mb DDR-Ram | Asus Radeon 9600XT | BENQ FP757 17°Zoll TFT

Was kümmert mich mein Geschwätz von gestern? (Konrad Adenauer) -.-

Hubsi

BeitragSo, Aug 01, 2004 17:42
Antworten mit Zitat
Benutzer-Profile anzeigen
Theoretisch könnte ja in der Datei eine Function oder eine Sprungmarke sein. Diese wäre dann doppelt vorhanden und wir hätten ein Problem. Ich vermute darum ist es nicht möglich. Das wird zwar auch so noch geprüft, aber irgendwas wird er sich dabei schon gedacht haben Very Happy
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn...

Vertex

BeitragSo, Aug 01, 2004 18:07
Antworten mit Zitat
Benutzer-Profile anzeigen
graythread: Ein Compiler ist kein Interpreter. Und auch wenn, die meisten Interpreter übersetzen nicht den Originalcode zu Laufzeit, sondern dieser wird auch aus Geschwindigkeitsgründen vor dem exe Erstellen durchgeparst und für den Interpreter vorgekaut.

So Leute, was geht ist folgendes:
demoversion.bb:
Code: [AUSKLAPPEN]
Print "Demoversion"

vollversion:
Code: [AUSKLAPPEN]
Print "Vollversion"

test.bb:
Code: [AUSKLAPPEN]
Const DEMOVERSION = True
If DEMOVERSION Then
   Include "demoversion.bb"
Else
   Include "vollversion.bb"
EndIf

WaitKey

Der Compiler erkennt automatisch das hier eine Konstante statts einer Variable eingesetzt wurde.

mfg olli
vertex.dreamfall.at | GitHub

Hubsi

BeitragSo, Aug 01, 2004 18:25
Antworten mit Zitat
Benutzer-Profile anzeigen
Er includet beide Dateien, führt aber durch das If-Konstrukt bedingt nur eine Hälfte aus. In der Exe würde das so aussehen:Code: [AUSKLAPPEN]
If 1
 Print "Vollversion"
Else
 Print "Demo"
EndIf
Wink
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn...
 

Mansoor

BeitragSo, Aug 01, 2004 18:29
Antworten mit Zitat
Benutzer-Profile anzeigen
Das Problem ist ja, das nicht 2 mal Include ausgeführt werden kann, wenn die Dateinamen gleich sind! Rolling Eyes Wie ist es in C++? Ist das dort möglich, denn langsam fange ich damit an!
User posted image

Bfox

BeitragSo, Aug 01, 2004 19:01
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich glaube nicht, dass das Möglich ist!

Der Sinn von Include ist das du andere Dateien einbindest! Um dann die Funktionen der Datei zu nutzen!

Und nicht dass du den Code einfach einbindest und der dann ausgeführt wird!

Einmal geht das aber eigentlich ist es nur dazu da dass man von der Datei die Funktionen benutzen kann, oder die Variablen und Konstanten! Rolling Eyes

Ich hoffe dass du das jetzt verstanden hast! Rolling Eyes
Glauben ist Mangel an Wissen!
 

Mansoor

BeitragSo, Aug 01, 2004 19:08
Antworten mit Zitat
Benutzer-Profile anzeigen
Bfox hat Folgendes geschrieben:
Ich glaube nicht, dass das Möglich ist!

Der Sinn von Include ist das du andere Dateien einbindest! Um dann die Funktionen der Datei zu nutzen!

Und nicht dass du den Code einfach einbindest und der dann ausgeführt wird!

Einmal geht das aber eigentlich ist es nur dazu da dass man von der Datei die Funktionen benutzen kann, oder die Variablen und Konstanten! Rolling Eyes

Ich hoffe dass du das jetzt verstanden hast! Rolling Eyes


Wie oft muss ich noch sagen! Der Sinn von Include ist ja den Code aufzuteilen und es übersichtlicher zuhalten! Wenn du z.b.: ein Formular gecodet hast und es in deinem Code an 200.000 stellen verwenden willst, dann wirst du ja den Formular net neu schreiben oder die Dateiendung für jedes einfügen verändern! Du würdest sichlerlich dieselbe Datei Includen und würdest sehr viel Zeit, Aufwand, Mühe, Stress etc...sparen!
User posted image

Markus2

BeitragSo, Aug 01, 2004 19:17
Antworten mit Zitat
Benutzer-Profile anzeigen
Mansoor hat Folgendes geschrieben:
Das Problem ist ja, das nicht 2 mal Include ausgeführt werden kann, wenn die Dateinamen gleich sind! Rolling Eyes Wie ist es in C++? Ist das dort möglich, denn langsam fange ich damit an!



Überlege doch mal was passiert wenn du zweimal die gleiche
Datei includest , du hättest alle Funktionen doppelt , also
nicht gerade logisch , oder ?
Also mit C anzufangen rate ich dir ab wenn du das hier in BB noch
nicht mal kapierst .
Wenn du keine Includes hättest mußte also einen Quelltext haben
der funktioniert . Wenn dem so ist kannst du den aufteilen in
einzelne Dateien .

Jolinah

BeitragSo, Aug 01, 2004 19:20
Antworten mit Zitat
Benutzer-Profile anzeigen
Mit dem Sinn von Include hast du ja recht.
Aber es ist nicht für diese Weise von Code Aufteilung gedacht.

Wenn du willst das sich etwas immer wieder wiederholen lässt dann packst du es eben in eine Funktion, includest die Datei ein einziges mal und führst diese Funktion aus jedesmal wenn du das Formular brauchst.
So, nun ist dein Quellcode sauber aufgeteilt.

Include Dateien dienen lediglich zur Auslagerung von Code in mehrere Dateien. Zweck davon ist das wenn du nen riesen Projekt hast nicht im ganzen Projekt rumwühlen musst wenn du mal nen Fehler hast. Sondern du weisst der Fehler liegt bei der Input Routine, aha "Input.bb". Oder nein er liegt in der GUI -> "GUI.bb" usw..
So bleibt die Datei mit der Hauptschleife des Programms übersichtlicher und es gibt kein Chaos.

Sinnvollerweise lagert man immer Code eines gewissen Teilgebiets aus. Es würde also keinen Sinn machen eine Funktion die den Spieler bewegt und eine Funktion die irgendwelche Einträge in einer Datenbank auf einem externen Server ändert zusammen in eine Include Datei zu schreiben. Klar kann man das, es spricht nichts dagegen. Aber Include Dateien dienen auch der Gruppierung von Code, so das alle Teilgebiete zusammen unter einem eigenen Dach sind.

Für das was du willst sind ja eigentlich Funktionen auch entwickelt worden, wieso lagerst du es nicht in Funktionen aus?
  • Zuletzt bearbeitet von Jolinah am So, Aug 01, 2004 19:26, insgesamt 2-mal bearbeitet
 

Ensign Joe

BeitragSo, Aug 01, 2004 19:23
Antworten mit Zitat
Benutzer-Profile anzeigen
ey, bisch du bleed oder wat?

also: Das bringt nix
include1.bb hat Folgendes geschrieben:
function hallo()
print "Hallo"
end function


main.bb hat Folgendes geschrieben:
include "include1.bb"
hallo()
print "He, net ausführen!!!"
include "include1.bb"
hallo
Das ist doch schwachsinnig!

weil du braust das teil dann ja nemme includen weil Hallo() aj schon vorhanden ist Laughing
Ich habe jetzt eine Pommesbude aufgemacht am Münchner Hauptbahnhof.
Und da ich Herbert Görgens heiße, heißt diese Pommesbude
Herbert's Pommesbude Smile
 

Mansoor

BeitragSo, Aug 01, 2004 19:34
Antworten mit Zitat
Benutzer-Profile anzeigen
Also, das große Problem ist, das ich ohne "Goto, Gusub" im Code hin und her springen will!

@ Kann man Function in Function verwenden? Question Muss mal ausprobieren, ich glaube net! Aber man kann in Functions nicht raus springen, leider net möglich Wink !
User posted image

Hubsi

BeitragSo, Aug 01, 2004 19:40
Antworten mit Zitat
Benutzer-Profile anzeigen
Function in Function geht ohne weiteres. Rausspringen geht mit Return?
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn...

Markus2

BeitragSo, Aug 01, 2004 19:43
Antworten mit Zitat
Benutzer-Profile anzeigen
Ohne Gosub und Goto ?
Dafür sind doch Funk. da !???
Du kannst doch in ner Funk. wieder ne Funk. aufrufen ,
wo ist das Problem ?
Zum raus springen gibt es Return was du genau so bei GoSub benutzt .

Und bei Return kann man noch nen Rückgabe wert dran hängen
fallst du es nicht weist .

Gehe zu Seite 1, 2, 3  Weiter

Dieses Thema ist gesperrt, du kannst keine Beiträge editieren oder beantworten.


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group