Hallo liebe Leut,
Heute kein Problem, sondern eine Erklärung eines möglichen Fehlers.
Ich habe eine funktionierende Anwendung die Bilder über das Internet lädt mit Delphi 2009 neu compiliert und bekam nun bei jedem Bild das ich so versuchte anzuzeigen einen "Jpeg Error 53" oder manchmal auch 54. Die Bilder waren dann auch mit Irfanview nicht anzuzeigen.
Beim stöbern im Netz bemerkte ich das es ähnliche Fehler gibt wenn Leute auf Datenbanken zugreifen und ich denke die Fehlerursache ist die gleiche wie bei mir:
Ich habe mit der
Indy Komponente TidHttp gearbeitet die einen String zurückliefert und dann das JPEG als Rohdatei gespeichert:
Delphi-Quellcode:
Res:=Http.Get(
url);
AssignFile(Datei,Dir+Dateiname);
Rewrite(Datei,1);
BlockWrite(Datei,Res[1],Length(Res));
CloseFile(Datei);
Das klappt nun wegen den Unicodesrings nicht mehr. Also umkopieren in ein Array:
Delphi-Quellcode:
var buffer :
array [1..1000000]
of byte;
procedure Copyinbuffer;
var
i : integer;
begin
for i:= 1
to length(res)
do
buffer[i]:=ord(res[i]);
end;
...
Res:=Http.Get(
url);
Copyinbuffer
AssignFile(Datei,Dir+Dateiname);
Rewrite(Datei,1);
BlockWrite(Datei,buffer,Length(Res));
CloseFile(Datei);
Ich vermute wenn jemand anders diesen JPEG Error 53 bekommt und z.B. das Bild in einer Datenbank gespeichert ist, dass es die gleiche Fehlerursache ist: Das JPEG wird als String aus der Datenbank geliefert und der wird automatisch zu
Unicode umgewandelt.
Vielleicht erspart das dem einen oder anderen eine Fehlersuche....
[edit=SirThornberry]Delphi-Tags gesetzt - nächstes mal bitte selbst machen. Mfg, SirThornberry[/edit]