![]() |
Generics Fehler in TQueue? [edit: nein, Doku fehlerhaft]
bekommt jemand bei folgenden Beispiel:
![]() das richtige Ergebnis? oder habe ich ein Problem diese Ausgabe richtig zu interpretieren:
Code:
Element added: John
Element added: Mary Element added: Bob Element added: Anna Element added: Erica First enqueued element is: "John". Element extracted: John The queue contains 4 elements. Element removed: Mary First enqueued element is: "Mary". Element removed: Bob Element removed: Anna Element removed: Erica |
AW: Generics Fehler in TQueue?
Der Output sieht für mich korrekt aus, nur der Docwiki-Link funktioniert nicht (die rechte Klammer fehlt).
Erklärung: einmal wird Peek und einmal wird Dequeue aufgerufen um das erste Element anzuzeigen, die Lognachricht ist in beiden Fällen "First enqueued element is:", aber der Effekt auf die Queue ist unterschiedlich (Peek entfernt nichts). |
AW: Generics Fehler in TQueue?
ich hatte die Breakpoints falsch gesetzt, sorry, in Zusammenhang mit den Fehlerhaften Quellcodekomnentaren bin ich ins eigene Messer gelaufen.
Delphi-Quellcode:
{ Show the last enqueued element without modifying the Queue. }
MessageDlg('First enqueued element is: "' + Queue.Peek() + '".', mtInformation, [mbOK], 0); { Extract the top element: "Erica". } Queue.Extract(); |
AW: Generics Fehler in TQueue?
Wenn man sich die Meldungen durchliest, dann scheint mit "Mary" irgendwas nicht zu stimmen. :shock:
Code:
Aber es sind einfach nur "schlechte" Meldungstexte, bzw. sie werden in einer falschen ungünstigen Reihenfolge ausgegeben.
TQueue<String>.Create - -
Queue.Enqueue('John') Element added: John John Queue.Enqueue('Mary') Element added: Mary John Mary Queue.Enqueue('Bob') Element added: Bob John Mary Bob Queue.Enqueue('Anna') Element added: Anna John Mary Bob Anna Queue.Enqueue('Erica') Element added: Erica John Mary Bob Anna Erica Queue.Peek First enqueued element is: "John". [John] Mary Bob Anna Erica Queue.Extract Element extracted: John Mary Bob Anna Erica Queue.TrimExcess - - Queue.Count The queue contains 4 elements. [Mary Bob Anna Erica] Queue.Dequeue Element removed: Mary Bob Anna Erica {Queue.Dequeue} First enqueued element is: "Mary". [Bob] Anna Erica Queue.Clear Element removed: Bob Anna Erica {Queue.Clear} Element removed: Anna Erica {Queue.Clear} Element removed: Erica - Einfach mal diese beiden Meldungen austauschen und schon sieht es besser aus.
Code:
[add]
Queue.Dequeue Element removed: Mary Bob Anna Erica
{Queue.Dequeue} First enqueued element is: "Mary". [Bob] Anna Erica @mjustin: Mary wird entfernt und danach ist es dennoch drin (first). Das sieht also OK aus? |
AW: Generics Fehler in TQueue?
Schau dir doch den Beispiel Code an, ist doch logisch, dass zuerst das removed Event getriggert wird (durch den Dequeue aufruf) und das Ergebnis dieses Aufrufs ausgegeben wird.
|
AW: Generics Fehler in TQueue?
Zitat:
Delphi-Quellcode:
{ Show the last enqueued element without modifying the Queue. }
MessageDlg('First element is: "' + Queue.Peek() + '".', mtInformation, [mbOK], 0); ... { Show the last enqueued element by modifying the Queue. } MessageDlg('Enqueued element is: "' + Queue.Dequeue() + '".', mtInformation, [mbOK], 0); |
AW: Generics Fehler in TQueue?
Fazit: Kein Fehler in TQueue - nur Meldungen und Kommentare im Beispiel Code sind etwas unglücklich gewählt (und nebenbei ein Paradebeispiel, dass solche sehr zur Verwirrung des Lesers führen können)
|
AW: Generics Fehler in TQueue?
[QUOTE=himitsu;1153106]
Zitat:
Enqueued ist das zuletzt hinzugefügte Element (Ende der Warteschlange). Dequeue entfernt am Anfang. Mein Vorschlag wäre:
Delphi-Quellcode:
MessageDlg('Dequeued element is: "' + Queue.Dequeue() + '".', mtInformation, [mbOK], 0);
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:43 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz