Français
Forum

Dynamische liste de Objekten=

 

Nico
Madysa
je hab mich la fois y versucht, cela System trop überlisten um Klassenobjekte dynamisch aufzulisten. mon idée dabei était, dass un einziges objet quasi comme Lesekopf verwendet wird. Wird un nouveau objet erzeugt, so wird sa Adresse dans einem bereich aufgelistet. veux on ensuite puis zugreifen, so wird qui Adresse dem Lesekopfobjekt zugewiesen et ensuite peut qui gewünschten Operationen fonctionnement volonté. malheureusement funktioniert cela Ganze encore pas so wirklich. Hat quelqu'un (iF?) une concept, comment on qui concept weiterführen peux?
KompilierenMarqueSéparation
Class TPoint = x& , y&

proc TPoint.TPoint

    parameters ppx& , ppy&
    .x& = ppx&
    .y& = ppy&

endproc

declare Point# , Stack#
neuen Punkt in die Liste eintragen

proc NewPoint

    parameters px& , py&
    Hier wird der Punkt als Klasse ganz gewohnt erzeugt.
    Point# = New(TPoint,px&,py&)
    Hier ist der Trick: Damit der Punkt nicht verloren geht, wird seine
    Adresse in einer internen Liste (Stack#) gespeichert. Die Liste ist
    dynamisch, daher können theoretisch unendlich viele Punkte erzeugt werden.
    Dim Stack# , SizeOf(Stack#) + 4
    Long Stack# , (SizeOf(Stack#) - 4) = Point#

endproc

Bei allen folgenden Prozeduren wird zuerst die Adresse des gewünschten
Punktes auf das als Lesekopf dienende Objekt übertragen. Aus ihm können
dann alle gewünschten Informationen ausgelesen werden.

proc SetPointX

    parameters nr% , px&
    Point# = Long(Stack#,nr% * 4)
    Point#.x& = px&

endproc

proc SetPointY

    parameters nr% , py&
    Point# = Long(Stack#,nr% * 4)
    Point#.y& = py&

endproc

proc GetPointX

    parameters nr%
    Point# = Long(Stack#,nr% * 4)
    return Point#.x&

endproc

proc GetPointY

    parameters nr%
    Point# = Long(Stack#,nr% * 4)
    return Point#.y&

endproc

proc Draw

    parameters nr%
    Point# = Long(Stack#,nr% * 4)
    SetPixel Point#.x& , Point#.y& , 0

endproc

Auch hier nimmt das Lesekopfobjekt die Adresse des gewünschten Punktes an.
Dieser wird dispost und dann aus der Liste entfernt. Das Lesekopfobjekt wird
anschließend weiter verwendet.

proc DelPoint

    parameters nr%
    Point# = Long(Stack#,nr% * 4)
    Dispose Point#
    Char Stack# , (nr% * 4) = Char$(Stack#,(nr% * 4) + 4,SizeOf(Stack#) - (nr% * 4) - 4)
    Dim Stack# , SizeOf(Stack#) - 4

endproc

Hier werden der Reihe nach alle Punkte dispost und danach auch die Liste selbst.

proc ClearStack

    whileloop 0 , SizeOf(Stack#) , 4

        Point# = Long(Stack#,&loop)
        Dispose Point#

    EndWhile

    Dispose Stack#

endproc

Hauptprogramm
cls

whileloop 20,40

    NewPoint &loop,20

EndWhile

whileloop 0,20

    Draw &loop

EndWhile

ClearStack
waitinput
end

3 kB
Kurzbeschreibung: Dynamische Objektliste
Hochgeladen:03.07.2008
Downloadcounter83
Download
 
Nico Madysa
03.07.2008  
 



je vermute ici liegt lediglich cela Problem avant, dass Du grenier dans einer Funktion reservierst quel pour sortir de qui Funktion freigegeben wurde. Du merkst Dir zwar global qui Adresse, mais pas den le contenu.
 
03.07.2008  
 



Nachtrag: Reserviere doch grenier comment je es dans qui scrollarea.inc tue - per long m=globalAlloc(gPtr,_size) et kopiere den Klasseninhalt là hinein. (Dadurch schliesst Du DIM aus, alors aucun automatische Speicherfreigabe pour sortir de qui Funktion.)

Pour Objekteigenschaften sollte cela marcher, comment sich cela avec den Methoden verhält steht vlt. sur einem anderen Blatt.
 
03.07.2008  
 



répondre


Topictitle, max. 100 marque.
 

Systemprofile:

ne...aucune Systemprofil angelegt. [anlegen]

XProfan:

 Posting  Font  Smilies  ▼ 

s'il te plaît s'inscrire um une Beitrag trop verfassen.
 

Options du sujet

661 Views

Untitledvor 0 min.
Ragnar Rehbein08.03.2013
Nico Madysa05.04.2011

Themeninformationen

cet Thema hat 2 participant:

iF (2x)
Nico Madysa (1x)


Admins  |  AGB  |  Applications  |  Auteurs  |  Chat  |  protection des données  |  Télécharger  |  Entrance  |  Aider  |  Merchantportal  |  Empreinte  |  Mart  |  Interfaces  |  SDK  |  Services  |  Jeux  |  cherche  |  Support

un projet aller XProfaner, qui il y a!


Mon XProfan
Privé Nouvelles
Eigenes Ablageforum
Sujets-La liste de voeux
Eigene Posts
Eigene Sujets
Zwischenablage
Annuler
 Deutsch English Français Español Italia
Traductions

protection des données


Wir verwenden Cookies seulement comme Session-Cookies à cause de qui technischen Notwendigkeit et chez uns gibt es aucun Cookies de Drittanbietern.

si du ici sur unsere Webseite klickst ou bien navigierst, stimmst du unserer Erfassung de Informationen dans unseren Cookies sur XProfan.Net trop.

Weitere Informationen trop unseren Cookies et en supplément, comment du qui Kontrolle par-dessus behältst, findest du dans unserer nachfolgenden Datenschutzerklärung.


d'accordDatenschutzerklärung
je voudrais keinen Cookie