Befehl "Include", Mehrfachverwendung net möglich!

Übersicht BlitzBasic Allgemein

Gehe zu Seite Zurück  1, 2, 3  Weiter

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

 

Mansoor

BeitragSo, Aug 01, 2004 19:58
Antworten mit Zitat
Benutzer-Profile anzeigen
Markus2 hat Folgendes geschrieben:
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 .


Ich Idiot Embarassed , wieso bin ich net früher druff gekommen! THX für den Befehl "Return" ! *LOL!
User posted image
 

Dreamora

BeitragSo, Aug 01, 2004 20:29
Antworten mit Zitat
Benutzer-Profile anzeigen
Was bitte hat das mit Include zu tun wie der code darin aussieht oder speziell wie man goto - gosub etc strukturiert?

Include sagt dem Compiler, dass in der dort angegebenen Datei zusätzlicher Code zu finden ist, der in die Exe einfliessen soll. Der Include Befehl wird dann vor dem compilieren durch den Code aus der anderen Datei ersetzt und so behandelt, als ob er schon immer dort wäre.


Was zb dein Formular betrifft, schreibst du halt ne Funktion Formular die der benutzer ausfüllt. Am Ende der Funktion wird das Programm ja automatisch hinter den Funktionsaufruf zurück springen und das Programm läuft von selbst weiter.
Was ich nicht verstehe ist, wie dir bewusst sein kann, dass man mit Includes den Code besser strukturieren kann, du aber nicht weisst wie Funktionen überhaupt funktionieren oder was Include macht.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.
 

Mansoor

BeitragSo, Aug 01, 2004 20:58
Antworten mit Zitat
Benutzer-Profile anzeigen
Also, ich hatte das mal mit Functions ausprobiert, ob das überhaupt möglich ist, irgendwas habe ich im Code flasch gemacht und aus Wut die Function gelöscht und habe versucht über Include alles zuregeln, naja nun habe ich den Fehler gefunden und das mit Function läuft. Manchmal sind die einfachen Wege am besten! Wink

So, nun habe ich eine Fragen zu Function:

1.) Wird Function erst in den Speicher geladen, wenn sie benötigt wird oder gleich in den Speicher geladen bis jemand sie aufruft?

2.) Nach der Benutztung von einer Function, wird sie dann gelöscht aus dem Speicher oder bleibt sie drinne bis das programm nicht beendet wird?

Diese Fragen sind mir sehr wichtig!
User posted image
 

Dreamora

BeitragSo, Aug 01, 2004 21:01
Antworten mit Zitat
Benutzer-Profile anzeigen
Eine Funktion wird garnicht geladen.

Sie wird, wenn du sie aufrufst, ausgeführt und danach ist sie wieder weg.

die lokalen variablen werden bei ihrem gebrauch erzeugt und am ende der funktion wieder gelöscht aus dem speicher
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

Markus2

BeitragSo, Aug 01, 2004 21:45
Antworten mit Zitat
Benutzer-Profile anzeigen
@Mansoor

Im Prinzip sind Funk. langsamer als dein Gosub & Goto
aber darüber brauchst du dir die wenigsten Gedanken machen .

Deine Funk. ist im Speicher wenn du die EXE startest und
wenn du sie aufrufst werden die lokalen Variablen auf nem
Stapelspeicher abgelegt und wenn du sie verläßt wird
dieser Stapelspeicher wieder gekürzt .
 

Edlothiol

BeitragMo, Aug 02, 2004 11:26
Antworten mit Zitat
Benutzer-Profile anzeigen
Hubsi hat Folgendes geschrieben:
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
Theoretisch schon, nur ist der BB - Compiler soviel ich weiß optimierend genug um direkt Print "Vollversion" zu schreiben.

@Mansoor:
Die Funktionen stehen genauso wie der Rest des Codes in der Datei. Und wenn du eine Funktion aufrufst, merkt sich der Prozessor die aktuelle Adresse und springt dann zur Adresse der Funktion. Da macht er weiter, bis ein Return - Befehl kommt, dann springt er wieder zurück zur vorher gespeicherten Adresse.

Hubsi

BeitragMo, Aug 02, 2004 11:46
Antworten mit Zitat
Benutzer-Profile anzeigen
So schlau ist er leider nicht. Probier nachfolgendes und schau Dir im Debugger die Variablen voll und demo an. Beide da, obwohl nur 'voll' eingebunden werden müsste Wink Code: [AUSKLAPPEN]
; Hauptdatei
Const test=True
If test
 Include "a.bb"
Else
 Include "b.bb"
EndIf
Code: [AUSKLAPPEN]
;a.bb
voll=True
Code: [AUSKLAPPEN]
;b.bb
demo=True
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn...
 

Mansoor

BeitragMo, Aug 02, 2004 12:09
Antworten mit Zitat
Benutzer-Profile anzeigen
Naja, ich werde leider GOTO verwenden müssen, da ich glaube das Programm bei 1.300.000 Functions :

1.) Blöd aussehen würde

2.) Verleicht auch sehr langsam

etc...

Jetzt fragt ihr euch, was für ein Game wird das. Nein es wird kein Game, aber eine Software mit dem größten Code der je geschrieben wurde auf B3D und an die grenzen von B3D geht! Leider werde ich dazu nichts sagen, erst wenn 5 Jahre vorrüber sind, dann werde ich euch die Software in Forum posten! Naja, verleicht ist GOto für Unterprogramme am besten geeignet, anstatt den Befehl Function zu missbrauchen!

PS: Stimmt das, das Goto&Gosub die Logische Denkweise verschlechtert?
User posted image
 

graythread

BeitragMo, Aug 02, 2004 12:14
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn ich mir dich so angucke...ja, doch irgendwie


Aber benutz echt Goto, denn es gibt nichts schlimmeres als einen blöd aussehenden Code, rück am besten auch nix ein, sieht ja aus wie bei den Ägyptern..
 

Edlothiol

BeitragMo, Aug 02, 2004 12:19
Antworten mit Zitat
Benutzer-Profile anzeigen
Mansoor hat Folgendes geschrieben:
Jetzt fragt ihr euch, was für ein Game wird das. Nein es wird kein Game, aber eine Software mit dem größten Code der je geschrieben wurde auf B3D und an die grenzen von B3D geht! Leider werde ich dazu nichts sagen, erst wenn 5 Jahre vorrüber sind, dann werde ich euch die Software in Forum posten!
Muahahahaa... Ich hoffe das war nicht ernst gemeint Very Happy Das würde das Forum ja völlig überfüllen :roll:Zitat:
Naja, verleicht ist GOto für Unterprogramme am besten geeignet, anstatt den Befehl Function zu missbrauchen!
Wenn du Function für Unterprogramme benutzt, missbrauchst du es nicht, dazu ist es nämlich da...
 

Mansoor

BeitragMo, Aug 02, 2004 12:21
Antworten mit Zitat
Benutzer-Profile anzeigen
Edlothiol hat Folgendes geschrieben:
Mansoor hat Folgendes geschrieben:
Jetzt fragt ihr euch, was für ein Game wird das. Nein es wird kein Game, aber eine Software mit dem größten Code der je geschrieben wurde auf B3D und an die grenzen von B3D geht! Leider werde ich dazu nichts sagen, erst wenn 5 Jahre vorrüber sind, dann werde ich euch die Software in Forum posten!
Muahahahaa... Ich hoffe das war nicht ernst gemeint Very Happy Das würde das Forum ja völlig überfüllen :roll:Zitat:
Naja, verleicht ist GOto für Unterprogramme am besten geeignet, anstatt den Befehl Function zu missbrauchen!
Wenn du Function für Unterprogramme benutzt, missbrauchst du es nicht, dazu ist es nämlich da...


Das ist ernst gemeint!!!!!!!!!!!!!!!!!!

Edit: Ich werde den Code ja net posten, sondern zum DOwnload freigeben, damit auch Mods entstehen von der Software Smile!
User posted image

Markus2

BeitragMo, Aug 02, 2004 12:26
Antworten mit Zitat
Benutzer-Profile anzeigen
Mansoor hat Folgendes geschrieben:
Naja, ich werde leider GOTO verwenden müssen, da ich glaube das Programm bei 1.300.000 Functions ...


Was wird das , nen von Programm aus generierter Quelltext oder was ?

Jolinah

BeitragMo, Aug 02, 2004 12:37
Antworten mit Zitat
Benutzer-Profile anzeigen
Naja, jeder muss selber wissen ob und wann er Goto verwendet.

Innerhalb von Funktionen ist Goto gar nicht mal so schlecht und manchmal kommt man damit auf ne einfachere Lösung als dafür andere Funktionen schreiben zu müssen.


Warum sagt man das Goto böse ist...

Goto springt an eine andere Adresse deines Programmes ohne jemals
wieder an die Ursprungsadresse zurück zu kehren. Das erlaubt natürlich sehr unübersichtlichen Code. Du könntest z.Bsp. am Anfang deines Programmes mal ans Ende springen und was dort unten machen, dann springst du in die Mitte, dann wieder Hoch und vielleicht nochmal in die Mitte... (auch Spaghetti-Code genannt).

Du siehst.. irgendwann kommt sogar der Programmierer nicht mehr zurecht mit seinem eigenen Programm. Erst recht bei sehr grossen Quelltexten würd ich damit aufpassen und es nicht zu oft verwenden.
Wie gesagt ist es innerhalb einer Funktion nicht so schlimm. Da weiss man es springt nur innerhalb der Funktion und ich muss nicht im Rest des ganzen Codes suchen gehen bei irgend nem Fehler.
Es ist jedoch möglich mit Goto sogar aus ner Funktion rauszuspringen, sollte man dann natürlich nicht machen.

Dann ist es immer noch besser GoSub zu verwenden, welches eigentlich für Unterprogramme gedacht ist. Die Sprungmarke (Label) sieht in erster Linie aus wie die die man bei einem Goto verwendet, allerdings muss man irgendwann wieder mit Return zurück springen.

Im Endeffekt spielt es also nicht so eine Rolle ob du 1.300.000 Funktionen oder 1.300.000 GoSubs hast, oder 1.300.000 mal zu einem Goto Label springst. Denn am Schluss wird trotzdem alles ungefähr gleich sein...

Eine Funktion merkt sich die Adresse wo sie wieder zurückspringen soll,
dann diese wo sie hinspringen soll. Dann springt sie zu dieser Adresse, was eigentlich auch einem Goto ähnlich ist. Am schluss springt sie zurück zu der Adresse wo sie als erstes gespeichert hat.

Ein Gosub macht denke ich das ähnliche, nur gibts da keine Parameter usw.

Ein Goto springt einfach zu einer Adresse, deswegen ist es vielleicht ein Bisschen schneller als ne Funktion (1ms schneller?).


Der Code wird aber trotzdem bei allen Varianten immer wieder ausgeführt wenn hingesprungen wird. Wieso also nicht gleich alles in ner Funktion schön Kapseln, ist finde ich die schönste Methode, auch wenn man den Code am Ende betrachtet.
 

Apocalyptic

BeitragMo, Aug 02, 2004 12:39
Antworten mit Zitat
Benutzer-Profile anzeigen
aha... Lass mich zusammenfassen: Du kannst nicht mit Function umgehen, hast keine Ahnung vom Includebefehl und meinst, dass 1.300.000 Functions dein Programm unübersichtlicher als 1.300.000 Gotos und Gosubs machen. Und nebenbei machst du etwas so unvorstellbar Großes, dass es B3D an seine Grenzen bringt und höchste Geheimhaltungsstufe erfordert. Und das auch noch in nur fünf Jahren, in einer Zeitspanne, in der alle anderen aufgeben und ihr lächerliches, nie vollendetes BB Projekt in die Mülltonne treten würden! Na dann, viel Glück. Und wenn du berühmter und reicher als Bill Gates mit deinem Programm bist, denk an deine BB Community, die nie an dir gezweifelt hat!
Suum cuique

[ www.ffs-net.de.vu ] [ Raycaster ]
 

graythread

BeitragMo, Aug 02, 2004 13:10
Antworten mit Zitat
Benutzer-Profile anzeigen
löl, du (Apocalypic) gefällst mir;-)!

und mal im Ernst Mansoor:

Benutz Funktionen und lass es gut sein;-).

Btw Hot Bit, wir brauchen dich hier..
 

Mansoor

BeitragMo, Aug 02, 2004 13:35
Antworten mit Zitat
Benutzer-Profile anzeigen
Apocalyptic hat Folgendes geschrieben:
aha... Lass mich zusammenfassen: Du kannst nicht mit Function umgehen, hast keine Ahnung vom Includebefehl und meinst, dass 1.300.000 Functions dein Programm unübersichtlicher als 1.300.000 Gotos und Gosubs machen. Und nebenbei machst du etwas so unvorstellbar Großes, dass es B3D an seine Grenzen bringt und höchste Geheimhaltungsstufe erfordert. Und das auch noch in nur fünf Jahren, in einer Zeitspanne, in der alle anderen aufgeben und ihr lächerliches, nie vollendetes BB Projekt in die Mülltonne treten würden! Na dann, viel Glück. Und wenn du berühmter und reicher als Bill Gates mit deinem Programm bist, denk an deine BB Community, die nie an dir gezweifelt hat!


BOA! Ich will kein Geld machen, will nur der Menscheit helfen! Nun das meine ich ernst. So ,in function habe ich folgendes Problem! Wenn ich Function in einer Schleife setzte, will ich das DInge vom Hauptprogramm drinne geladen werden bzw. Fonts etc... !
User posted image

soli

BeitragMo, Aug 02, 2004 13:44
Antworten mit Zitat
Benutzer-Profile anzeigen
Falls du nich fähig bist hier einen kleinen Beispielcode
zu posten der dein Problem veranschaulicht,
wird es dir auch nie gelingen irgend ein komplexes Programm
auf die Beine zu stellen.
solitaire

Jolinah

BeitragMo, Aug 02, 2004 13:59
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn du Dinge innerhalb einer Funktion zur Laufzeit laden willst benutz doch Globale Variablen, Arrays oder Types...


Code: [AUSKLAPPEN]

Global font
Dim grafik(19)

Type 3dobject
Field mesh
End Type


Function LoadObjects()

font = LoadFont("Arial",...,...,...)
grafik(0) = LoadImage("gfx\button.gif")
grafik(1) = LoadImage("gfx\glas.png")

obj.3dobject = new 3dobject
obj\mesh = LoadMesh("meshes\raumschiff.x")

End Function


Function FreeObjects()

FreeFont font
FreeImage grafik(0)
FreeImage grafik(1)

For obj.3dobject = each 3dobject
  FreeEntity obj\mesh
  Delete obj
Next

End Function


Wo ist das Problem?
 

hot-bit

Gast

BeitragMo, Aug 02, 2004 14:10
Antworten mit Zitat
Hi,

GENAU !

@soli: ist auch meine Meinung !

Habe mir jetzt nicht alles durch gelesen, denn da war zu viel Schwachsinn dabei !

Wenn wer *Goto*, *Gosub* benützen will, soll er es tun, solange er den Durchblick bewahrt. (ansonsten ist es ja sowieso sinnlos, da er sein eigenes *progerl* nicht checkt ! )
Ob es jetzt in Funktionen oder in Includes mit Funktionen oder nur in Includes oder nur im Haupt-Programm ist, sei jedem selbst überlassen.

Und GOSUB ist ja das gleiche, als wenn man eine Funktion aufrufen würde, nur das hier keine Parameter übergeben werden.

Ich für meinen Teil denke mir, daß diejenigen am meisten geschrieen haben *Goto und Gosub sind böse", weil das jene sind, die meistens von anderen Programmen abgucken. Und da sie nun keinen Durchblick hatten, war *Goto und Gosub* böse Wink

Funktionen sind echt recht schön übersichtlich !

Aber, warum soll ich mich tagelang hinsetzen, irgendwas ertüfteln, dies dann in eine Funktion packen, und zwar so, daß jeder den Code versteht ? Wenn möglich noch ohne *Goto und Gosub* !

Nur darum, damit hier irgendwelche Hosen-Kacker kommen, dies kopieren, und dann groß herum-posaunen: Seht her, MEIN Programm ! ?

Wie jemand sein Programm optimal erstellt, ist ja sowieso individuell !
Da kann man höchstens Richtlinien vorgeben, wenn es nicht nur für die private Nutzung ist.

Noch was:

Mit 16 Jahren soll man nicht allzu große Töne spucken !

Das bekommt der grünen Farbe hinter den Ohren nicht ! ;

Toni
 

Mansoor

BeitragMo, Aug 02, 2004 14:11
Antworten mit Zitat
Benutzer-Profile anzeigen
okok, das Problem ist folgendes!


---- [Datei Main_1.bb
Code: [AUSKLAPPEN]

; DAS IST KEIN ORGINAL CODE VON DER SOFTWARE

Function Main_1 ()

SetFont Font_Arial_1

If .... Then ....

If .... Then ....

If .... Then ....

end function




----[ Main_2.bb
Code: [AUSKLAPPEN]

; DAS IST KEIN ORGINAL CODE VON DER SOFTWARE

Function Main_1 ()

SetFont Font_Arial_2

If .... Then ....

If .... Then ....

If .... Then ....

end function



-----[Hauptprogramm
Code: [AUSKLAPPEN]


include "data\Engine\mainsystem\fonts\font.bb"
include "data\main_1.bb"
include "data\main_2.bb"

repeat

Main_1
Main_2

FlushMouse
Flip 
Forever


Fonts kann ich net einsetzten!
User posted image

Gehe zu Seite Zurück  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