Datentyp CList

Aber ich bekomme diese Methode leider nicht auf mein Objekt angewendet bzw. angeboten.
Wie äußert sich das? Ich wüsste keinen Grund, warum "RemoveAll" nicht gehen sollte.

Gruß
MCoder

//Nachtrag: Du hast natürlich immer noch die Möglichkeit, die einzelnen Elemente in einer Schleife zu löschen:
C++:
while( myList.GetCount() )
{
    myList.RemoveHead();
}
 
Zuletzt bearbeitet:
Jo danke mcoder die idee hatte ich kurz nachdem ich hier die Frage gestellt habe so bekomme ich es auch hin.

Aber ich habe da ein ganz anders Problem.

cpp Code:
POSITION pos = clHeader_1001to1004.listMes1004.GetHeadPosition();
for( int i = 0; i < clHeader_1001to1004.listMes1004.GetCount(); i++ ){

clMes_1004_ausgabe = clHeader_1001to1004.listMes1004.GetNext(pos);
}

Die Methode habe ich einfach erweitert um die Ausgabe meiner Objektelemente. Und genau da ist jetzt derPunkt wo es hackt.
Ich habe meist ziwschen 7-10 Obejkten in einer Liste. Die Forschleife hat aber einen Laufindex bis über 100. Wo dran kann das liegen. Dort wird anscheind eine andere Länge bestimmt und nicht die Anzahl die in der Liste verfügbar sind. Habe das dann anders gelöst.

Bekomme aber leider nicht das Objekt aus der Liste zurück immer nur das erste oder letzte. Was mache ich flasch, besser gesagt wie bekomme ich es hin das ich immer in der Liste ein Element nach oben gehe.

Code:
POSITION pos = clHeader_1001to1004.listMes1004.GetHeadPosition();
clMes_1004_ausgabe=clHeader_1001to1004.listMes1004.GetHead();
 for( int i = 0; i < isiehda; i++ ){
//beimersten durchlauf bekomme ich das eerste Element ausgegeben
//aber wie sage ich jetzt das ich gern das zweite hätte:
 clMes_1004_ausgabe=clHeader_1001to1004.listMes1004.GetNext(pos);
//aber wie komme ich dann an die nächste pos
}

Bitte um Hilfe
 
Die Forschleife hat aber einen Laufindex bis über 100. Wo dran kann das liegen.
Die Methode GetCount() gibt auf jeden Fall die Anzahl der Elemente zurück. Wie befüllst du die Liste denn?
wie bekomme ich es hin das ich immer in der Liste ein Element nach oben gehe.
Eigentlich klappt das schon mit der von mir geposteten for-Schleife. Die Methode GetHead() gibt ausgehend von "pos" immer das nächste Element zurück und aktualisiert gleichzeitig "pos".
Ich habe mal ein kleines Beispiel gemacht, das klaglos funktioniert:
C++:
CList<CString, CString&> liste;

liste.AddTail(CString(_T("Eins")));
liste.AddTail(CString(_T("Zwei")));
liste.AddTail(CString(_T("Drei")));

POSITION pos = liste.GetHeadPosition();

for( int i = 0; i < liste.GetCount(); i++ )
{
    CString str = liste.GetNext(pos);
}
Gruß
MCoder
 
Wenn es dir nicht auf die Position ankommt, an der eingefügt wird, ist es eigentlich egal. "AddHead" fügt immer am Anfang der Liste ein und "AddTail" am Ende.

Gruß
MCoder
 
Zurück