PDA

View Full Version : Achso, ich habe test() nicht deklariert



Elchi
19-10-2012, 16:12
Das Script wurde auf das Wesentliche gekürzt.


Function test(s As SPoint, i as Integer)
{
Return;
}

test(New SPoint(500, 500), 10);


compiler error: Global member 'test' not found. (Line: 8, Column: 3, Index: 95, Token: 'test', File: 'Script 7653').
compiler error: Global member 'test' not found (Line: 8, Column: 3, Index: 95, Token: 'test', File: 'Script 7653').







Function test(s As SPoint, i As Integer)
{
Return;
}

Var x As New SPoint(500, 500);

test(x, 10);


Kompilierung erfolgreich.


Kann mir bitte mal jemand meinen Fehler in Code 1 erklären?

Artemide
21-10-2012, 18:36
Hi,
bin kein Experte aber könnte das was mit ByRef und ByVal zu tun haben ?

Denn mit dem New erzeugts Du ja ne neue Instanz einer Variablen aber wohin wird die zugewiesen?

Was wird jetzt an test übergeben, die Adresse der neuen Instanz Point oder das Value in der Adresse der neuen Instanz Point?
Ich glaube in Code 1 wird die Addresse übergeben, aber damit kann die Funktion test nichts anfangen, weil sie ja einen Wert erwartet !

In C gab es da, so weit ich mich erinnere, eine Deklaration mit der man das festgelegt hat aber das ist zu lange her.

cu
Arte

Dragon Head
22-10-2012, 23:37
Das funktioniert vermutlich auch so in Java aber unser Scriptsystem ist etwas anders aufgebaut.

Elchi
30-10-2012, 12:33
Hi,
bin kein Experte aber könnte das was mit ByRef und ByVal zu tun haben ?

Denn mit dem New erzeugts Du ja ne neue Instanz einer Variablen aber wohin wird die zugewiesen?

Was wird jetzt an test übergeben, die Adresse der neuen Instanz Point oder das Value in der Adresse der neuen Instanz Point?
Ich glaube in Code 1 wird die Addresse übergeben, aber damit kann die Funktion test nichts anfangen, weil sie ja einen Wert erwartet !

In C gab es da, so weit ich mich erinnere, eine Deklaration mit der man das festgelegt hat aber das ist zu lange her.

cu
Arte

Gegenbeispiel:


Function test(s As SPoint)
{
Return;
}

test(New SPoint(500, 500));


Kompilierung erfolgreich.

Auch das Ausführen funktioniert prima


Es liegt wahrscheinlich daran, dass sich in den Scriptcompiler ein Bug "eingeschlichen" hat und er die Klammern nicht richtig auflösen kann.

lg
Elchi