![]() |
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:
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).
for x:=1 to listbox.count do
Nur leider mag Delphi scheinbar nicht die Schreibweise
Delphi-Quellcode:
hab syntaxmäßig ein bisschen rumprobiert, weiß jemand, wie es richtig lauten muss?
for x := 1 to 'listbox_'+y+'_'+z+.count do
Danke schon mal |
AW: richtige Syntax in zusammengesetzter Schleife
1. falsche Grenzen: Der erste Index ist 0:
Delphi-Quellcode:
2. Ich würde eine Funktion Methode schreiben, der ich die Instanz übergeben würde.
for x:=0 to listbox.count-1 do
2. FindComponent() oder besser Array/Liste von Listboxen führen |
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)... |
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
|
AW: richtige Syntax in zusammengesetzter Schleife
Bein einem Element/Zeile wäre der Index 1 aber schon zu gross.
|
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! |
AW: richtige Syntax in zusammengesetzter Schleife
Frage beantwortet...
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:51 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