Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Memory programmieren (https://www.delphipraxis.net/115413-memory-programmieren.html)

Tassadar2k3 11. Jun 2008 18:35


Memory programmieren
 
Moin,

ja ich habe die Such-Funktion benutzt - und ja, ich habe auch etwas gefunden, nur nicht das richtige ;)
Zu meinem Problem:

Ich habe ein Formular auf dem ich verschiedene Images habe (1 - 32), diese werden NICHT dynamisch generiert. Sie sind also von Anfang an vorhanden. Das Problem ist jetzt, wie ordne ich den Images verschiedene Bilder zu?

Was ich gerne machen möchte:
In einer for-Schleife durch die einzelnen Images gehen und denen dann mit einer Zufallszahl verschiedene Bilder zuweisen. Das Problem ist, wie kann ich das bewerkstelligen? Ich bräuchte ja sowas wie nen Array von den Images wo ich dann quasi sage:
Image1.Picture.LoadFromFile(GetCurrentDir + '\pics\pic' + IntToStr(rnd) + '.jpg');

Mit Schleife logischerweise:
Image[i].Picture.LoadFromFile(GetCurrentDir + '\pics\pic' + IntToStr(rnd) + '.jpg');

Das Problem liegt also bei dem index bzw. das ich wenn ich das mit der Schleife mache, nicht auf die Image-Eigenschaft "komme"...

Hoffe man versteht mein Problem ...

Grüße und danke im voraus

PS.: Benutze Delphi6

Larsi 11. Jun 2008 18:45

Re: Memory programmieren
 
Wie wärs denn so:
Also das hier schreibst du da hin wo auch sowas wie Form1: TForm; oder so steht:
Delphi-Quellcode:
i: Integer;
Dann schreibst du in Form OnCreate:
Delphi-Quellcode:
i := 0;
Die eigentliche Schleife komt hier:
Delphi-Quellcode:
repeat
i := i + 1;
Image[i].Picture.LoadFromFile(GetCurrentDir + '\pics\pic' + IntToStr(rnd) + '.jpg');
until i := 32;
Herzlich Willkommen in der Delphi-Praxis :dp:

Hoffe ich konnte helfen.

MFG Lars Wiltfang


Edit: Wolltest du das überhaupt wissen, was ich beschrieben habe?

DeddyH 11. Jun 2008 18:46

Re: Memory programmieren
 
Ich glaube, Du suchst FindComponent().

Fussball-Robby 11. Jun 2008 18:58

Re: Memory programmieren
 
Statt GetCurrentDir solltest du ExtractFilePath(ParamStr(0)) verwenden. GetCurrentDir beinhaltet nicht zwingend das Anwendungsverzeichnis, und das kann dir dann schonmal zum Verhängnis werden.

Tassadar2k3 11. Jun 2008 19:05

Re: Memory programmieren
 
Zitat:

Zitat von Larsi
Edit: Wolltest du das überhaupt wissen, was ich beschrieben habe?

Ne ... :zwinker:
Mir ist klar das ich den Index z.B. deklarieren und dem nen Startwert (:= 0) zuweisen muss :)

Nen Freund von mir meinte ebend das ich garnicht auf schon vorher erstellte Images "dynamisch" drauf zugreifen kann. Also das mit dem Image[i].etc. würde nicht gehen, da er ja nicht weiss um was für nen Objekt es sich handelt.

Fazit: Kann es sein das ich die Images dynamisch erstellen muss um auch dynamisch in einer Schleife drauf zuzugreifen?

Wie gesagt, ich möchte doch einfach nur mit Hilfe einer Schleife durch die Images gehen und denen Zufallsbilder zuweisen ... Kann doch nicht so schwer sein :wall:

PS.: Wie funktioniert FindComponent genau? Gibt es eigentlich so etwas wie ne ne MSDN (VB) für Delphi?

DeddyH 11. Jun 2008 19:08

Re: Memory programmieren
 
Versuch es mal so:
Delphi-Quellcode:
for i := 1 to 32 do
  (FindComponent('Image' + IntToStr(i)) as TImage).Picture.LoadFromFile(ExtractFilePath(ParamStr(0)) + '\pics\pic' + IntToStr(rnd) + '.jpg');

Tassadar2k3 11. Jun 2008 19:20

Re: Memory programmieren
 
Zitat:

Zitat von DeddyH
Versuch es mal so:
Delphi-Quellcode:
for i := 1 to 32 do
  (FindComponent('Image' + IntToStr(i)) as TImage).Picture.LoadFromFile(ExtractFilePath(ParamStr(0)) + '\pics\pic' + IntToStr(rnd) + '.jpg');

Jetzt brauche ich nur noch deine Bankverbindung oder Adresse fürs Dankeschön ;)
=> Hat funktioniert :)

Du weisst nicht rein zufälliger weise wie ich bei nem ShellTreeView nen Ordner selektieren kann, oder?
Beim Form load soller halt bei dem ShellTreeView direkt z.B. 'C:\Windows' auswählen ... Gibt zwar nen .Select - aber da steig ich nicht ganz durch mit der TLost und den Nodes etc. :roll:

DeddyH 11. Jun 2008 19:24

Re: Memory programmieren
 
Da hast Du mich jetzt aber auf dem linken Fuß erwischt. ShellTreeview hab ich leider noch nie benutzt (und auf die Schnelle gerade noch nicht einmal in der Komponentenpalette gefunden) :oops:

Fussball-Robby 11. Jun 2008 19:26

Re: Memory programmieren
 
ShellTreeView hat die Eigenschaft Root, gucks dir mal im OI an :wink:

[Edit]Besser: Die Eigenschaft Path - ist allerdings nicht im OI

Tassadar2k3 11. Jun 2008 19:33

Re: Memory programmieren
 
Root hatte ich bereits benutzt, ist aber nicht ganz das was ich suche. Ich möchte einen Ordner selektieren - d.h. also "voreinstellen", markieren, selektieren wie auch immer. Root wechselt ja einfach nur das Verzeichnis, selektiert aber keinen Ordner ... :|

[Edit] Und Path gibt ja nur den Pfad an wo das Projekt immo liegt, richtig? Also auch nicht das was ich suche :?


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:15 Uhr.
Seite 1 von 2  1 2      

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