Types und Funktionen
Übersicht

DarrenBetreff: Types und Funktionen |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hey com!
ich bin grade dabei mein altes dreiecks-tool nochmal komplett neu zu schreiben und diesmal mit ziemlich modularem aufbau. um das bequem zu erreichen benutz ich types bei denen ich lange rumgetüftelt habe, bis ich da ne sinnvolle struktur und "hierachie" drin hatte. jetzt würde ich an eine funktion gerne mehrere zeiger übergeben und auch wieder nen zeiger rausbekommen. das mache ich hier beispielsweise so: Code: [AUSKLAPPEN] Type point Field x,y Field used Field selected End Type Type straight Field point1.point Field point2.point Field a1,a2;aufpunkt Field v1#,v2#;richtung Field length# Field selected Field r,g,b End Type ;------- .... Local str_punkt.point[1] For punkt.point = Each point If punkt\selected = 1 Then str_punkt[i] = punkt.point i = i + 1 punkt\used = 1 If i = 2 Then Exit End If Next gerade.straight = New straight gerade.straight = connect_points.straight(gerade.straight,str_punkt.point[0],str_punkt.point[1],0,0,0) das programm bricht mit der fehlermeldung: "variable type mismatch" ab. und der cursor blinkt am anfang der letzten codezeile. hier die zugehörige funktion: Code: [AUSKLAPPEN] Function connect_points.straight(linie.straight,p1.point,p2.point,r=255,g=0,b=255)
Local l#,dx#,dy# ;punkte der linie zuweisen ;linie ;aufpunkt der linie linie\a1 = p1\x linie\a2 = p1\y ;steigung dx = p1\x-p2\x dy = p1\y-p2\y ;länge l = Sqr(dx^2+dy^2) linie\v1 = dx/l linie\v2 = dy/l linie\length = l ;farbe linie\r = r linie\g = g linie\b = b Return linie.straight End Function Ich kann mir die fehlermeldung absolut nicht erklären. vielleicht jemand von euch? lg Darren |
||
MFG Darren |
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
In der Funktion ist die Variable "linie.straight" zwar übergeben worden, aber bin mir grad nicht sicher, ob das ausreichend deklariert ist. Du könntest mit last![]() |
||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
Darren |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Xeres hat Folgendes geschrieben: In der Funktion ist die Variable "linie.straight" zwar übergeben worden, aber bin mir grad nicht sicher, ob das ausreichend deklariert ist. Du könntest mit last
![]() Eigentlich wollte ich das NEW nicht in der Funktion haben, habe es aber mal reingeschrieben und einen kleinen Fehler im Code ausgebessert, wenn ich jetzt folgenden Code ausführen will: Code: [AUSKLAPPEN] Local str_punkt.point[1]
For punkt.point = Each point If punkt\selected = 1 Then str_punkt.point[i] = punkt.point i = i + 1 punkt\used = 1 If i = 2 Then Exit End If Next gerade.straight = New straight gerade.straight = connect_points.straight(str_punkt.point[0],str_punkt.point[1],0,0,0) dann spuckt mir blitz die gleiche meldung wie vorher aus. doch an folgender stelle: Code: [AUSKLAPPEN] str_punkt.point[i] = punkt.point scheinbar verhalten sich blitzarrays als zeiger ein wenig anders, als man es erwarten könnte. zumal in types blitzarrays als zeiger wunderbar funktionieren. |
||
MFG Darren |
![]() |
Noobody |
![]() Antworten mit Zitat ![]() |
---|---|---|
Solche Probleme hatte ich auch einmal - die Lösung kam dann relativ unerwartet.
Bei Blitzarrays darf man nur bei der Deklaration den Variablentyp angeben ($, %, # oder ein Typename). Hängt man irgendwo sonst im Code den Variablentyp dennoch dran, spuckt der Compiler ein 'Variable Type mismatch' aus, selbst wenn man dasselbe Typzeichen verwendet hat wie bei der Deklaration. |
||
Man is the best computer we can put aboard a spacecraft ... and the only one that can be mass produced with unskilled labor. -- Wernher von Braun |
Darren |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Noobody hat Folgendes geschrieben: Solche Probleme hatte ich auch einmal - die Lösung kam dann relativ unerwartet.
Bei Blitzarrays darf man nur bei der Deklaration den Variablentyp angeben ($, %, # oder ein Typename). Hängt man irgendwo sonst im Code den Variablentyp dennoch dran, spuckt der Compiler ein 'Variable Type mismatch' aus, selbst wenn man dasselbe Typzeichen verwendet hat wie bei der Deklaration. Das stimmt! Das macht den Code zwar ein wenig unübersichtlicher, aber du hast recht. vielen dank. Diese erkenntnis sollte vielleicht in der hilfe erwähnt werden. |
||
MFG Darren |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group