![]() |
Variable zur Laufzeit erstellen
Hallo,
ich erstelle in meinem Programm meherere Images zur Laufzeit. Das klappt auch wunderbar. Nur weiss man vorher nicht, wieviele Images wirklich gebraucht werden. Ich kann also keine Variablennamen in den Quellcode schreiben,weil ich nicht weiss wie viele... :( Aber ohne einen im Quellcode definierten Variablennamen kann ich doch keine Komponente zur Laufzeit erstellen oder ? Meine Frage also, was kann ich tun oder wie kann man Variablen zur Laufzeit definieren? Gruß Nico |
Re: Variable zur Laufzeit erstellen
Du könntest dir zB ein Array of TImage deklarieren.
|
Re: Variable zur Laufzeit erstellen
Aber da habe ich doch auch eine vordefinierte Anzahl oder ?
Wie könnte das denn aussehen ? |
Re: Variable zur Laufzeit erstellen
Verwende ein Array zB.
Zitat:
|
Re: Variable zur Laufzeit erstellen
Zitat:
du kannst durchaus ein Image auch relativ annonym erstellen, aber das wäre wohl kaum das was du wirklich suchst. Am einfachsten ist es du schaust dir Datentypen an, deren Größe nicht zur Designzeit feststehen muss. Dazu gehören dynamische Arrays und Listen. Ich persönlich würde dir zu Listen raten, da musst du dich weniger um die Anpassung der Größe ändern, dass übernimmt die Kapselung für dich. Schau einfach mal unter TObjectList in der Delphi Hilfe nach. Ach als kleiner Tip vorweg, wenn du etwas aus der TObjectList holst, musst du es danach casten
Delphi-Quellcode:
Grobes nicht überprüftes oder durchdachtes Beispiel, soll nur grob zeigen wie es geht, kann mich aber irren was die Syntax angeht. Jedenfalls kannst du es grob in der Richtung machen. Du solltest allerdings aufpassen, dass du die angelegten Images auch irgendwann wieder freigeben müsstest. Sonst müllst du dir ganz schnell deinen Speicher zu.
var list : TObjectList
image : TImage; begin list := TObjectList.Create; list.Add(TImage.Create(nil)); image := TImage(list.get(0)); .... .... end; Gruß Der Unwissende |
Re: Variable zur Laufzeit erstellen
Zitat:
Delphi-Quellcode:
wäre ein statisches Array, das immer x Elemente besitzt. Da kannst du an der Anzahl auch nichts mehr ändern.
myStaticImageArray : Array[1..x] of TImage;
Deklarierst du dein Array aber dynamisch
Delphi-Quellcode:
so kannst du zur Laufzeit jederzeit die Größe deines Arrays bestimmen.
myDynamicImageArray : Array of TImage;
Dazu mußt du beim Hinzufügen eines neuen Elementes immer die Länge des Arrays über
Delphi-Quellcode:
festlegen. (Wie turboPASCAL ja auch schon geschrieben hat).
SetLength(myDynamicImageArray,newLength);
Dabei solltest du beachten, daß dynamische Arrays 0-basiert sind - also das erste Element den Index 0 hat - und bis Length-1 laufen. //Edit: Und TObjectList ist natürlich auch eine gute Alternative |
Re: Variable zur Laufzeit erstellen
Hallo,
vielen Dank... @leddl: Bei deiner Variante sagt er immer beim Eintragen in das Array... Unbekannte Variable. @Der_Unwissende: Bei dir fragt sich der Quellcode was eine TObjectList sei? Gruß Nico |
Re: Variable zur Laufzeit erstellen
dynamische Arrays gehen erst ab D7...
dir wird nur eine Liste übrigbleiben. oder aber ein Update auf D7. |
Re: Variable zur Laufzeit erstellen
Zitat:
Zitat:
![]() |
Re: Variable zur Laufzeit erstellen
Zitat:
Delphi-Quellcode:
zu. Oder meinst du "NewLength" bei meinem Aufruf von SetLength? Da mußt du natürlich die neue Länge des Array eintragen (Vorsicht, 0-basiert!)
myDynamicImageArray[x]
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:04 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 by Thomas Breitkreuz