Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!
wie war es noch mal mit dem begrenzten laufendem Puffer?
Ich habe eine Statusanzeige in Form einer Multicolumn Listbox. Dieser werden immer neue Logmeldungen als neues Arrayelement am Ende hinzugefügt. Die ersten Logmeldungen sollen aus der Anzeige (bzw. Array) verschwinden, wenn die Puffergröße überschritten wird. Ausserdem soll automatisch gescrollt werden (die 10 aktuellen Logmeldungen sollen immer angezeigt werden).
Ich habe es früher mit Build Array am Ende hinzugefügt, mit Array Size den Überlauf bestimmt und diesen überlauf mit Split Array abgeschnitten.
Nun klappt es mit Split Array nicht mehr, weil ich jetzt ein 2D Array habe, Split Array kann aber nur 1D Arrays abschneiden. Außerdem ist diese Methode nicht laufzeit- und speicher- optimal.
Noch mal die Frage: wie wird es mit dem Replace Array Subset gemacht? Die Puffergröße ist in dem Fall fest und nicht einstellbar. Das Array wird am Anfang vorinitialisiert.
' schrieb:Ich habe es früher mit Build Array am Ende hinzugefügt, mit Array Size den Überlauf bestimmt und diesen überlauf mit Split Array abgeschnitten.
Nun klappt es mit Split Array nicht mehr, weil ich jetzt ein 2D Array habe, Split Array kann aber nur 1D Arrays abschneiden. Außerdem ist diese Methode nicht laufzeit- und
Kannst du evtl. statt nem 2D-Array ein "1D-Array of Cluster of 2 Elements" nehmen? Oder irgendwie was mit "ReplaceArraySubset" (ebenfalls von nem "1D-Array of Cluster of 2 Elements") + Rotate 1D-Array
Müsste mal überlegen...
"Is there some mightier sage, of whom we have yet to learn?"
"Opportunity is missed by most people because it is dressed in overalls and looks like work." (Thomas Edison)
Könntest du einen kleinen Beispiel posten? Ich weiss nicht wie ich aus dem Array Of Cluster wieder ein 2D-Array bekomme und verstehe auch nicht wozu Rotate dienen soll, ich will schiften, nicht rotaten.
Ok, autoscrollen mit jedem neuen Log muss ich ja nicht, da das aktuelle sowieso immer am Ende des Array ist. Somit ein Mal bei der Initialisierung des Programms scrollen reicht. Danach nur noch beim "Mouse leave" Event.
Das hat schon die CPU von 5% auf 1-2% gebracht (die Logs kommen ungefähr mit 10 Hz). Es ist aber immer noch zu viel.
Ich vermute die MCL ist echt stark reccourcenfressend. Was meint ihr dazu?
Ich habe mit einem C++ -ler gesprochen, er meint im MS VS gibt es einen Control, der aber eine Methode "Add Item" hat und die Speicherverwaltung übernimmt dieser Control für den User.
' schrieb:Hast du es auch mal einfach mit einem 2D-Array of Strings oder einem Table-Control versucht?
MfG, Jens
Nein, habe ich nicht. Ich wollte die Zeilen in unterschiedlichen Farben darstellen (a la JKI VI PM) und die Fehlermeldungen rot markieren. Das bietet ein Tabellencontrol nicht an.
Aber als ich moch mit Farben angefangen habe stieg die CPU gleich auf 20%. Ist es nicht schön?
' schrieb:Nein, habe ich nicht. Ich wollte die Zeilen in unterschiedlichen Farben darstellen (a la JKI VI PM) und die Fehlermeldungen rot markieren. Das bietet ein Tabellencontrol nicht an.
Doch! Siehe Bild...
"Is there some mightier sage, of whom we have yet to learn?"
"Opportunity is missed by most people because it is dressed in overalls and looks like work." (Thomas Edison)
' schrieb:Ich weiss nicht wie ich aus dem Array Of Cluster wieder ein 2D-Array bekomme
Hi,
ich meinte sowas...aber da kannst du natürlich deine Zeilen nicht unterschiedlich färben...dafür aber mit den 1D-Array-Funktionen (Split etc.) arbeiten