Author Topic: Forward Deklarationen?  (Read 9126 times)

Zapper

  • Guest
Forward Deklarationen?
« on: 2007-Dec-25 »
Guten Tag,
bei mir gibt es irgendwie Probleme damit, dass, wenn ich zum Beispiel eine Funktion A habe. Und ein Type B. Wenn ich nun in dem Type B die Funktion A verwende und in der Funktion A den Typenamen benutze, beschwert der Prekompiler sich darueber, dass der Typename nicht definiert ist (error : call to undefined function : BoundBy).
Muss ich die Funktion irgendwie vor der Typedefinition extra deklarieren oder so?
Mit GLBasic habe ich gerade erst angefangen und komme von C++. Kann also sein, dass ich auch irgendwas ganz triviales nicht beachtet habe oder so. :)

Offline Kitty Hello

  • code monkey
  • Administrator
  • Prof. Inline
  • *******
  • Posts: 10851
  • here on my island the sea says 'hello'
    • View Profile
    • http://www.glbasic.com
Forward Deklarationen?
« Reply #1 on: 2007-Dec-25 »
Nein. Bitte ein kleines BSP posten, das fehlschlägt.

Offline Schranz0r

  • Premium User :)
  • Administrator
  • Prof. Inline
  • *******
  • Posts: 5116
  • O Rly?
    • View Profile
Forward Deklarationen?
« Reply #2 on: 2007-Dec-25 »
Die Types auch Global gesetzt ?
I <3 DGArray's :D

PC:
AMD Ryzen 7 3800X 16@4.5GHz, 16GB Corsair Vengeance LPX DDR4-3200 RAM, ASUS Dual GeForce RTX™ 3060 OC Edition 12GB GDDR6, Windows 11 Pro 64Bit, MSi Tomahawk B350 Mainboard

Zapper

  • Guest
Forward Deklarationen?
« Reply #3 on: 2007-Dec-25 »
Beim Versuch das Minimalprogramm zu bauen bin ich jetzt auf was anderes gestossen, das ich mir genauso wenig erklaeren kann. :)

Quote
TYPE TFOO
   iSomeRandomVal=SomeRandomNumber();
ENDTYPE

FUNCTION SomeRandomNumber:
   RETURN RND(10);
ENDFUNCTION
Die Meldung ist error: `SomeRandomNumber' was not declared in this scope
Obwohl der Funktionsname in der Typedefinition doch auch bekannt sein sollte(?)

PS: Schranz0r, ja, wenn ich nicht versagt habe, sollte GLOBAL aBalls[] AS TBALL; doch gehen, oder? (Bzw sollten die Funktionen unabhaengig davon in der Typedefinition verfuegbar sein?)

Offline Schranz0r

  • Premium User :)
  • Administrator
  • Prof. Inline
  • *******
  • Posts: 5116
  • O Rly?
    • View Profile
Forward Deklarationen?
« Reply #4 on: 2007-Dec-25 »
hmm ne geht nur so :

Code: (glbasic) [Select]
TYPE TFOO
    iSomeRandomVal
ENDTYPE

GLOBAL FO[] AS TFOO
GLOBAL X AS TFOO

X.iSomeRandomVal = SomeRandomNumber()

DIMPUSH FO[],X

....

FUNCTION SomeRandomNumber:
    RETURN RND(10);
ENDFUNCTION
I <3 DGArray's :D

PC:
AMD Ryzen 7 3800X 16@4.5GHz, 16GB Corsair Vengeance LPX DDR4-3200 RAM, ASUS Dual GeForce RTX™ 3060 OC Edition 12GB GDDR6, Windows 11 Pro 64Bit, MSi Tomahawk B350 Mainboard

Zapper

  • Guest
Forward Deklarationen?
« Reply #5 on: 2007-Dec-26 »
Ich habe noch ein Problem, das aehnlich ist:
Ich habe in einem Projekt mehrere Dateien. Wenn ich in Datei A eine Funktion aufrufe, die es nur in Datei B gibt, bekomme ich error : call to undefined function. Wenn ich die Funktion an das Ende von Datei A kopiere, dann gehts. Eigentlich sollte der doch automatisch alle Dateien parsen vor dem kompilieren?

Und noch ein Problem:
Quote
TYPE TBALL
       //... Inhalt
ENDTYPE

GLOBAL aBalls[] AS TBALL;

LET i=20;
WHILE(i > 0)
   LOCAL foo AS TBALL
   foo.xDir=RandomX(-50,50);
   foo.yDir=RandomX(-50,50);
   DIMPUSH(aBalls,foo);
   i=i-1;
WEND
Ich bekomme die Fehlermeldung error : wrong argument type : DIMPUSH, arg no: 2. Meine Frage: Warum? :)

Offline trucidare

  • Administrator
  • Prof. Inline
  • *******
  • Posts: 1377
  • Bachelor of Fail
    • View Profile
Forward Deklarationen?
« Reply #6 on: 2007-Dec-26 »
rechte maustaste in datei b und dann zum projekt hinzufügen
MacBook Pro 2,2 GHz Core 2 Duo, 4 GB RAM, 160 GB HDD, 8600M GT
Core i3 - 3,07 GHz, 8 GB Ram, 2.5 TB HDD, Geforce GTX 260+ OC

Zapper

  • Guest
Forward Deklarationen?
« Reply #7 on: 2007-Dec-26 »
Oh, verdammt, ich habe angenommen, dass Dateien, die ich waerend einer Projektbearbeitung erstelle (die dann auch automatisch geoeffnet werden, wenn das Projekt geoeffnet wird) zum Projekt gehoeren

Offline Schranz0r

  • Premium User :)
  • Administrator
  • Prof. Inline
  • *******
  • Posts: 5116
  • O Rly?
    • View Profile
Forward Deklarationen?
« Reply #8 on: 2007-Dec-26 »
und Semikollon musst du nicht machen in GLB

und DIMPUSH aBalls[], foo !!

das erste muss ein Array sein !
I <3 DGArray's :D

PC:
AMD Ryzen 7 3800X 16@4.5GHz, 16GB Corsair Vengeance LPX DDR4-3200 RAM, ASUS Dual GeForce RTX™ 3060 OC Edition 12GB GDDR6, Windows 11 Pro 64Bit, MSi Tomahawk B350 Mainboard

Zapper

  • Guest
Forward Deklarationen?
« Reply #9 on: 2007-Dec-26 »
Uh, ja, das Problem waren auch die Klammern um aBalls[],foo. Zusaetzlich zu dem Array. DIMPUSH ist also garkeine Funktion in dem Sinne? Bzw kann ich auch eigene Funktionen ohne Klammern aufrufen? Sind Klammern in GLBasic also mehr fuer logische Operationen und Mathe?

Offline Kitty Hello

  • code monkey
  • Administrator
  • Prof. Inline
  • *******
  • Posts: 10851
  • here on my island the sea says 'hello'
    • View Profile
    • http://www.glbasic.com
Forward Deklarationen?
« Reply #10 on: 2007-Dec-27 »
Nein. FUNCTION foo:a
...
foo(42)
muss schon so sein. Aber die "grünen" Funktionen (eingebaut) muss man ohne Klammern aufrufen, wenn kein Rückgabewert gefordert ist.

Offline Schranz0r

  • Premium User :)
  • Administrator
  • Prof. Inline
  • *******
  • Posts: 5116
  • O Rly?
    • View Profile
Forward Deklarationen?
« Reply #11 on: 2007-Dec-27 »
Ach sag bloß, das GLBasic Befehle(eingebaut) nur einen wert zurückliefern, wenn man die Werte in eine Klammer eintragen muss?
Ist mir jetzt garnicht mal so aufgefallen :D
I <3 DGArray's :D

PC:
AMD Ryzen 7 3800X 16@4.5GHz, 16GB Corsair Vengeance LPX DDR4-3200 RAM, ASUS Dual GeForce RTX™ 3060 OC Edition 12GB GDDR6, Windows 11 Pro 64Bit, MSi Tomahawk B350 Mainboard

Zapper

  • Guest
Forward Deklarationen?
« Reply #12 on: 2007-Dec-27 »
Hm, ich hab wieder was neues (und hab keine Lust einen neuen Thread zu oeffnen :) ):
Ich bekomme den Parserfehler TGameObject.gbas"(1) error : wrong argument type : .
Aber die Zeile, in der der Fehler sein soll ist immer die zweite der Datei TGameObject.gbas. Selbst, wenn die Zeile leer ist. Was ist das los? :)

PS: Gibt es eigentlich irgendwo eine Compilermeldungenreferenz?

Offline Kitty Hello

  • code monkey
  • Administrator
  • Prof. Inline
  • *******
  • Posts: 10851
  • here on my island the sea says 'hello'
    • View Profile
    • http://www.glbasic.com
Forward Deklarationen?
« Reply #13 on: 2007-Dec-27 »
Referenz fehlt :/
Bitte poste immer den Code dazu.

Zapper

  • Guest
Forward Deklarationen?
« Reply #14 on: 2007-Dec-27 »
Oh, natuerlich: Hier
Ist das zweite Program, das ich testweise in der Sprache mache, der Stil kann also ein wenig.. rustikal wirken :)
Und MiscFunctions.gbas wird wahrscheinlich von dem Projekt in einem anderen Ordner erwartet und muss vielleicht nochmal zum projekt hinzugefuegt werden.
Im Moment liegt die Datei auf meinem Apachen, wenn ich irgendwann den PC ausmache und es bis dahin noch keine Loesung gab, verfrachte ich die Datei auf irgendeinen Hoster

Edit: Hochgeladen auf Z-Share.