Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Pngimage (https://www.delphipraxis.net/154375-pngimage.html)

-Phantom- 8. Sep 2010 17:41

Pngimage
 
Hey Leute,

Ich bin von D7 auf Delphi 2010 umgestiegen. Und ich habe eine Komponente ( Sevenbutton ), in dieser Komponente braucht man um Pngimages zu sehen die Unit "pngimage". Hab ich ja. Aber wenn ich das Programm starte habe ich 45 Errors.
Delphi-Quellcode:
 [DCC Error] pngimage.pas(3674): E2064 Left side cannot be assigned to


Das wird dann rot unterlegt
Delphi-Quellcode:
 Byte(Dest^) := Owner.InverseGamma[pByte(Longint(Src) + 2)^]; inc(Dest);
Wenn ich die Unit "Pngimage" weg lasse kann ich das Png Bild nicht sehen :cry:

Wie schaffe ich das nun? In delphi 7 klappte das alles ?!

gruß Mathias

mkinzler 8. Sep 2010 17:50

AW: Pngimage
 
D2010 kann PNG von Haus aus

-Phantom- 8. Sep 2010 17:52

AW: Pngimage
 
Wenn Delphi 2010 das von Haus aus kann, wieso zeigt er mir das dann nicht an?:gruebel:

cookie22 8. Sep 2010 17:59

AW: Pngimage
 
kann es sein, dass du ne alte png-unit eingebunden hast?

Progman 8. Sep 2010 18:29

AW: Pngimage
 
Ich kann mich erinnern, dass mit Delphi 2009 es ein Update der PNGImage.pas gab und der Link hier im Forum (oder sogar die Unit selbst?) war. Mal danach suchen.

-Phantom- 8. Sep 2010 19:04

AW: Pngimage
 
Wo kann ich den die "neue" png Unit finden? Wenns nicht geht ist auch nicht schlimm. Muss ich halt mit Bitmaps oder Icons auskommen

Progman 8. Sep 2010 19:16

AW: Pngimage
 
Hier müsste sie mit dabei sein: Link

Uwe Raabe 8. Sep 2010 21:18

AW: Pngimage
 
Zitat:

Zitat von Progman (Beitrag 1048273)
Hier müsste sie mit dabei sein: Link

Ist es nicht! PngImage ist aber seit Delphi 2009 in Delphi enthalten:

z.B. in D2010 "<Program Files>\Embarcadero\RAD Studio\7.0\source\Win32\vcl\pngimage.pas"

Was deine Errors betrifft, wäre etwas mehr Code hilfreich...

-Phantom- 9. Sep 2010 20:03

AW: Pngimage
 
Ich glaube das lieht daran das, die Komponente Delphi 2010 nicht kennt. Und verlangt deswegen immer ein
PngImage? Möglich oder? Weil sie von 2005 ist ( Die Komponente ).

Mehr Errors sind da nicht.

Uwe Raabe 9. Sep 2010 20:28

AW: Pngimage
 
Zitat:

Zitat von -Phantom- (Beitrag 1048521)
Ich glaube das lieht daran das, die Komponente Delphi 2010 nicht kennt. Und verlangt deswegen immer ein
PngImage? Möglich oder? Weil sie von 2005 ist ( Die Komponente ).

Mehr Errors sind da nicht.

Ich wollte nicht mehr Errors sehen, sondern mehr Code!

xZise 9. Sep 2010 20:40

AW: Pngimage
 
Vielleicht ist er verwirrt, da er nicht weiß ob er dein pngimage oder das von Delphi 2010 verwenden soll?

MfG
Fabian

-Phantom- 9. Sep 2010 20:46

AW: Pngimage
 
Ja welchen Code? Wenn ich die Unit nicht einbinde kommt kein Fehler, aber das Image wird nicht angezeigt wenn ich Pngimage einfüge kommt ein Error den ich schon geschrieben habe ! Ich brauche ja kein Code schreiben und das Pngimage einzufügen ?!

Uwe Raabe 10. Sep 2010 07:21

AW: Pngimage
 
Zitat:

Zitat von xZise (Beitrag 1048533)
Vielleicht ist er verwirrt, da er nicht weiß ob er dein pngimage oder das von Delphi 2010 verwenden soll?

Um das mal deutlich zu machen: die PngComponents in dem Link sind eine Komponentensammlung für D2009+, die selbst PngImage benötigt. Zu Zeiten vor D2009 (da gab's die noch bei www.thany.org) war eine Kopie von PngImage enthalten; seit D2009 ist PngImage Bestandteil von Delphi, deshalb fehlen die entsprechenden Units in PngComponents.

Für D2010 gilt also: Es gibt nur ein PngImage und das gehört zur Delphi Library.

Uwe Raabe 10. Sep 2010 07:37

AW: Pngimage
 
Zitat:

Zitat von -Phantom- (Beitrag 1048534)
Ja welchen Code? Wenn ich die Unit nicht einbinde kommt kein Fehler, aber das Image wird nicht angezeigt wenn ich Pngimage einfüge kommt ein Error den ich schon geschrieben habe ! Ich brauche ja kein Code schreiben und das Pngimage einzufügen ?!

Die einzige Code-Zeile, die du bisher rausgerückt hast ist diese:

Delphi-Quellcode:
Byte(Dest^) := Owner.InverseGamma[pByte(Longint(Src) + 2)^]; inc(Dest);
Woher sollen wir denn wissen, was Dest, Owner, und Src sind und was Owner.InverseGamma liefert?

Da der Code compiliert, wenn PngImage nicht eingebunden ist, liegt offensichtlich ein Problem mit gleichnamigen Identifiern vor. Das ist mit der Angabe der Code-Zeile, wo der Fehler vom Compiler bemängelt wird, allein nicht zu analysieren.

Oder doch? :glaskugel: Nehmen wir an, Owner ist ein TPngImage (das hat nämlich ein InverseGamma). Wenn es ohne
Delphi-Quellcode:
uses pngimage
compiliert, muss es noch eine andere Deklaration von TPngImage geben, die in dem Fall für Owner verwendet wird.

Dest ist offensichlich ein Pointer, aber auf was? Vermutlich nicht auf Byte (dann wäre der Cast überflüssig) sondern einen Char, denn PChar konnte man in früheren Delphi-Versionen einfach inkrementieren. Da aber Char in D2009+ zwei Byte groß ist, lässt der Compiler eine Zuweisung auf die gecastete Pointer-Dereferenz nicht zu.

Ergo: Die Deklaration von Dest scheint der Casus Cnactus zu sein!

Also entweder du zeigst uns deutlich mehr von deinem Code, oder du suchst alleine weiter.

-Phantom- 10. Sep 2010 13:02

AW: Pngimage
 
Das ist doch die Unit "pngimage.pas" Die hast du doch selber bestimmt oder nicht? Oder soll ich hier nun 1000 Zeiligen Code posten?

Uwe Raabe 10. Sep 2010 13:11

AW: Pngimage
 
Zitat:

Zitat von -Phantom- (Beitrag 1048703)
Das ist doch die Unit "pngimage.pas" Die hast du doch selber bestimmt oder nicht? Oder soll ich hier nun 1000 Zeiligen Code posten?

Jetzt wird mir allerdings einiges klar: Der Fehler taucht innerhalb PngImage.pas auf? Die sollte allerdings gar nicht übersetzt werden, da sie bereits als DCU vorliegt und kein Suchpfad auf die zugehörige PAS eingestellt sein sollte.

Ich vermute also, in deinem Suchpfad liegt eine PngImage.pas, die eventuell veraltet ist? Pack die mal irgendwohin, wo der Compiler sie nicht findet und dann versuch's nochmal.

-Phantom- 10. Sep 2010 13:17

AW: Pngimage
 
Der Fehler taucht nur auf wenn ich sie Extra einbinde. Wenn nicht dann kommen keine Fehler aber das Pngimage wird nicht angezeigt. Ich glaube der Fehler liegt bei der Komponente.

mkinzler 10. Sep 2010 13:19

AW: Pngimage
 
Es scheint so, als ob er die Version für eine alte Version findet und deshalb neu kompiliert. Entferne den Pfad, in dem du den Source kopierst hat, mal aus dem Bobliotheks-/Suchpfad der IDE

-Phantom- 10. Sep 2010 13:39

AW: Pngimage
 
Wenn ich das mache, kennt er doch die .dcu der Komponente nicht mehr? Ich weiß nun nicht genau welchen Pfad du meinst...

mkinzler 10. Sep 2010 13:46

AW: Pngimage
 
Doch, abe dann die "richtige" Version. Du benötigst die "alte" Version nicht, da diese Unit (zur D-Version passende) bereits Teil der VCL ist.

Zitat:

Zitat von Delphi-Hilfe
pngimage.TPngImageAus DE VCL Build
Inhaltsverzeichnis
1 Delphi-Informationen
2 C++-Informationen
3 Beschreibung
4 Siehe auch

Delphi-Informationen

von pngimage.pas

TPngImage = class(TGraphic)
Unit: pngimage

Typ: Klasse

Geerbte Klassen-Member: Member von pngimage.TPngImage

Klasseneigenschaften: Eigenschaften von pngimage.TPngImage

Klassenmethoden: Methoden von pngimage.TPngImage

Klassenfelder: Felder von pngimage.TPngImage

Klassenkonstruktoren und -destruktoren: Konstruktoren von pngimage.TPngImage

[Bearbeiten] C++-Informationen

von pngimage.hpp

TPngImage = class(TGraphic)


Unit: pngimage

Typ: Klasse

Geerbte Klassen-Member: Member von pngimage.TPngImage

Klasseneigenschaften: Eigenschaften von pngimage.TPngImage

Klassenmethoden: Methoden von pngimage.TPngImage

Klassenfelder: Felder von pngimage.TPngImage

Klassenkonstruktoren und -destruktoren: Konstruktoren von pngimage.TPngImage

[Bearbeiten] Beschreibung
TPngImage kapselt eine PNG-Grafik (Portable Network Graphics).




Mit TPngImage können Sie PNG-Grafiken (Portable Network Graphics) laden und bearbeiten. Ein PNG-Bild unterstützt Transparenz und eine Vielzahl von Komprimierungsoptionen. Es ist nicht erforderlich, die Klasse TPngImage direkt zu verwenden. Wenn Ihre Anwendung PNG-Bilder akzeptieren soll, fügen Sie einfach der uses-Liste die Unit pngimage hinzu. Dadurch gewährleisten Sie, dass das PNG-Grafikformat in der VCL registriert wird.

Zitat:

Ich weiß nun nicht genau welchen Pfad du meinst...
Den Pfad, auf dem du die alte Version installierst/entpackt hast.

-Phantom- 10. Sep 2010 13:52

AW: Pngimage
 
Also wenn ich auf "suchen" gehe und da pngimage eingebe kommt da die die .pas Datei. Aber sie ist laut dem Pfad wohl mit der Jedi Komponente Installiert worden

"C:\Users\Administrator\Downloads\JVCL338CompleteJ CL201-Build3449\jvcl\devtools\MakePNG\pngimage.pas"

Und wo kann ich diesen Pfad in Löschen? Ich finde das in Delphi 2010 ziemlich unübersichtlich.

-Phantom- 10. Sep 2010 13:59

AW: Pngimage
 
Habe es gefunden. Es geht wenn ich den Pfad lösche und dann wieder die Pngimage einbinde. Wenn ich sie nicht einbinde geht es nicht aber aber Hauptsache das geht nun! Danke

xZise 11. Sep 2010 10:57

AW: Pngimage
 
Zitat:

Zitat von -Phantom- (Beitrag 1048534)
Ja welchen Code? Wenn ich die Unit nicht einbinde kommt kein Fehler, aber das Image wird nicht angezeigt wenn ich Pngimage einfüge kommt ein Error den ich schon geschrieben habe ! Ich brauche ja kein Code schreiben und das Pngimage einzufügen ?!

Nur zum klarstellen: Ich meine nicht "binde es nicht ein", sondern das Delphi 2010 das falsche einbindet. Also statt die hauseigene pngimage.pas (die du mit Delphi 2010 erworben hast) sondern deine veraltete pngimage.pas. Das heißt ich meinte nur, verhindere das er deine lädt und stattdessen die von Delphi 2010 lädt.

Also aus den Suchpfad rausnehmen/nicht ins Projekt einbinden/Datei umbennen/Datei löschen.

MfG
Fabian


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