AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

png image - mit delphi xe / delphi 2010

Ein Thema von bernhard_LA · begonnen am 30. Jun 2011 · letzter Beitrag vom 2. Jul 2011
Antwort Antwort
bernhard_LA

Registriert seit: 8. Jun 2009
Ort: Bayern
1.138 Beiträge
 
Delphi 11 Alexandria
 
#1

png image - mit delphi xe / delphi 2010

  Alt 30. Jun 2011, 13:05
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;
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#2

AW: png image - mit delphi xe / delphi 2010

  Alt 30. Jun 2011, 13:11
statt "Char" musst du "AnsiChar" benutzen
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Benutzerbild von Memnarch
Memnarch

Registriert seit: 24. Sep 2010
737 Beiträge
 
#3

AW: png image - mit delphi xe / delphi 2010

  Alt 30. Jun 2011, 13:15
sag mir bitte nicht dass du PNGImage.pas portest o.O. Die ist doch bei jedem delphi2010 dabei?
Da man Trunc nicht auf einen Integer anwenden kann, muss dieser zuerst in eine Float kopiert werden
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.197 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: png image - mit delphi xe / delphi 2010

  Alt 30. Jun 2011, 13:15
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?
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von Memnarch
Memnarch

Registriert seit: 24. Sep 2010
737 Beiträge
 
#5

AW: png image - mit delphi xe / delphi 2010

  Alt 30. Jun 2011, 13:16
@Bernhard: da haben wir wohl den roten kasten geowned

@Daniel: Wir brauchen zeitstempel bis auf die sekunde, will wissen um wieviele sek. ich schneller war
Da man Trunc nicht auf einen Integer anwenden kann, muss dieser zuerst in eine Float kopiert werden
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.071 Beiträge
 
Delphi 12 Athens
 
#6

AW: png image - mit delphi xe / delphi 2010

  Alt 30. Jun 2011, 13:29
Bzw. es sollte sogar die selbe PNGImage.pas im Delphi mit enthalten sein. (nur etwas angepaßt)
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.453 Beiträge
 
Delphi 12 Athens
 
#7

AW: png image - mit delphi xe / delphi 2010

  Alt 30. Jun 2011, 13:37
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.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
bernhard_LA

Registriert seit: 8. Jun 2009
Ort: Bayern
1.138 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: png image - mit delphi xe / delphi 2010

  Alt 2. Jul 2011, 08:29
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
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.071 Beiträge
 
Delphi 12 Athens
 
#9

AW: png image - mit delphi xe / delphi 2010

  Alt 2. Jul 2011, 08:50
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
, 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 ,
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
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu ( 2. Jul 2011 um 08:56 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.453 Beiträge
 
Delphi 12 Athens
 
#10

AW: png image - mit delphi xe / delphi 2010

  Alt 2. Jul 2011, 10:15
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.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:18 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