AGB  ·  Datenschutz  ·  Impressum  







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

JPEG-Fehler #42?

Ein Thema von VirusXP · begonnen am 12. Feb 2005 · letzter Beitrag vom 2. Mär 2005
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von VirusXP
VirusXP

Registriert seit: 29. Dez 2003
Ort: Ingolstadt
33 Beiträge
 
Delphi 2007 Professional
 
#11

Re: JPEG-Fehler #42?

  Alt 27. Feb 2005, 13:06
Ok ich poste mal son komisches JPEG. Probier du mal ob dus irgendwie schaffst.
Angehängte Grafiken
 
Für die einen ist Windows nur ein Betriebssystem, für die anderen ist es der größte Virus der Welt.
  Mit Zitat antworten Zitat
Benutzerbild von negaH
negaH

Registriert seit: 25. Jun 2003
Ort: Thüringen
2.950 Beiträge
 
#12

Re: JPEG-Fehler #42?

  Alt 27. Feb 2005, 20:35
Ok, du bekommst den Fehler #41 (unter Delphi 5) und ich weis jetzt was DU falsch gemacht hast.

Alle Stream Operationen verändern den Stream-Zeiger -> Stream.Position, auch .LoadFromStream(). Will man erneut auf die Daten im Stream zugreifen so MUSS man vorher die .Position wieder auf den Anfang der Daten zurücksetzen. Sorry, aber ein oft gemachter Anfängerfehler.

Kurz gesagt: die Operationen der Streams in der VCL können die .Position innerhalb des Streams verändern sie dürfen sie aber niemals automatisch wieder auf 0 zurücksetzen. Das muß der Programmierer machen, logisch da ansonsten zb. in einem Stream nicht mehrere Bilder gespeichert werden könnten.

In deinem Falle

Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
var
  M: TMemoryStream;
  I: TJpegImage;
begin
  M := TMemoryStream.Create;
  I := TJpegImage.Create;
  try
    M.LoadFromFile(ExtractFilePath(ParamStr(0)) + '303649.jpg');

    M.Position := 0; // <--- so ist es richtig
// M.Position := M.Size; // <--- so ist es bei dir und Fehler #41 kommt
    I.LoadFromStream(M);

    Image1.Picture.Assign(I);
  finally
    M.Free;
    I.Free;
  end;
end;
Dein JPEG ist also absolut in Ordnung. Im obigen Beispiel wird .LoadFromFile() benutzt, und diese Funktion setzt sehr wohl M.Position auf 0 zurück. Das ist auch in diesem Falle logisch. Das Beispiel dient also nur als Demonstation wenn du zb. statt .LoadFromFile() .LoadFromStream() benuzten würdest.

Gruß Hagen
  Mit Zitat antworten Zitat
Benutzerbild von VirusXP
VirusXP

Registriert seit: 29. Dez 2003
Ort: Ingolstadt
33 Beiträge
 
Delphi 2007 Professional
 
#13

Re: JPEG-Fehler #42?

  Alt 2. Mär 2005, 17:52
Jetzt funzts endlich,
obwohl ich schon so lang und so oft des programmiert hab, vergess ich immer des wieder auf null zu setzen. Nochmal tausend dank. Sollten wir uns mal irgendwo über den weg laufen geb ich dir einen aus!
Für die einen ist Windows nur ein Betriebssystem, für die anderen ist es der größte Virus der Welt.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 01:52 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