Rückgabe von Liste.Last?

Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Neue Antwort erstellen

M0rgenstern

Betreff: Rückgabe von Liste.Last?

BeitragMi, Jun 09, 2010 13:13
Antworten mit Zitat
Benutzer-Profile anzeigen
Hey Leute.
Was genau gibt denn der Befehl Last einer Liste zurück?
Das letzte Objekt in der Liste, okay. Aber in welcher Form?
Wenn ich local RueckWP:TWaypoint = tlallwaypoints.last mache dann bekomme ich nur ne Fehlermeldung.

Lg, M0rgenstern

hamZta

Administrator

BeitragMi, Jun 09, 2010 13:33
Antworten mit Zitat
Benutzer-Profile anzeigen
Vermutlich gibts einen TLink zurück.

Das findest du genauer raus wenn du in den Source-Code des Modules schaust.

hamZta
Blog.

DaysShadow

BeitragMi, Jun 09, 2010 13:42
Antworten mit Zitat
Benutzer-Profile anzeigen
BlitzMax: [AUSKLAPPEN]
Local RueckWP:TWaypoint = TWayPoint( tlallwaypoints.last( ) )


Last( ) gibt das letzte Objekt in Form des Types Object zurück, siehe Hilfe, demnach musst du es erst noch in den Type casten den du brauchst oder erwartest.

MfG DaysShadow
Blessed is the mind too small for doubt

M0rgenstern

BeitragMi, Jun 09, 2010 15:27
Antworten mit Zitat
Benutzer-Profile anzeigen
Hey.
Vielen Dank.

Das ganze funktioniert jetzt trotzdem nicht so, wie ich es wollte.
Schreibe mir den Listentypen dann jetzt mal selber.


Lg, M0rgenstern

BladeRunner

Moderator

Betreff: Re: Rückgabe von Liste.Last?

BeitragMi, Jun 09, 2010 16:13
Antworten mit Zitat
Benutzer-Profile anzeigen
M0rgenstern hat Folgendes geschrieben:

Wenn ich local RueckWP:TWaypoint = tlallwaypoints.last mache dann bekomme ich nur ne Fehlermeldung.


Ich möchte das hier zum Anlaß nehmen euch nochmal drauf hinzuweisen dass es immer sinnig ist genau auszuführen WAS denn für ein Fehler kommt. Wir sehen euren Bildschirm ja nicht. Und dann wäre es nett zu erfahren was 'immer noch nicht richtig' funktioniert, denn bei mir klappen TLists ganz formidabel. Beschreib doch einfach deinen Fehler statt komplett was neues zu basteln.
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92

M0rgenstern

BeitragMi, Jun 09, 2010 19:46
Antworten mit Zitat
Benutzer-Profile anzeigen
Sorry für die knappe Beschreibung.
Das war grade in der Schule als wir Pause hatten. Von daher konnte ich den Fehler auch nicht abtippen.

Das Problem ist folgendes: Ich möchte meine Wegpunkte in ner Liste verwalten. Wir haben das jetzt in Info gemacht. Liste als dynamische Datenstruktur.
Das würde im Prinzip mit TList ganz gut gehen. Problem ist nur, dass in einer Liste die Objekte nicht automatisch aufs folgende zeigen. Habe versucht das selbst einzubauen, aber das hat nicht funktioniert.
Und da habe ich mir gedacht, dass ich mir (nur für die Wegpunkte) eine eigene Liste schreibe, die die ganzen Dinge wie einfügen, voranfügen, anfügen etc kann und in der die Dinge automatisch verkettet werden.

Also, jeder Wegpunkt hat ein Attribut "Follower:TWaypoint". Und das will ich halt automatisch vergeben wenn ein neuer Wegpunkt erstellt wird etc.

Das war meine Überlegung.

Lg, M0rgenstern

Goodjee

BeitragMi, Jun 09, 2010 19:49
Antworten mit Zitat
Benutzer-Profile anzeigen
jede liste besteht aus TLinks, ein tlink hat einen vorgänger, ein objekt und einen nachfolger. die liste hat methoden mit diesen links zu hantieren anstatt direkt mit den objekten in den links.
"Ideen sind keine Coladosen, man kann sie nicht recyclen"-Dr. House
http://deeebian.redio.de/ http://goodjee.redio.de/

M0rgenstern

BeitragMi, Jun 09, 2010 20:01
Antworten mit Zitat
Benutzer-Profile anzeigen
Und wie kann ich auf die Vorgänger und Nachfolger zugreifen?
Hab mal grade die hilfe durchsucht aber bin nicht schlau drauß geworden.

Lg, M0rgenstern

mpmxyz

BeitragMi, Jun 09, 2010 20:05
Antworten mit Zitat
Benutzer-Profile anzeigen
BlitzMax: [AUSKLAPPEN]
Local currentLink:TLink=List.FirstLink()
While Link
Local Objekt:Object=currentLink.Value()
Link=Link.NextLink()
Wend

Dieser Beispielcode geht eine komplette Liste durch.
mfG
mpmxyz
Moin Moin!
Projekte: DBPC CodeCruncher Mandelbrot-Renderer

Goodjee

BeitragMi, Jun 09, 2010 20:09
Antworten mit Zitat
Benutzer-Profile anzeigen
in der hilfe ist doch die komplette dokumentation oO
"Ideen sind keine Coladosen, man kann sie nicht recyclen"-Dr. House
http://deeebian.redio.de/ http://goodjee.redio.de/

M0rgenstern

BeitragMi, Jun 09, 2010 21:13
Antworten mit Zitat
Benutzer-Profile anzeigen
Hey vielen Dank.
Jetzt hab ich das ganze mal richtig verstanden^^
Funktioniert super. Nur die dauernde Übrprüfung ob ein Link und dann ein Objekt nicht "NULL" ist nervt ein wenig^^

Lg, M0rgenstern

BladeRunner

Moderator

BeitragMi, Jun 09, 2010 21:22
Antworten mit Zitat
Benutzer-Profile anzeigen
for local l:Tirgendwas = eachin deineListe

.... iteriert durch die komplette Liste - und zwar in der Reihenfolge in der die Elemente hinzugefügt wurden.
Von daher verstehe ich dein Problem weiterhin nicht so ganz.

Wenn Du Funktionalität wie unter BB willst: https://www.blitzforum.de/foru...fore+after
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92

M0rgenstern

BeitragMi, Jun 09, 2010 21:36
Antworten mit Zitat
Benutzer-Profile anzeigen
Nein.
Ich meinte eher sowas:

BlitzMax: [AUSKLAPPEN]
	Method Destroy()
Local RemovedLink:TLink = tlallwaypoints.FindLink(Self)
Local BeforeLink:TLink = removedlink.PrevLink()
Local AfterLink:TLink = removedlink.NextLink()
Local RemovedWaypoint:TWaypoint
Local AfterWaypoint:TWaypoint
Local BeforeWaypoint:TWaypoint

If RemovedLink <> Null Then
If RemovedLink.Value() <> Null Then
RemovedWaypoint = TWaypoint(RemovedLink.Value())
End If
EndIf
If AfterLink <> Null Then
If AfterLink.Value() <> Null Then
AfterWaypoint = TWaypoint(AfterLink.Value())
End If
EndIf
If BeforeLink <> Null Then
If BeforeLink.Value() <> Null Then
BeforeWaypoint = TWaypoint(BeforeLink.Value())
End If
EndIf

If BeforeWaypoint <> Null Then
BeforeWaypoint.Set_Follower(AfterWaypoint)
EndIf
tlAllWaypoints.Remove(RemovedWaypoint)
DebugLog "Wegpunkt gelöscht"
End Method


Das ist jetzt ne Funktion aus meinem Wegpunkte Typ.
Dadurch wird ein bestimmter Wegpunkt gelöscht. Der nachfolgende Knoten wird der neue Nachfolger des Knotens der vor dem gelöschten wegpunkt liegt.
Und ich musste halt überall überprüfen ob die Links oder die Objekte gleich "Null" sind. Ansonsten hab ich die Fehlermeldung erhalten, dass er auf ein nicht existierendes Objekt zugreifen soll.

Lg, M0rgenstern

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group