Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   png image - mit delphi xe / delphi 2010 (https://www.delphipraxis.net/161369-png-image-mit-delphi-xe-delphi-2010-a.html)

bernhard_LA 30. Jun 2011 13:05

png image - mit delphi xe / delphi 2010
 
ich bin dabei die unit pngimage.pas auf unicode umzustellen -- wir haben ein projekt welches mit delphi 7 und delphi 2010 / delphi Xe erstellt wurde .
(wir versuchen möglichst viel code von delphi 7 auf delphi 2010-- unicode zu retten ....)

wie lautet dieser code unter d2010 :

const
PngHeader: Array[0..7] of Char = (#137, #80, #78, #71, #13, #10, #26, #10);

{Loads the image from a stream of data}
procedure TPngObject.LoadFromStream(Stream: TStream);
var
Header : Array[0..7] of Char; // ??? TODO ???
HasIDAT : Boolean;

{Chunks reading}
ChunkCount : Cardinal;
ChunkLength: Cardinal;
ChunkName : TChunkName;
begin
{Initialize before start loading chunks}
ChunkCount := 0;
ClearChunks();
{Reads the header}
Stream.Read(Header[0], 8);

{Test if the header matches} /// diese abfrage kracht wenn ich diesen code unter d2010 ausführe !!!!!!!!!!!!!
if Header <> PngHeader then

begin
RaiseError(EPNGInvalidFileHeader, EPNGInvalidFileHeaderText);
Exit;
end;

Neutral General 30. Jun 2011 13:11

AW: png image - mit delphi xe / delphi 2010
 
statt "Char" musst du "AnsiChar" benutzen

Memnarch 30. Jun 2011 13:15

AW: png image - mit delphi xe / delphi 2010
 
sag mir bitte nicht dass du PNGImage.pas portest o.O. Die ist doch bei jedem delphi2010 dabei?

Bernhard Geyer 30. Jun 2011 13:15

AW: png image - mit delphi xe / delphi 2010
 
Zitat:

Zitat von bernhard_LA (Beitrag 1109185)
ich bin dabei die unit pngimage.pas auf unicode umzustellen

Delphi (XE) bringt doch schon eine pngimage.pas mit? Wieso unnötigerweise eine eigene PNG-Unit weiter pflegen?

Memnarch 30. Jun 2011 13:16

AW: png image - mit delphi xe / delphi 2010
 
@Bernhard: da haben wir wohl den roten kasten geowned 8-)

@Daniel: Wir brauchen zeitstempel bis auf die sekunde, will wissen um wieviele sek. ich schneller war :D

himitsu 30. Jun 2011 13:29

AW: png image - mit delphi xe / delphi 2010
 
Bzw. es sollte sogar die selbe PNGImage.pas im Delphi mit enthalten sein. (nur etwas angepaßt)

Uwe Raabe 30. Jun 2011 13:37

AW: png image - mit delphi xe / delphi 2010
 
Zitat:

Zitat von himitsu (Beitrag 1109200)
Bzw. es sollte sogar die selbe PNGImage.pas im Delphi mit enthalten sein. (nur etwas angepaßt)

Das ist in erster Näherung so richtig! Es gibt allerdings einen Unterschied: die alte pngimage.pas hat für png ein TPNGObject registriert, während die neue ein TPngImage registriert. Damit können alte DFMs nicht gelesen werden. Abhilfe schafft folgender Code in eine geeigneten Unit:

Delphi-Quellcode:
type
  TPNGObject = class(TPngImage);
initialization
  TPicture.RegisterFileFormat('', '', TPNGObject);
finalization
  TPicture.UnregisterGraphicClass(TPNGObject);
end.

bernhard_LA 2. Jul 2011 08:29

AW: png image - mit delphi xe / delphi 2010
 
die Idee hinter der frage :

*** ein port der unit pngimage.pas von der version 1.5xx als open source im Internet eingestellt auf unicode müsste dann doch weiterhin open source //urheberrechtsfrei sein und ich kann mit dieser pngunit sowohl open souce code delphi (support für D7 ... Delphi XE) als auch open source code lazarus anwendungen erstellen (code compatibel)

*** ferner habe ich unicode von Delphi 2010 noch überhaupt nicht verstanden zb. unsere Funktion

LoadStringFromFile(const FileName: string; var LoadString: string); lief unter Delphi 7 perfekt und unter Delphi 2010 bekomme ich eine Fehlermeldung ' Error : can't compile unit ...'


*** wir haben jede Mengee DLLs die :

function AnnyDLLFunction (aValue : PChar) : ..... als Aufrufparameter verwenden, die Units rufen wir von Delphi 7, C Code oder sogar von Matlab aus auf. Unter Delphi 2010 wird der Code fehlerhaft abgearbeitet.

Gibt en Tutorial welche die Unicode Fragen beantwortet, mein Code muss D7 und D2010 compilierbar bleiben

himitsu 2. Jul 2011 08:50

AW: png image - mit delphi xe / delphi 2010
 
Zitat:

AnnyDLLFunction (aValue : PChar)
Wenn die DLL mit ANSI kompilert wurde und irgendwelche Idioten Leute den Funktions-Header als dynamisch deklariert haben, dann sollte man sich nicht wundern, wenn es knallt,
da seit D2009 PChar ein PWideChar ist und davor ein PAnsiChar war ... Tschuldschung, daß ich es so direkt sag :oops:
, aber es wird doch oft genug gesagt?


Lösung: Deklariere die Funktion mit PAnsiChar und es geht.


Zitat:

Error : can't compile unit ...
Und welcher Fehler wird vorher genannt?
Diese(n) solltest du mal beheben, dann geht auch dieser hier weg :zwinker:,
denn dieses ist immer nur ein Folgefehler, es sei denn Delphi fehlen z.B. die nötigen Schreibrechte.



Was das Rechtliche angeht ... dazu kann ich nichs sagen.

Aber:
Auch wenn es vorher Freeware/OpenSource war ... ist es überhaupt in der alten Lizenz erlaubt das "einfach" zu nehmen und zu verändern?
Freeware <> OpenSource <> man darf damit machen, was man will <> man darf Veränderungen verbreiten

Uwe Raabe 2. Jul 2011 10:15

AW: png image - mit delphi xe / delphi 2010
 
Zitat:

Zitat von himitsu (Beitrag 1109565)
Was das Rechtliche angeht ... dazu kann ich nichs sagen.

Aber:
Auch wenn es vorher Freeware/OpenSource war ... ist es überhaupt in der alten Lizenz erlaubt das "einfach" zu nehmen und zu verändern?
Freeware <> OpenSource <> man darf damit machen, was man will <> man darf Veränderungen verbreiten

Dies ist ein Auszug aus der Original-Lizenz von PngDelphi:

Zitat:

  1. This component may be distributed freely over the internet only when containing the exact same files from the original packaging.
  2. Modified files may not be distributed. If you want to contribute with PNG Delphi, send the enhancements to the author and if he implements your changes, you will be given the proper credit.
  3. The component may be used in commercial projects but may NEVER be sold as source code without author agreement.
  4. Commercial visual graphics libraries are not allowed to use this component WITHOUT AUTHOR PRIOR AGREEMENT.
  5. Credit for the author is required somewhere in the product documentation/or about box/etc.
  6. Source code may be changed if it's not redistributed.

Kurz: Ändern ist zwar möglich, dann aber nicht weitergeben.
Insbesondere Anpassungen an neuere Delphi-Versionen sind immer nur für den eigenen Gebrauch.


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:40 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 by Thomas Breitkreuz