Fehlermeldung mit TMemoryStream und TJPGImage, brauche Hilfe
-
Hallo,
bei dieser Version bekomme ich eine Exception: JPG Error #41 !?!
{
TJPEGImage *jpg = new TJPEGImage();
TMemoryStream *Stream = new TMemoryStream();//... Stream wird per Schnittstelle mit JPG-Datei gefüllt
jpg->LoadFromStream(Stream);
Image1->Picture->Assign(jpg);...
}wenn ich den Stream kurz auf die Platte speichere und wieder lade, dann funktioniert es !?!
{
TJPEGImage *jpg = new TJPEGImage();
TMemoryStream *Stream = new TMemoryStream();//... Stream wird per Schnittstelle mit JPG-Datei gefüllt
Stream->SaveToFile("hans.jpg");
jpg->LoadFromFile("hans.jpg");
Image1->Picture->Assign(jpg);...
}Hat jemand eine Erklärung dafür ??
Gruß
Franc
-
Hallo,
Hast du vor dem Laden mit jpg->LoadFromStream(Stream); die StreamPosition auf 0 zurückgesetzt? Also mit Stream->Position = 0;
-
du musst die Position des Streams zuruecksetzen! Beim Schreiben in einen Stream wird der Positionszeiger auf die zuletzt geschriebene Position im Stream gesetzt. Wenn du dann versuchst den Stream zu laden, greifst du natürlich ins Leere.
Beispiel: Object stellt die Schnittstelle dar, aus der die Daten kommen
TMemoryStream *Stream = new TMemoryStream(); TJPEGImage *JPEG = new TJPEGImage(); // Stream mit Daten fuellen Stream->Write(Object.Data, Object.Size); Stream->Position = 0; // Wichtig!!! JPEG->LoadFromStream(Stream); Image->Picture->Assign(JPEG); Application->ProcessMessages(); delete Stream; delete JPEG;
-
DANKE DANKE für die schnelle Hilfe !!!
Ist eigentlich logisch, wäre ich aber nicht von alleine darauf gekommen.
Nochmals Danke !!!
Gruß Franc