Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi richtige Syntax in zusammengesetzter Schleife (https://www.delphipraxis.net/153405-richtige-syntax-zusammengesetzter-schleife.html)

Cruentus 1. Aug 2010 16:58

Delphi-Version: 2007

richtige Syntax in zusammengesetzter Schleife
 
Hallo allerseits!

Erstmal bitte ich um Entschuldigung für den mögl. ungenauen Titel, bin mit der Fachterminologie nicht sooo vertraut...

ich muss recht viele Einträge aus recht vielen Listboxen in eine Stringliste reinschreiben und wollte mir ein bisschen Schreibkram ersparen.

Um nun allgemein auf die Einträge der Listboxen zugreifen zu können, wollte ich daher eine Schleife basteln im sinne von:

Delphi-Quellcode:
for x:=1 to listbox.count do
nun habe ich aber ganz viele (30) Listboxen, die im Stil von Listbox_Y_Z benannt sind, wobei Y und Z von 1 bis 30 gehen (hab die Listboxen in einem Raster angeordnet, daher zwei Zahlwerte).

Nur leider mag Delphi scheinbar nicht die Schreibweise
Delphi-Quellcode:
for x := 1 to 'listbox_'+y+'_'+z+.count do
hab syntaxmäßig ein bisschen rumprobiert, weiß jemand, wie es richtig lauten muss?

Danke schon mal

mkinzler 1. Aug 2010 17:01

AW: richtige Syntax in zusammengesetzter Schleife
 
1. falsche Grenzen: Der erste Index ist 0:
Delphi-Quellcode:
for x:=0 to listbox.count-1 do
2. Ich würde eine Funktion Methode schreiben, der ich die Instanz übergeben würde.
2. FindComponent()
oder besser Array/Liste von Listboxen führen

Cruentus 1. Aug 2010 18:32

AW: richtige Syntax in zusammengesetzter Schleife
 
Ah, danke schon mal. Die Findcomponent ist ja echt praktisch. Hab mir das jetzt mal so zusammengeschustert, bis in der Programmieroberfläche nichts mehr angestrichen war und das Programm auch ausgeführt werden kann. Allerdings hält das Programm immer an folgender Stelle an und meldet eine Zugriffsverletzung:

Delphi-Quellcode:
for z := 1 to (TListbox(FindComponent('_te'+IntToStr(y)+'_tw'+IntToStr(x))).count -1) do


Also, die Listboxen heißen listbox_te1_tw1 und so weiter dann...es steht in allen Listboxen auch mindestens eine Zeile drin.
Jemand eine Idee, was ich da tun kann?

PS: @mkinzler, habe den ersten Hinweis nicht vergessen, werde bei Funktionstüchtigkeit z auch bei 0 starten lassen. Hab aber erst mal die 1 genommen, um irgendwelche Listindexe nicht zu überschreiten...warum auch immer

PPS: Hab mir ausgeben lassen, dass alle drei Variablen den Wert 1 haben (unmittelbar vor der Schleife)...

jfheins 1. Aug 2010 18:40

AW: richtige Syntax in zusammengesetzter Schleife
 
Um dir den fehler aufzuzeigen: Am Anfang steht da also:
Delphi-Quellcode:
for z := 1 to (TListbox(FindComponent('_te1_tw1')).count -1) do
.

Hast du eine Listbox die "_te1_tw1" heißt? Nein? Pech denn der Cast prüft das nicht mehr ;)

In diesem Fall (da es ja weniger auf die Performance ankommt) besser mit as casten.

Also:
Delphi-Quellcode:
for z := 1 to ((FindComponent('listbox_te'+IntToStr(y)+'_tw'+IntToStr(x)) as TListbox).count -1) do

mkinzler 1. Aug 2010 18:52

AW: richtige Syntax in zusammengesetzter Schleife
 
Bein einem Element/Zeile wäre der Index 1 aber schon zu gross.

Cruentus 1. Aug 2010 18:58

AW: richtige Syntax in zusammengesetzter Schleife
 
eine Listbox _te1_tw1? Nein, beschämt musste ich erkennen, eine solche Listbox besitz ich nicht - vielen dank für den Hinweis, darüber wäre ich ja in 100 Jahren nicht gestolpert...

So, jetzt funktioniert alles, vielen Dank!

Cruentus 1. Aug 2010 18:59

AW: richtige Syntax in zusammengesetzter Schleife
 
Frage beantwortet...


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:59 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