Compile Error: Expression of type 'Double' cannot be invoked

Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Neue Antwort erstellen

s_m_w

Betreff: Compile Error: Expression of type 'Double' cannot be invoked

BeitragFr, Dez 19, 2008 17:08
Antworten mit Zitat
Benutzer-Profile anzeigen
Moin,
Ich bekomme diesen für mich unverständlichen Error und kann mir keinen Reim daraf machen. Hier mal die entsprechenden Codezeilen (Compiler sagt Fehler liegt bei 180:6, was der Anfang des ifs ist)

Code: [AUSKLAPPEN]

    ...
    If ( IsIn( TargetR(Self,Self.Target) ,Self.R-2,Self.R+2) )
    ...
    endif
    ...

Code: [AUSKLAPPEN]
Function TargetR:Double(Ship1:Ship,Ship2:Ship)
  Return ATan2(Ship1.Y-Ship2.Y,Ship1.X-Ship2.X)-90
End Function

Function IsIn:Int(Value:Double,MinVal:Double,MaxVal:Double)
  If Value > MinVal
    If Value < MaxVal
      Return 1
    EndIf
  EndIf
  Return 0
End Function

Self und Self.Target sind beides Objekte vom Typ Ship, IsIn und TargetR funktionieren auch wunderbar. Danke im Vorraus!
Sheep Happens
  • Zuletzt bearbeitet von s_m_w am Fr, Dez 19, 2008 18:16, insgesamt einmal bearbeitet

D2006

Administrator

BeitragFr, Dez 19, 2008 17:53
Antworten mit Zitat
Benutzer-Profile anzeigen
Welchen Datentyp hat Self.R bzw. Ship.R

EDIT: ehe sich das hier stundenlang hinzieht... Falls dieses R kein Double ist, sondern zB ein Float, musst du es wohl erst explizit casten.
Intel Core i5 2500 | 16 GB DDR3 RAM dualchannel | ATI Radeon HD6870 (1024 MB RAM) | Windows 7 Home Premium
Intel Core 2 Duo 2.4 GHz | 2 GB DDR3 RAM dualchannel | Nvidia GeForce 9400M (256 MB shared RAM) | Mac OS X Snow Leopard
Intel Pentium Dual-Core 2.4 GHz | 3 GB DDR2 RAM dualchannel | ATI Radeon HD3850 (1024 MB RAM) | Windows 7 Home Premium
Chaos Interactive :: GoBang :: BB-Poker :: ChaosBreaker :: Hexagon :: ChaosRacer 2

s_m_w

BeitragFr, Dez 19, 2008 18:13
Antworten mit Zitat
Benutzer-Profile anzeigen
R ist ein Double
Sheep Happens

BtbN

BeitragFr, Dez 19, 2008 19:09
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]
If ( IsIn( TargetR(Self,Self.Target) ,Self.R-2,Self.R+2) )


->

Code: [AUSKLAPPEN]
If IsIn(TargetR(Self,Self.Target), Self.R-2, Self.R+2) Then


Würde ich schätzen.

Geeecko

BeitragFr, Dez 19, 2008 19:18
Antworten mit Zitat
Benutzer-Profile anzeigen
Ist das selbe.
Fals mir jetzt nichts besonderes aufgefallen ist.

FOODy

BeitragFr, Dez 19, 2008 19:25
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi, s_m_w.
"Compile Error: Expression of type 'Double' cannot be invoked" bedeutet, dass du versuchst ein, in diesem Fall, Double-Wert wie eine Funktion aufzurufen.

"IsIn" oder "TargetR" ist in dem Ship-Type (Oder des Super-Types) nicht zufällig als Field, Global oder Const definiert?

Grüße,
FOODy
BlitzMax + MaxGUI, 64-bit Arch Linux: Intel Core² E8500 | 8 GB Ram | GeForce GTX 460 · 1024 MB

s_m_w

BeitragFr, Dez 19, 2008 19:51
Antworten mit Zitat
Benutzer-Profile anzeigen
TargetR ist tatsächlich auch ein Field.. Okay, geht jetzt, danke für die Hilfe Smile
Sheep Happens

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group