AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Variable zur Laufzeit erstellen

Ein Thema von Scorpion · begonnen am 20. Nov 2005 · letzter Beitrag vom 20. Nov 2005
Antwort Antwort
Seite 1 von 3  1 23      
Scorpion

Registriert seit: 3. Nov 2002
Ort: Flörsheim
154 Beiträge
 
Delphi 5 Professional
 
#1

Variable zur Laufzeit erstellen

  Alt 20. Nov 2005, 15:11
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
  Mit Zitat antworten Zitat
Benutzerbild von leddl
leddl

Registriert seit: 13. Okt 2003
Ort: Künzelsau
1.613 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Variable zur Laufzeit erstellen

  Alt 20. Nov 2005, 15:13
Du könntest dir zB ein Array of TImage deklarieren.
Axel Sefranek
A programmer started to cuss, cause getting to sleep was a fuss.
As he lay there in bed, looping round in his head
was: while(!asleep()) ++sheep;
  Mit Zitat antworten Zitat
Scorpion

Registriert seit: 3. Nov 2002
Ort: Flörsheim
154 Beiträge
 
Delphi 5 Professional
 
#3

Re: Variable zur Laufzeit erstellen

  Alt 20. Nov 2005, 15:15
Aber da habe ich doch auch eine vordefinierte Anzahl oder ?
Wie könnte das denn aussehen ?
  Mit Zitat antworten Zitat
Benutzerbild von turboPASCAL
turboPASCAL

Registriert seit: 8. Mai 2005
Ort: Sondershausen
4.274 Beiträge
 
Delphi 6 Personal
 
#4

Re: Variable zur Laufzeit erstellen

  Alt 20. Nov 2005, 15:17
Verwende ein Array zB.
Zitat:
var MyImages: Array of TImages
dann kannst du mit SetLength(MyImages, ...) die Anzahl der zu verwend. Images einstellen.
Matti
Meine Software-Projekte - Homepage - Grüße vom Rüsselmops -Mops Mopser
  Mit Zitat antworten Zitat
Der_Unwissende

Registriert seit: 13. Dez 2003
Ort: Berlin
1.756 Beiträge
 
#5

Re: Variable zur Laufzeit erstellen

  Alt 20. Nov 2005, 15:19
Zitat von Scorpion:
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...
Hi,
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:
var list : TObjectList
    image : TImage;
begin
  list := TObjectList.Create;
  list.Add(TImage.Create(nil));
  image := TImage(list.get(0));
  ....
  ....
end;
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.

Gruß Der Unwissende
  Mit Zitat antworten Zitat
Benutzerbild von leddl
leddl

Registriert seit: 13. Okt 2003
Ort: Künzelsau
1.613 Beiträge
 
Delphi 2006 Professional
 
#6

Re: Variable zur Laufzeit erstellen

  Alt 20. Nov 2005, 15:24
Zitat von Scorpion:
Aber da habe ich doch auch eine vordefinierte Anzahl oder ?
Wie könnte das denn aussehen ?
Kommt drauf an, wie du es deklarierst.
myStaticImageArray : Array[1..x] of TImage; wäre ein statisches Array, das immer x Elemente besitzt. Da kannst du an der Anzahl auch nichts mehr ändern.
Deklarierst du dein Array aber dynamisch
myDynamicImageArray : Array of TImage; so kannst du zur Laufzeit jederzeit die Größe deines Arrays bestimmen.
Dazu mußt du beim Hinzufügen eines neuen Elementes immer die Länge des Arrays über
SetLength(myDynamicImageArray,newLength); festlegen. (Wie turboPASCAL ja auch schon geschrieben hat).
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
Axel Sefranek
A programmer started to cuss, cause getting to sleep was a fuss.
As he lay there in bed, looping round in his head
was: while(!asleep()) ++sheep;
  Mit Zitat antworten Zitat
Scorpion

Registriert seit: 3. Nov 2002
Ort: Flörsheim
154 Beiträge
 
Delphi 5 Professional
 
#7

Re: Variable zur Laufzeit erstellen

  Alt 20. Nov 2005, 15:29
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
  Mit Zitat antworten Zitat
ichbins

Registriert seit: 9. Jul 2005
Ort: Hohenaltheim
1.001 Beiträge
 
Delphi 2005 Personal
 
#8

Re: Variable zur Laufzeit erstellen

  Alt 20. Nov 2005, 15:31
dynamische Arrays gehen erst ab D7...

dir wird nur eine Liste übrigbleiben. oder aber ein Update auf D7.
Michael Enßlin
Ich, der ich weiß, mir einzubilden, dass ich weiß, nichts zu wissen, weiß, dass ich nichts weiß.
Sokrates
  Mit Zitat antworten Zitat
Benutzerbild von malo
malo

Registriert seit: 19. Sep 2004
2.115 Beiträge
 
#9

Re: Variable zur Laufzeit erstellen

  Alt 20. Nov 2005, 15:33
Zitat von Scorpion:
@leddl: Bei deiner Variante sagt er immer beim Eintragen in das Array... Unbekannte Variable.
Zeig doch mal bitte deinen Quelltext. Also die Zeile, wo der Fehler ist...

Zitat:
@Der_Unwissende: Bei dir fragt sich der Quellcode was eine TObjectList sei?
Wenn du in der OH nach Delphi-Referenz durchsuchenTObjectList schaust, wirst du feststellen, dass dir die Unit Contnrs fehlt. Die muss oben in der Uses-Klausel hinzugefügt werden.
  Mit Zitat antworten Zitat
Benutzerbild von leddl
leddl

Registriert seit: 13. Okt 2003
Ort: Künzelsau
1.613 Beiträge
 
Delphi 2006 Professional
 
#10

Re: Variable zur Laufzeit erstellen

  Alt 20. Nov 2005, 15:34
Zitat von Scorpion:
@leddl: Bei deiner Variante sagt er immer beim Eintragen in das Array... Unbekannte Variable.
Was für eine Variable? Auf die einzelnen Elemente des Arrays greifst du über
myDynamicImageArray[x] 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!)
Zitat von Scorpion:
@Der_Unwissende: Bei dir fragt sich der Quellcode was eine TObjectList sei?
Schau doch einfach mal in die OH. Sehr wahrscheinlich mußt du dafür ne extra Unit einbinden.
Axel Sefranek
A programmer started to cuss, cause getting to sleep was a fuss.
As he lay there in bed, looping round in his head
was: while(!asleep()) ++sheep;
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:27 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