Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi StringListe (https://www.delphipraxis.net/100031-stringliste.html)

Tim Henford 21. Sep 2007 11:22


StringListe
 
Hallo,

irgendwie hab ich gerad ein Brett vorm Kopf und zwar wollt ich eine konstante Liste mit z.Bsp. 6 Einträgen erstellen.
Wobei ich diese Einträge dann in einer
Delphi-Quellcode:
for i:=0 to liste.eof-1 do
abarbeiten wollte und dann ShowMessage (liste[i]).

Geht das irgendwie eine Liste konstant zu definieren ohne TStringlist.create und ..add?

sirius 21. Sep 2007 11:27

Re: StringListe
 
Meinst du das?
Delphi-Quellcode:
const liste:array[1..10] of string=('A','B','C','D','E','F','G','H','I','K');

Tim Henford 21. Sep 2007 12:30

Re: StringListe
 
genau danke

Tim Henford 21. Sep 2007 14:37

Re: StringListe
 
wie ist das, wenn ich 2 listen habe und mich in einer funktion für eine entscheide, also:
Delphi-Quellcode:
const listA:array[1..10] of string=('A','B','C','D','E','F','G','H','I','K');
const listB:array[1..7] of string=('H','G','D','R','E','F','G');

procedure test;
var
 list : array of string;
begin
  if ... then list:= listA else list:= listB
  ShowMessage(list[4]);
end;

geht das irgendwie?

Chaosente 21. Sep 2007 16:22

Re: StringListe
 
Delphi-Quellcode:
const listA:array[1..10] of string=('A','B','C','D','E','F','G','H','I','K');
const listB:array[1..7] of string=('H','G','D','R','E','F','G');

procedure test;
var
 list : array of string;
begin
  if ... then
    Showmessage(listA[i])
  else
    showmessage(listB[i])
end;
So vllt? Ungetestet, aber erscheint mir logisch, nur muss du aufpassen, das der index i bei dem jeweiligen Array überhaupt existiert!

Klaus01 21. Sep 2007 16:34

Re: StringListe
 
Delphi-Quellcode:
const listA:array[1..4] of string=('A','B','C','D');
const listB:array[1..3] of string=('1','2','3');

procedure test;
var
  list : array of string;
  i: Byte;
begin
  if ... then
    begin
      setLength(list,length(listA));
      for i:=0 to length(ListA)-1 do
        list[i]:=listA[i+1];
    end
  else
    begin
      setLength(list,length(listB));
      for i:=0 to length(ListB)-1 do
        list[i]:=listB[i+1];
    end;

  ShowMessage(list[2]);
  setLength(List,0);
end;
Vielleicht etwas zu umständlich, vielleicht gibt es auch noch
eine Möglichkeit den Speicher direkt zu kopieren (move)?

Grüße
Klaus

sirius 21. Sep 2007 16:39

Re: StringListe
 
Delphi-Quellcode:
const listA:array[1..3] of string=('A','B','C');
const listB:array[1..2] of string=('Z','X');

procedure TForm1.Button1Click(Sender: TObject);
var list:array of string;
    i:integer;
begin
  list:=@listB;
  for i:=0 to 1 do memo1.lines.add(list[i]); //Achtung Index jetzt ab 0 egal womit die ursprüngliche Liste anfing
end;

Tim Henford 26. Sep 2007 14:33

Re: StringListe
 
Super. Danke funktioniert prima.

Ist es auch möglich folgendes Problem zu lösen:

Eine Liste mit Strings und Variablen:
Delphi-Quellcode:
 list: array[1..3] of string=('Abc','Beta','Ce');

var
  viAbc,viBeta,viCe : integer;


if edit.text=list[1] then
  inc(viAbc);
if edit.text=list[2] then
  inc(viBeta);
if edit.text=list[3] then
  inc(viCe)
einfach irgendwie zu sagen
Delphi-Quellcode:
inc (vi[edit.text] )
Danke Tim

sirius 4. Okt 2007 13:40

Re: StringListe
 
Nee, das dürfte nicht gehen. für die Interpretation von Code ist Delphi nicht ausgelegt. Da müsstest du einen Weg über Objekte wählen.

Tim Henford 4. Okt 2007 13:47

Re: StringListe
 
Danke. Gibt es ein kurzes Exempel dazu mit Objekten?


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:39 Uhr.
Seite 1 von 2  1 2      

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