include 2mal mit gleicher datei möglich?

Übersicht BlitzBasic Allgemein

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen

 

onkelz89

Betreff: include 2mal mit gleicher datei möglich?

BeitragMi, Nov 09, 2005 19:18
Antworten mit Zitat
Benutzer-Profile anzeigen
hi

ich denke der titel beschreibt die frage schon ganz gut aber hier nochmal genauer.

also ich habe eine "checkup" datei die mehrmals im spiel (beim laden) aufgerufen werden muss. jetzt sieht mein code wie folgt aus:

Code: [AUSKLAPPEN]

.
.
.
Include "checkup.bb"
.
.
.
Include "checkup.bb"
.
.
.


das ganz ist vor der schleife...
aber blitz läd nur das erste mal die datei.
warum?


mfg
onkelz

dominik

BeitragMi, Nov 09, 2005 19:22
Antworten mit Zitat
Benutzer-Profile anzeigen
welchen Sinn soll es auch habe die Datei zweimal zu laden. Da is doch nur Code drinn, und keine sich während des Programmablaufs verändernden Informationen. Und wenn der Code in ner Function steht kannst du doch die öfter aufrufen, dazu musst du doch nich die include neu aufrufen.

Aber wahrscheinlich is besser du erklärst dein prob und den Sinn des proggs genauer.

PS: Kann auch nicht gehen weil der Code beim starten, auch der aus der Include, als ein kompletter Code compiliert wird.
BB+ 1.41|Sempron 2.8|geforce fx5200|1GB DDR|XP home SP2 / prof.
 

onkelz89

BeitragMi, Nov 09, 2005 19:29
Antworten mit Zitat
Benutzer-Profile anzeigen
nich ganz weil ich zeigs genauer:

include datei:
Code: [AUSKLAPPEN]

...
variabel$=send$
...


und dann der code im hauptprogramm:
Code: [AUSKLAPPEN]

...
send$="1"
Include "checkup.bb"
...
send$="2"
Include "checkup.bb"
...



deswegen... weil sich halt meherer werte ändern

Spikespine

BeitragMi, Nov 09, 2005 19:33
Antworten mit Zitat
Benutzer-Profile anzeigen
kann nicht funktionieren. In der Include datei kanst du wohl kaum auf variablen im Hauptprigramm zugreifen. Warum machst du nicht einfach einmal in der Include-Datei
Code: [AUSKLAPPEN]
Global variabel$

und im Hauptprogramm
Code: [AUSKLAPPEN]
Include "checkup.bb"
variabel$ = send$


grüße, Spikespine

ps: abgesehen davon funktionieren zwei include-befehle mit der gleichen datei glaub sowieso nicht.
Athlon 64 3700+ | 1024 MB RAM | GeForce 7900 GT | Blitz2D, Blitz3D, BlitzPlus, BlitzMax

BtbN

BeitragMi, Nov 09, 2005 19:50
Antworten mit Zitat
Benutzer-Profile anzeigen
Aus einer Include Datei kann man klar auf Globals aus dem Haupt-Script zugreifen!
Der Precompiler kopiert den Code aus der Include-Datei an die Stelle des Include-Befehls, und dann geht erst der Compiler ran!
eigentlich müßte das auch 2 mal mit der selbe datei gehen...
Nimm halt einfach ne Funktion oda ne Subroutine.
 

onkelz89

BeitragMi, Nov 09, 2005 19:55
Antworten mit Zitat
Benutzer-Profile anzeigen
ok ich werds versuchen danke
 

onkelz89

BeitragMi, Nov 09, 2005 20:12
Antworten mit Zitat
Benutzer-Profile anzeigen
habs mit ner funktion gemacht ... aber jetzt sagt er zu einer datei sie wäre nicht vorhanden...
(kann man in funktionen überhaupt openfile usw. benutzen?)


funktion:
BlitzBasic: [AUSKLAPPEN]

Function check()

;checkup (map)
Print filename$
file = OpenFile(filename$)
...
End Function



oben das laden:
BlitzBasic: [AUSKLAPPEN]

filename$=\"Data/Map/x1y1s1.txt\";vom hauptprogramm aus stimmt der ort
check



EDIT:

ah ok mein fehler klappt doch (filename$ muss natürlich global sein Rolling Eyes )

x-pressive

BeitragMi, Nov 09, 2005 22:41
Antworten mit Zitat
Benutzer-Profile anzeigen
Etwas ähnlich hat mich vor kurzem auch mal beschäftigt. Praktisch und unerhört nützlich wäre nämlich z.B. das:

BlitzBasic: [AUSKLAPPEN]

If language$ = \"Deutsch\" Then Include \"german_string_vars.bb\"
If language$ = \"English\" Then Include \"english_string_vars.bb\"


...geht aber leider nicht. Confused
• BLITZ SHOWCASE:
PARTICLE CANDY • PARTICLE CANDY FOR iPHONE • SPRITE CANDY • DON'T GET ANGRY! 2-3 • CLICK CLACK XL
 

onkelz89

BeitragDo, Nov 10, 2005 0:05
Antworten mit Zitat
Benutzer-Profile anzeigen
so gehts hoffe es hilft dir

BlitzBasic: [AUSKLAPPEN]

Print \"testprogramm\"

var=1

If var=1 Then
Include\"1.bb\"
EndIf
If var=2 Then
Include\"2.bb\"
EndIf


WaitKey()


1.bb
BlitzBasic: [AUSKLAPPEN]

Print \"auswahl1\"


2.bb
BlitzBasic: [AUSKLAPPEN]
Print \"auswahl2\"



bei mir hat es funktioniert

mfg
onkelz

PSY

BeitragDo, Nov 10, 2005 0:17
Antworten mit Zitat
Benutzer-Profile anzeigen
der compiler mag wohl keine einzeiligen if .... then include's Wink
 

onkelz89

BeitragDo, Nov 10, 2005 0:46
Antworten mit Zitat
Benutzer-Profile anzeigen
ich fands auch komisch.. habs erst normal mit if... then gamacht aber da kam ne fehlermeldung ... und so (siehe oben) klappts ohne fehler...

blitz halt Smile

x-pressive

BeitragDo, Nov 10, 2005 7:57
Antworten mit Zitat
Benutzer-Profile anzeigen
Bei mir klappt das immer noch nicht -da kommt immer die Fehlermeldung "Const can only appear in main program". In meinem include file habe ich die Text Strings als Const deklariert -die erlaubt Blitz aber nur im Hauptprogramm, wenn man Includes mit IF...THEN einbindet. Ansonsten geht das aber. Schon komisch.

Nicht einmal das erlaubt er:

BlitzBasic: [AUSKLAPPEN]

Const LANGUAGEFILE$ = \"german_string_vars.bb\"
...
Include LANGUAGEFILE$


Da spuckt er "Expecting include filename" aus Confused Ärgerlich.
• BLITZ SHOWCASE:
PARTICLE CANDY • PARTICLE CANDY FOR iPHONE • SPRITE CANDY • DON'T GET ANGRY! 2-3 • CLICK CLACK XL

bruZard

BeitragDo, Nov 10, 2005 9:26
Antworten mit Zitat
Benutzer-Profile anzeigen
Leute ... wann kapiert Ihr endlich die Funktionsweise eines "Include" ???

Include bindet den angegebenen Quelltext ein bevor irgendetwas kompiliert wird. Das was der Compiler da macht ist derselbe Effekt als würdet Ihr per Copy&Paste den angegebenen Quelltext selbst an der Stelle einfügen an der das Include steht.

Mann, Mann, Mann ... das habe ich jetzt bestimmt zum 1.000.000sten Mal erklärt.
PIV 2,4GHz - 1GB DDR 333 - ATI Radeon9600 - WinXP - DX9.0c - BMax 1.14 - B3D 1.91 - 1280x1024x32

User posted image

PSY

BeitragDo, Nov 10, 2005 13:08
Antworten mit Zitat
Benutzer-Profile anzeigen
Zitat:
Leute ... wann kapiert Ihr endlich die Funktionsweise eines "Include" ???

Include bindet den angegebenen Quelltext ein bevor irgendetwas kompiliert wird. Das was der Compiler da macht ist derselbe Effekt als würdet Ihr per Copy&Paste den angegebenen Quelltext selbst an der Stelle einfügen an der das Include steht.

Mann, Mann, Mann ... das habe ich jetzt bestimmt zum 1.000.000sten Mal erklärt.


Hab nie was anderes behauptet....


Mit folgendem Code werden halt sowohl die englisch.bb als auch die deutsch.bb beim compilieren in den Code eingebunden. Kann man einfach nachprüfen, indem man die .exe scannt.

Es geht schliesslich darum, den Code übersichtlicher zu machen...
ist ja auch Sinn & Zweck von includes


Code: [AUSKLAPPEN]
Print "testprogramm"


var=input("1=englisch - 2=deutsch")


If var=1 Then
 Include"englisch.bb"
EndIf
If var=2 Then
 Include"deutsch.bb"
EndIf


WaitKey()
 



Code: [AUSKLAPPEN]
englisch.bb
Print "auswahl1"


Code: [AUSKLAPPEN]
deutsch.bb
Print "auswahl2"


L8er
PSY

Hummelpups

BeitragDo, Nov 10, 2005 13:39
Antworten mit Zitat
Benutzer-Profile anzeigen
warum das funktioniert ist mir schleierhaft.
Der Compiler war ja noch garnicht am werk und
könnte so den Quelltext bzw. die if abfrage garnicht
auswerten.

Grundsätzlich hätte ich nie eine solche Struktur verwendet
und die englisch deutsch in ini oder txt oder wasa uch immer
gespeiuchert und in ein Array geladen.

IMurDOOM
blucode - webdesign - Ressource - NetzwerkSim
BlitzBasic 2D - BlitzMax - MaxGUI - Monkey - BlitzPlus

x-pressive

BeitragDo, Nov 10, 2005 16:17
Antworten mit Zitat
Benutzer-Profile anzeigen
Hast du schon mal einige hundert Texte als Array in deinen Code geladen und versucht, später noch mal durchzublicken, welches Array-Element welchen Text enthält? Nie wieder Confused

Die einzig professionelle Lösung wäre, ein File mit Konstanten zu includen -so müsste man auch nicht alle Sprachtexte DOPPELT laden (oder überhaupt Variablen und Speicher damit verschwenden). Aber das funktioniert dann halt nur mit einem File, so das man eben den Namen der Includedatei vor jedem Kompilieren einer anderen Sprachversion wieder anpassen muß. Kostet Nerven.
• BLITZ SHOWCASE:
PARTICLE CANDY • PARTICLE CANDY FOR iPHONE • SPRITE CANDY • DON'T GET ANGRY! 2-3 • CLICK CLACK XL

Hummelpups

BeitragDo, Nov 10, 2005 16:42
Antworten mit Zitat
Benutzer-Profile anzeigen
Man könnte genauso gut die Felder per String ansprechen.

print messagepack$("Willkommen")

was aber ne menge speicher frisst, sich aber relativ leicht einfügen
lässt.

German.ini
Code: [AUSKLAPPEN]
Wilkommen
Willkommen
Tschüss!
Tschüss!


Englisch.ini
Code: [AUSKLAPPEN]
Willkommen
Welcome
Tschüss!
Bye!


Oder so ähnlich, ist sicherlich auch nicht optimal.
Würde man jeweils die erste zeile weg lassen, müsste man
die ansprachetexte in dem Array selber füllen, durch diese
Zeile fällt es ja dann weg.

Code: [AUSKLAPPEN]
tmp_var=0
While not eof(datei)
   tmp_var:+1
   messagepack$(tmp_var,0)=readline(datei)
   messagepack$(tmp_var,1)=readline(datei)
wend


Ihr wisst was ich meine, warum laber ich mich hier fusselig? ^^
Aber halt enormer speicherverbrauch würde ich sagen, halt gut doppelt
so viel.

IMurDOOM
blucode - webdesign - Ressource - NetzwerkSim
BlitzBasic 2D - BlitzMax - MaxGUI - Monkey - BlitzPlus

x-pressive

BeitragFr, Nov 11, 2005 7:43
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich kann nur davon abraten, Arrays für viele Texte zu benutzen -es ist quasi unmöglich einen Überblick zu behalten, welches Array-Element welchen Text enthält -und ständiges Nachsehen, verlangsamt den Workflow brutal.

Und es ist extrem fehleranfällig. Vertipp dich mal bei einem Array-Index, das produziert die seltsamsten Fehler und solche Fehlersuchen können ewig dauern.

In dem man Konstanten benutzt, spart man Speicher, erhöht die Arbeitsgeschwindigkeit und sieht auch im Quelltext sofort, welcher Text wo benutzt wird, wenn man seinen Konstanten aussagekräftige Namen gibt wie TXT_ENTERNAME$, TXT_GAMEPAUSED$ etc.. Bei Arrays wird das in längeren Quellcodes zur absolut unübersichtlichen Geduldsprobe.
• BLITZ SHOWCASE:
PARTICLE CANDY • PARTICLE CANDY FOR iPHONE • SPRITE CANDY • DON'T GET ANGRY! 2-3 • CLICK CLACK XL
 

f L i P

BeitragDo, Dez 08, 2005 18:45
Antworten mit Zitat
Benutzer-Profile anzeigen
um sich den rest sparen zu können und auf den eigentlichen titel zu kommen. wie bruzard schon sagte pastet der precompiler den code innerhalb eines includefiles an der jeweiligen stelle einfach vorm compilieren ein

lösung:
man erstellt ne funktion in der included wird, diese kann man schließlich mehrfach aufrufen

include-file.bb:
Code: [AUSKLAPPEN]

Print("included")


main-file.bb:
Code: [AUSKLAPPEN]

Function includeFunc()
 Include "include-file.bb"
End Function

includeFunc
includeFunc
mir egal wer dein Vater ist- solange ich hier am angeln bin wird nicht über's wasser gelaufen!

Jan_

Ehemaliger Admin

BeitragFr, Dez 09, 2005 8:26
Antworten mit Zitat
Benutzer-Profile anzeigen
hm, mit Goto gehts auch!
between angels and insects

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group