Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi CollectionItem (PNG) - nil kann nicht zu PNGObject zugewisen (https://www.delphipraxis.net/90578-collectionitem-png-nil-kann-nicht-zu-pngobject-zugewisen.html)

Zacherl 19. Apr 2007 22:25


CollectionItem (PNG) - nil kann nicht zu PNGObject zugewisen
 
Hey,

ich füge zur Laufzeit mittels pngGraphics.Items.Add ein neues Collection Item zur Collection hinzu. Folgender Fehler erwartet mich dann:

Zitat:

---------------------------
ShadowRat
---------------------------
nil kann nicht zu TPNGObject zugewiesen werden.
---------------------------
OK
---------------------------
Es handelt sich um die PNGImagelist und PNGCollection Komponente.

stz 20. Apr 2007 15:11

Re: CollectionItem (PNG) - nil kann nicht zu PNGObject zugew
 
Der Fehler kommt mir irgendwie bekannt vor. Kannst Du mal Deinen Quelltext posten, um meinem Gedächtnis auf die Sprünge zu helfen?

Gruß
Malte

Zacherl 21. Apr 2007 11:40

Re: CollectionItem (PNG) - nil kann nicht zu PNGObject zugew
 
Also folgenden Code rufe ich auf:

Delphi-Quellcode:
TPNGImageCollectionItem(pngCountryImages.Items.Add).PngImage.LoadFromFile(
  ExtractFilePath(Application.Exename) + DIR_FLAGS + '\' + Country + '.png');
und hier markiert der Compiler mir den Fehler (uPngImageList Unit):

Delphi-Quellcode:
procedure TPngImageCollection.Update;
var
  i : Integer;
begin
  // Update alle listeners
  for i := 0 to FPngImageLists.Count - 1 do
    TPngImageList(FPngImageLists[i]).CopyPngs(FPngImageLists[i]); // genau hier
end;

stz 21. Apr 2007 14:21

Re: CollectionItem (PNG) - nil kann nicht zu PNGObject zugew
 
Zitat:

Zitat von Florian Bernd
Also folgenden Code rufe ich auf:

Delphi-Quellcode:
TPNGImageCollectionItem(pngCountryImages.Items.Add).PngImage.LoadFromFile(
  ExtractFilePath(Application.Exename) + DIR_FLAGS + '\' + Country + '.png');

Ich gehe jetzt mal davon aus, dass Du die PngComponents verwendest. Wenn pngCountryImages vom Typ TPngImageList ist, kann die Zeile eigentlich nicht funktioniert haben. Zum einen hat TPngImageList keine Eigenschaft Items und zum anderen verstehe ich die harte Typenumwandlung nicht. IMHO gibt die Methode Add schon ein Objekt des richtigen Typs zurück und eine Umwandlung ist Überflüssig. Ich habe das folgendermaßen gelöst:
Delphi-Quellcode:
var
  PngImageCollectionItem: TPngImageCollectionItem;
begin
  PngImageCollectionItem := ImageList.PngImages.Add;
  PngImageCollectionItem.PngImage.LoadFromFile(ExtractFilePath(Application.Exename) + DIR_FLAGS + '\' + Country + '.png');
Hoffe das hilft Dir weiter...

Gruß
Malte

Zacherl 21. Apr 2007 20:58

Re: CollectionItem (PNG) - nil kann nicht zu PNGObject zugew
 
Mhh ich hatte andere Komponenten .. oder zumindest eine alte Version von denen. Diese Version beim Link lässt sich nicht unter D2007 installieren. Es gibt diverse Probleme mit der PngComponentEditors.pas. Leider weiß ich nicht, wie das mit den PopertyEditoren unter D2007 geregelt wurde .. das Package von D2005 (neustes im Installer) lässt sich wie gesagt nicht ohne Probleme installieren.

Wäre sehr nett, wenn jemand da mal gucken könnte :)

Zacherl 21. Apr 2007 22:01

Re: CollectionItem (PNG) - nil kann nicht zu PNGObject zugew
 
Okey, hab jetzt einfach alle Stellen auskommentiert, an denen gemeckert wurde .. scheint sogar noch zu gehen, aber ganz sauber ist das wohl trotzdem nicht.


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