Buchempfehlung
Windows-Programmierung. Das Entwicklerhandbuch zur WIN32-API
Windows-Programmierung. Das Entwicklerhandbuch zur WIN32-API
"Der" Petzold, das über 1000 Seiten starke Standardwerk zum Win32-API - besonders nützlich u. a. bei der GUI-Programmierung in FreeBASIC! [Mehr Infos...]
FreeBASIC-Chat
Es sind Benutzer im FreeBASIC-Chat online.
(Stand:  )
FreeBASIC bei Twitter
Twitter FreeBASIC-Nachrichten jetzt auch über Twitter erhalten. Follow us!

fb:porticula NoPaste

Info
Info / Hilfe
Liste
Übersicht / Liste
Neu
Datei hochladen
Suche
Quellcode suchen
Download
Dateidownload

Collection.bas - Die Demo zur Collection.bi

Uploader:MitgliedWeazle25
Datum/Zeit:12.03.2009 13:58:27

'+--------------------------------------------------------------+
'| +----------------------------------------------------------+ |
'| |  Projekt:      Collection-Demo                           | |
'| |  Version:      0.01                                      | |
'| |  Start:        11.03.2009                                | |
'| |  Autor:        Weazle25                                  | |
'| |  Lizenz:       Open Source                               | |
'| |  Beschreibung: Collection ist eine doppelt verkettete    | |
'| |                Liste in ihrer (fast) einfachsten Form.   | |
'| |                Ich habe sie nur so erweitert das man     | |
'| |                mehrere von einander unabhängige Listen   | |
'| |                erstellen kann.                           | |
'| |                Dies ist die Demo dazu.                   | |
'| +----------------------------------------------------------+ |
'+--------------------------------------------------------------+

#Include "collection.bi"

Dim Collection1 As TCollection
Dim Collection2 As TCollection
Dim NodeA As TCollectionNode Ptr
Dim NodeB As TCollectionNode Ptr
Dim Value As ZString Ptr

Dim Counter As UByte

'Die beiden Listen mit Inhalt füllen
For Counter = 1 To 10
    Value = Callocate(21,1)
    *Value = "String_" + Str(Counter) + "a"
    NodeA = Collection1.FNew( Value )

    Value = Callocate(21,1)
    *Value = "String_" + Str(Counter) + "b"
    NodeA = Collection2.FNewAtFirst( Value )
Next

'Den ersten und den letzten Node der ersten Liste holen
NodeA = Collection1.FLast()
NodeB = Collection1.FFirst()

'Den letzten Node an den Anfang der Liste verschieben
Counter = Collection1.FInsert( NodeA, CBefore, NodeB )

'Den ersten Node der zweiten Liste holen...
NodeB = Collection2.FFirst()

'...und an den Anfang der ersten Liste setzen
Counter = Collection1.FInsert( NodeB, CBefore, NodeA )

Screen 19

'Die erste Liste auf den Bildschirm bringen
NodeA = Collection1.FFirst()
Counter = 1
Locate Counter, 0, 0
Print Str(Collection1.PCount)
While NodeA <> 0
    Counter += 1
    Locate Counter, 0, 0
    Value = NodeA->VValue
    Print *Value
    NodeA = Collection1.FAfter( NodeA )
Wend

'und jetzt die zweite Liste
NodeA = Collection2.FFirst()
Counter = 1
Locate Counter, 50, 0
Print Str(Collection2.PCount)
While NodeA <> 0
    Counter += 1
    Locate Counter, 50, 0
    Value = NodeA->VValue
    Print *Value
    NodeA = Collection2.FAfter( NodeA )
Wend

'eine kleine Schleife damit man auch was von der Ausgabe hat
Locate 20, 1, 1
PRINT "Druecken Sie 'Q', um zu beenden"
Do
    Sleep 1
LOOP UNTIL INKEY = "q"


'Den Inhalt der ersten Liste löschen
NodeA = Collection1.FFirst()
While NodeA <> 0
    Value = NodeA->VValue
    DeAllocate Value
    Collection1.FDelete(NodeA)
    NodeA = Collection1.FFirst()
Wend

'und nun die zweite Liste
NodeA = Collection2.FFirst()
While NodeA <> 0
    Value = NodeA->VValue
    DeAllocate Value
    'Hier wird versucht mit der FDelete-Funktion der ersten Liste ein Node der zweiten Liste zu löschen.
    'FDelete ruft daher intern die FDelete-Funktion der zweiten Liste auf.
    Collection1.FDelete(NodeA)
    NodeA = Collection2.FFirst()
Wend