Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Array komplett an Stringliste übergeben (https://www.delphipraxis.net/114313-array-komplett-stringliste-uebergeben.html)

steppo 23. Mai 2008 09:52


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

Hansa 23. Mai 2008 09:57

Re: Array komplett an Stringliste übergeben
 
Verfrachte das Array direkt in ein TStrings.

steppo 23. Mai 2008 10:11

Re: Array komplett an Stringliste übergeben
 
Hallo Hansa, wie meinst du das?

Hansa 23. Mai 2008 10:20

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.

steppo 23. Mai 2008 10:58

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:
for i := 0 to VarArrayHighBound(TestArray, 2) - 1 do
    strLIst.Add(TestArray[0,i]);
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).

Sherlock 23. Mai 2008 11:04

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

Medium 23. Mai 2008 11:13

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.

steppo 23. Mai 2008 11:15

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.

Sherlock 23. Mai 2008 11:18

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

steppo 23. Mai 2008 11:25

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.

Sherlock 23. Mai 2008 11:29

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

steppo 23. Mai 2008 11:32

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.

Sherlock 23. Mai 2008 11:35

Re: Array komplett an Stringliste übergeben
 
Schade, dann muss es wohl auf die harte Tour gemacht werden. :(

Sherlock

steppo 23. Mai 2008 11:44

Re: Array komplett an Stringliste übergeben
 
Mit harter Tour meinst du iteration?

ok. Danke für die Antworten und Hilfe.

Gruß Steppo

alzaimar 23. Mai 2008 12:11

Re: Array komplett an Stringliste übergeben
 
Wenn Du vorher die Kapazität der TStringlist setzt, sparst Du ca. 10% Zeit:
Delphi-Quellcode:
MyStringlist.Capacity := 12345;
Und das ist dann knapp halb so schnell wie die Verwendung eines dynamischen Arrays.

steppo 23. Mai 2008 22:28

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