Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Delphi Eigene Klasse als Array; mit TImage (https://www.delphipraxis.net/152434-eigene-klasse-als-array%3B-mit-timage.html)

Deinhaus 22. Jun 2010 19:43

Eigene Klasse als Array; mit TImage
 
Hi,

ich habe ein kleines Problem mit einer Eigenschaft meiner Klasse.
In der Klasse sind Strings und ein TImage. die Strings kann ich zuweisen, das Image leider nicht.

Der Code meiner Klasse TEnemy:
Delphi-Quellcode:
Type TEnemy = class
      private
       
      public
        name : string;
        path : string;
        image : TImage;
    end;

    TEnemieArray = array of TEnemy;
Der Code, mit dem ich versuche das Array zu füllen:
Delphi-Quellcode:
procedure tfrm_main.init_enemiearray();
VAR I : integer ;
    MyIcon:TIcon;
begin
  SetLength(EnemieArray,FileListBox1.Count+1);
  try
    MyIcon:=TIcon.Create;
    for I := 0 to FileListBox1.Count-1 do
    begin
      EnemieArray[I] := TEnemy.Create;
      MyIcon.Handle := GetShellIcon(FileListBox1.Directory+'\'+FileListBox1.Items.Strings[I], True, False);
      EnemieArray[I].name := FileListBox1.Items.Strings[I];
      EnemieArray[I].image.Picture.Icon. := MyIcon;
    end;
    MyIcon.Free;
  except
  on E : Exception do
    begin
      ShowMessage(E.Message + ' : ' + IntToStr(I));
    end;
  end;
end;
Die Exception löst immer aus, wenn ich MyIcon dem Array.image zuweisen will. Das Zuweisen von MyIcon zu einem Image.picture.icon auf der GUI funzt einwandfrei. Warum klappt das nicht mit dem TImage in dem Array meiner Klasse ?

Die Fehlermeldung des TRY-EXCEPT:
>> Zugriffsverletzung bei Adresse 004C6CB3 in Modul 'ADMINV.exe'. Lesen von Adresse 000001B0 : 0 <<

Gruß
Daniel

Lumpiluk 22. Jun 2010 19:48

AW: Eigene Klasse als Array; mit TImage
 
Das müsste in etwa so gehen:
Delphi-Quellcode:
EnemieArray[i].image := TJPEGImage.Create; //bin mir jetzt nicht sicher, ob TJPEGImage richtig ist...
P.S. Warum schreibst du das englische Wort enemy für Feind mit ie? Oder ist damit etwas anderes gemeint? ;)

Deinhaus 22. Jun 2010 19:59

AW: Eigene Klasse als Array; mit TImage
 
Jo.. das ie ist ein Überbleibsel von der Bezeichnung enemies.. habs dann umbenannt und darauf net geachtet :) Danke für den Hinweis.

Hab die Lösung gefunden, danke :)

wusste nicht, dass ich nach dem create für das Object im Array noch ein create für das image durchführen muss

der code geht jetzt:
Delphi-Quellcode:
 
EnemyArray[I] := TEnemy.Create;
EnemyArray[I].fileimage := TImage.Create(self);
Gruß
Daniel

DeddyH 23. Jun 2010 08:22

AW: Eigene Klasse als Array; mit TImage
 
Sauberer fände ich es allerdings, wenn sich die Klasse TEnemy um das Erzeugen und Freigeben des Images kümmern würde.

Deinhaus 23. Jun 2010 08:46

AW: Eigene Klasse als Array; mit TImage
 
Aber natürlich !

Ist in Arbeit

siehe: http://www.delphipraxis.net/1030940-post4.html

Gruß
Daniel


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