Array komplett an Stringliste übergeben
Hallo zusammen,
gibt es eine Möglichkeit ein Array komplett an eine Stringliste zu übergeben, ohne über die einzelnen Werte iterieren zu müssen? Gruß Steppo |
Re: Array komplett an Stringliste übergeben
Verfrachte das Array direkt in ein TStrings.
|
Re: Array komplett an Stringliste übergeben
Hallo Hansa, wie meinst du das?
|
Re: Array komplett an Stringliste übergeben
Gehe nicht den Umweg über ein Array, sondern verwende die TStringList/TStrings direkt. Eventuell kommt auch ein TList oder TObjectList in Betracht.
|
Re: Array komplett an Stringliste übergeben
Hallo Hansa,
das habe ich versucht, aber nicht geschafft. Das Problem liegt daran, dass ich eine Schnittstelle abfrage und als Ergebnis einen Variant zurückbekomme. Dieser Variant ist ein Array und wird im nachhinein wie folgt ausgelesen:
Delphi-Quellcode:
Es handelt sich also um ein zwei Dimensionales Array (warum auch immer, denn in der ersten Dim steht kein Wert). Versuche ich dieses Array an eine StringListe zu übergeben, bekomme ich natürlich einen Fehler (Inkompatible Typen).
for i := 0 to VarArrayHighBound(TestArray, 2) - 1 do
strLIst.Add(TestArray[0,i]); |
Re: Array komplett an Stringliste übergeben
Es wird Dir vermutlich nichts anderes übrig bleiben, als durch das Array zu iterieren. Ist ja aber auch nicht gerade eine herkulische Aufgabe ;)
Sherlock |
Re: Array komplett an Stringliste übergeben
Die Methode TStringList.AddStrings(), mit der du einen TStrings-Nachfahren in die Liste bekämst, mach zudem auch nichts anderes als eine Schleife über die Elemente des TStrings. Einzig die Verwendung von TStringList.BeginUpdate() und .EndUpdate() wäre evtl. erwähnenswert.
|
Re: Array komplett an Stringliste übergeben
Hallo Sherlock,
da hast du recht, allerdings ist die Performance bei 100.000 und mehr Einträgen mäßig. |
Re: Array komplett an Stringliste übergeben
Och, die Performance dürfte eh schon genug an der COM Schnittstelle leiden ;)
Wie oft ist das denn zu tun? Hast du Einfluß auf den Server? Sherlock |
Re: Array komplett an Stringliste übergeben
In der Application ist die Möglichkeit gegeben Auswertungen abzufragen. Das heißt, es wird so oft wie nötig gemacht. Und ja ich habe einfluß auf den Server.
|
Re: Array komplett an Stringliste übergeben
Sind es immer die selben Werte, die da übertragen werden, ergänzt um ein paar Neuzugänge? Oder kommen da jedesmal komplett neue Werte? Weil bei erster Variante hast du ja die Möglichkeit dann immer nur die neuen Werte zu übertragen...das würde schon einiges an Performance bringen.
Sherlock |
Re: Array komplett an Stringliste übergeben
Die Daten werden vom Server komplett neu angefordert. Es wird immer eine neue Suche generiert. Zudem kann das Ergebnis in Abhängigkeit zu verschiedenen Einstellungen variieren.
|
Re: Array komplett an Stringliste übergeben
Schade, dann muss es wohl auf die harte Tour gemacht werden. :(
Sherlock |
Re: Array komplett an Stringliste übergeben
Mit harter Tour meinst du iteration?
ok. Danke für die Antworten und Hilfe. Gruß Steppo |
Re: Array komplett an Stringliste übergeben
Wenn Du vorher die Kapazität der TStringlist setzt, sparst Du ca. 10% Zeit:
Delphi-Quellcode:
Und das ist dann knapp halb so schnell wie die Verwendung eines dynamischen Arrays.
MyStringlist.Capacity := 12345;
|
Re: Array komplett an Stringliste übergeben
Hallo alzaimar,
danke für die Antwort. Gruß Steppo |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:13 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz