Listenproblem
Übersicht

Oliver BBetreff: Listenproblem |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hallo zusammen, ich habe mit Types und Listen ein kleines Problem.
Mein kleines Programm soll auf Tastendruck der linken maustaste an der jeweiligen Stelle einen Kreis zeichnen. Nur meckert der Compiler immer "Identifier 'PunkteListe' not found Ich hab schon alles mögliche versucht, nur komme ich auf keine Lösung. Irgendeine Idee wo mein Fehler liegt? Code: [AUSKLAPPEN] Strict Global flagml = 0 Type PunktType Field X#, Y# ' Koordinaten der Punkte Field Size = 25 'Größe der Kreise Global PunkteListe: TList Method Draw () DrawOval(X-Size/2, Y-Size/2, Size, Size) End Method Function Erstellen () 'Erstellen eines neuen Kreises in die Liste Local NewPunkt:PunktType NewPunkt = New PunktType NewPunkt.X = MouseX() ;NewPunkt.Y = MouseY() If Not PunkteListe Then PunkteListe = CreateList() ListAddLast (PunkteListe, NewPunkt) EndFunction End Type Graphics 800,600 While Not KeyDown(Key_Escape) If MouseDown(1) = 1 Then ' Maustaste drücken If flagml=0 Then PunktType.Erstellen () flagml=1 EndIf EndIf If MouseDown(1) = 0 ' keine Maus gedrückt flagml = 0 EndIf For Local Punkt:PunktType = EachIn PunkteListe Punkt.Draw () DrawText "Anzahl der Punkte : "+List.Count(), 20, 20 DrawText "Press ESC to exit", 20, 40 Next Flip ;Cls Wend |
||
![]() |
mahe |
![]() Antworten mit Zitat ![]() |
---|---|---|
Zitat: For Local Punkt:PunktType = EachIn PunkteListe
sollte so aussehen: Zitat: For Local Punkt:PunktType = EachIn PunktType.PunkteListe
|
||
ʇɹǝıdɯnɹɹoʞ ɹnʇɐuƃıs - ǝpoɥʇǝɯ-ɹoɹɹıɯ ɹǝp uı ,ɹoɹɹǝ, |
Oliver B |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
mahe hat Folgendes geschrieben: Zitat:
For Local Punkt:PunktType = EachIn PunkteListe
sollte so aussehen: Zitat: For Local Punkt:PunktType = EachIn PunktType.PunkteListe das läuft leider auch nicht. Immer noch Compile Error "Identifier 'List' not found ich habe mich bei der Erstellung meines Programmes ziemlich nahe an http://www.truplo.com/blitzmax...ave11.html gehalten |
||
![]() |
mahe |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ach, das war erst der erste Fehler.
Hier der nächste (und letzte!): Schreib: Zitat: DrawText "Anzahl der Punkte : "+PunktType.PunkteListe.Count(), 20, 20
statt: Zitat: DrawText "Anzahl der Punkte : "+List.Count(), 20, 20
Das Anlegen und befüllen der Liste funktioniert zwar mit Deiner Variante, ist aber so viel hübscher: Zitat: If Not PunkteListe Then PunkteListe = New TList
PunkteListe.AddLast(NewPunkt) |
||
ʇɹǝıdɯnɹɹoʞ ɹnʇɐuƃıs - ǝpoɥʇǝɯ-ɹoɹɹıɯ ɹǝp uı ,ɹoɹɹǝ, |
![]() |
Moep |
![]() Antworten mit Zitat ![]() |
---|---|---|
Und das hier noch :
Code: [AUSKLAPPEN] For Local Punkt:PunktType = EachIn PunkteListe
Punkt.Draw () DrawText "Anzahl der Punkte : "+PunktType.PunkteListe.Count(), 20, 20 DrawText "Press ESC to exit", 20, 40 Next Drawtext hat nix in der For-Schleife zu suchen. Sonst malst du für jeden Punkt in deiner den Text an die gleiche Position...das bringt recht wenig ![]() Code: [AUSKLAPPEN] For Local Punkt:PunktType = EachIn PunkteListe
Punkt.Draw () Next DrawText "Anzahl der Punkte : "+PunktType.PunkteListe.Count(), 20, 20 DrawText "Press ESC to exit", 20, 40 mfg |
||
Hardstyle Schleichwerbung:
http://www.youtube.com/user/Hackepeter42 Achtung: Suchtgefahr! moep123.ohost.de |
Oliver B |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
mahe hat Folgendes geschrieben: Ach, das war erst der erste Fehler.
Hier der nächste (und letzte!): Schreib: Zitat: DrawText "Anzahl der Punkte : "+PunktType.PunkteListe.Count(), 20, 20
statt: Zitat: DrawText "Anzahl der Punkte : "+List.Count(), 20, 20
Das Anlegen und befüllen der Liste funktioniert zwar mit Deiner Variante, ist aber so viel hübscher: Zitat: If Not PunkteListe Then PunkteListe = New TList
PunkteListe.AddLast(NewPunkt) Leider hab ich jetzt "Unhandel Exception: Attempt to access field or method of Null object" Deine hübschere Variante zum befüllen der Liste ist irgendwie in den untiefen des Forums verloren gegangen. Ach ja, das Tutorial von dem ich gelernt hatte (siehe Link oben), funktioniert auch nicht. Ist es vielleicht so alt, dass es mit der aktuellen Version von Blitzmax nicht mehr funktioniert? Zitat: Drawtext hat nix in der For-Schleife zu suchen. Sonst malst du für jeden Punkt in deiner den Text an die gleiche Position...das bringt recht wenig
Stimmt, ist irgendwie doppelt gemoppelt. |
||
![]() |
d-bug |
![]() Antworten mit Zitat ![]() |
---|---|---|
So wie ich das sehe solltest du die Liste lieber schon mal erstellen, bevor du die Maustaste abfragst, denn so schnell kannst du gar nicht drücken, wie das erste mal die Liste abgefragt werden soll.
Du kannst allerdings auch erst mal prüfen ob die Liste existiert, bevor du sie abfragst: Code: [AUSKLAPPEN] If PunktType.PunktListe For Local Punkt:PunktType = EachIn PunktType.PunkteListe Punkt.Draw () Next DrawText "Anzahl der Punkte : "+PunktType.PunkteListe.Count(), 20, 20 EndIf DrawText "Press ESC to exit", 20, 40 |
||
Oliver B |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
d-bug hat Folgendes geschrieben: So wie ich das sehe solltest du die Liste lieber schon mal erstellen, bevor du die Maustaste abfragst, denn so schnell kannst du gar nicht drücken, wie das erste mal die Liste abgefragt werden soll.
Hm, stimmt, wenn ich die Liste vorher erstelle Funtioniert das Programm... seltsam Hier das funktionierende Programm Code: [AUSKLAPPEN] Strict
Global flagml = 0 Type PunktType Field X#, Y# ' Koordinaten der Punkte Field Size = 25 'Größe der Kreise Global PunkteListe: TList = CreateList() Method Draw () DrawOval(X-Size/2, Y-Size/2, Size, Size) End Method Function Erstellen () 'Erstellen eines neuen Kreises in die Liste Local NewPunkt:PunktType NewPunkt = New PunktType NewPunkt.X = MouseX() ;NewPunkt.Y = MouseY() ListAddLast (PunkteListe, NewPunkt) EndFunction End Type Graphics 800,600 While Not KeyDown(Key_Escape) If MouseDown(1) = 1 Then ' Maustaste drücken If flagml=0 Then PunktType.Erstellen () flagml=1 EndIf EndIf If MouseDown(1) = 0 ' keine Maus gedrückt flagml = 0 EndIf For Local Punkt:PunktType = EachIn PunktType.PunkteListe Punkt.Draw () Next DrawText "Anzahl der Punkte : "+PunktType.PunkteListe.Count(), 20, 20 Flip ;Cls Wend Danke euch für die Hilfe. |
||
![]() |
BlitzMoritz |
![]() Antworten mit Zitat ![]() |
---|---|---|
Seltsam? d-bug hat's doch erklärt:
Bevor irgendwelche Benutzerinputs möglich wären, würden bereits einige Durchgänge deiner While-Schleife stattgefunden haben. Und sobald die Schleife einmal komplett durchläuft, wird auch nach deiner Liste gefragt ("EachIn PunktType.PunkteListe "). Und die gäb's dann noch nicht.... |
||
Oliver B |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ok, jetzt hab ich es kapiert.
Danke nochmal an alle für die schnelle Hilfe |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group