TList-Komponente - Items auf einmal in eine andere TList kopieren?
-
Hi,
gibt es eine Möglichkeit, die Items einer TList mit einem Schritt in eine andere TList zu kopieren. Ähnlich wie bei der TStringlist die Methode AddStrings eventuell über den Speicher?
Gruß
Udo
-
Ich glaub mit memcpy oder so kann man Speicherbereiche kopieren, schau mal in der Hilfe nach vielleicht gehts ja.
P.S. Ich hab geschrieben vielleicht, nicht das ich nachher Schläge bekomme.
-
Keine Angst. So gewalttätig bin ich nicht. Außerdem sieht memcpy schon mal vielversprechend aus. Man müßte nur wissen, wie TList die Items im Speicher ablegt.
Wenn ich davon ausgehe, das ein Item 'x' Bytes belegt, dann müßte ja der ganze Block der zu kopieren wäre die Größe von (TList->Count*x) haben.
Mal schauen, vielleicht finde ich hierzu was.
Danke
Udo
-
class TPtrList : public TList { public: __fastcall TPtrList(); void __fastcall Assign(TList*); }; __fastcall TPtrList::TPtrList() : TList() { } //--------------------------------------------------------------------------- void __fastcall TPtrList::Assign(TList* list) { if(list) { try { for(int i=0; i<list->Count; ++i) Add(list->Items[i]); } catch(...) { Error("TPtrList::Assign: Parameter is not a TList*", 0); } } }
-
thx Idiot
-
Hi WebFritzi,
danke für das Beispiel ! Nur schlag mich jetzt bitte nicht, wenn ich Dir sage, daß ich eigentlich die for-Schleife umgehen wollte. Also sprich die Items ohne for-Schleife kopieren möchte.
Was hälst Du von dem Vorschlag mit dem direkten Kopieren im Speicher. Sollte doch schneller gehen? Und da in ner TList sowieso doch nur die Zeiger auf Objekte abgelegt werden, dürfte das doch keine größeren Schwierigkeiten bereiten, oder?
Gruß
Udo
-
Achtung,
<Darkheart> bin ich nicht. Ist ein verdammt blöder Scherz.
Gruß
Udo
-
Sorry Darkheart. Das war alles ein dummer Zufall. Ich habe ebenfalls den Nickname Darkheart und war auch an dem Thema interessiert. Deshalb habe ich mich bedankt.
Gruß
Franz
-
He Udo. Das mit memcpy() ist unsinnig, weil du nicht weißt, wie lang die Speicherblöcke sind.
-
Is aber ein komischer Beitrag! *gggggg*
-
Und ausrechnen is nicht? Schade. Na dann werde ich dann mal die "normale" Methode nehmen. Dachte nur, wegen Zeiteinsparung bei großen Listen.
Gruß
Udo
-
Jaja, aber mit WebFritzi muss man so umgehen. Der steht darauf.
-
*LOL* Wußte ich gar nicht. WebFritzi stimmt das?
-
Original erstellt von Darkheart:
Dachte nur, wegen Zeiteinsparung bei großen Listen.Wieso Zeieinsparung??? Das würde doch nur umso länger dauern. Speicherinhalte zu kopieren dauert länger als ein paar Zeiger zu setzen!
@<DarkHeart>: Ist mir scheißegal, wenn mich ein Idiot "Idiot" nennt.
-
Echt, ich dachte, ich hätte das irgendwo in der Hilfe anders gelesen. Aber umso besser.
@Nur ne Frage: Ihr beide könnte Euch gut leiden, oder?
-
Ich kenne den garnicht. Also kann ich dazu nichts sagen. Vielleicht WILL ich ihn auch garnicht kennen.
-
Ah jetzt ja! Na gut, dann verlaß ich Euch wieder! Für Heute wars genug.
Danke nochmal, CU
Udo
-
Hi,
gewöhnlich ignorieren wir trolle. Es wäre schön, wenn Ihr das auch machen würdet.
Da das Thema abgescholossen ist, wird dieser Thread geschlossen.
... Don't feel the trolls...