Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Delphi Array of String zu TStrings (https://www.delphipraxis.net/157944-array-string-zu-tstrings.html)

Jakunar 30. Jan 2011 23:05

Array of String zu TStrings
 
Hey kurze Frage:

Gibts ne effizientere/schnellere Methode um alle Strings eines Array of String in ein TStrings zu bekommen als ueber Laufvariable?
Also als:
Code:
const
  MyStrArray: Array[0..1023] of String = ('1', '2', '3', '4', '5', ..);
var
  i: Word;
begin
  ComboBox1.Clear;
  for i := 0 to Lentgh(MyStrArray)-1 do
    ComboBox1.Add(MyStrArray[i];
end;
Gruss Jakunar

Namenloser 30. Jan 2011 23:11

AW: Array of String zu TStrings
 
Nein, aber du kannst vorher Delphi-Referenz durchsuchenTStrings.BeginUpdate und nachher Delphi-Referenz durchsuchenTStrings.EndUpdate aufrufen, was die Operation deutlich beschleunigen sollte, wenn es sich um Eigenschaften von Komponenten handelt.

Uwe Raabe 30. Jan 2011 23:13

AW: Array of String zu TStrings
 
Delphi XE kennt da eine überladene Methode:

Delphi-Quellcode:
procedure AddStrings(const Strings: TArray<string>); overload;

himitsu 30. Jan 2011 23:14

AW: Array of String zu TStrings
 
Zitat:

... als ueber Laufvariable
Jain, ab Delphi 2009 ... nicht schneller, aber dafür kleiner
Delphi-Quellcode:
ComboBox1.Clear;
for S in MyStrArray do ComboBox1.Add(S);
Ansonsten pack deinen Code in eine Prozedur, falls du sowas mehrmals im Programm benötigst.

Abgesehn von dem schongenannten BeginUpdate, vorallem wenn es sich um StringListen in VCL-Komponenten handelt.

Namenloser 30. Jan 2011 23:17

AW: Array of String zu TStrings
 
[OT]
Zitat:

Zitat von Uwe Raabe (Beitrag 1078414)
Delphi-Quellcode:
procedure AddStrings(const Strings: TArray<string>); overload;

Delphi-Quellcode:
TArray<string>
? Ist das eine neue Schreibweise für
Delphi-Quellcode:
array of string
? :gruebel:
[/OT]

Jakunar 30. Jan 2011 23:22

AW: Array of String zu TStrings
 
Hm ich verwende Delphi 7, werde also mit BeginUpdate und EndUpdate verwenden.

Vielen Dank!

P.S: Kann man Themen als "Geloest" markieren?

Gruss Jakunar

Bummi 30. Jan 2011 23:26

AW: Array of String zu TStrings
 
oder Du verwendest statt des Array's gleich eine Stringlist?

himitsu 30. Jan 2011 23:26

AW: Array of String zu TStrings
 
Zitat:

Zitat von NamenLozer (Beitrag 1078418)
[OT] Ist das eine neue Schreibweise für
Delphi-Quellcode:
array of string
? :gruebel:
[/OT]

Ist ein generischer Typ, welcher hier quasi ein
Delphi-Quellcode:
array of string
ergibt.

Namenloser 30. Jan 2011 23:28

AW: Array of String zu TStrings
 
Gibt es da irgendeinen Unterschied?

Luckie 30. Jan 2011 23:33

AW: Array of String zu TStrings
 
Sollte er nicht lieber BeginUpdate und EndUpdate von der Combobox aufrufen, damit sie nicht ständig neu gezeichnet wird?

Namenloser 31. Jan 2011 00:06

AW: Array of String zu TStrings
 
Zitat:

Zitat von Luckie (Beitrag 1078428)
Sollte er nicht lieber BeginUpdate und EndUpdate von der Combobox aufrufen, damit sie nicht ständig neu gezeichnet wird?

Gibt es nicht :wink: Die TStrings-Klasse sorgt dafür, dass das Control geupdatet wird (vermutlich durch ein Event). Zwischen BeginUpdate und EndUpdate wird dieses Event unterdrückt.

Jakunar 31. Jan 2011 00:47

AW: Array of String zu TStrings
 
So der Ordnung halber hier meine verwendete Loesung:
Code:
const
  MyStrArray: Array[0..1023] of String = ('1', '2', '3', '4', '5', ..);
var
  i: Word;
begin
  ComboBox1.Items.BeginUpdate;
  ComboBox1.Clear;
  for i := Low(MyStrArray) to High(MyStrArray) do
    ComboBox1.Items.Add(MyStrArray[Cnt]);
  ComboBox1.Items.EndUpdate;
end;
Gruss Jakunar


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:48 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-2025 by Thomas Breitkreuz