Das mit der
TObjectList habe ich jetzt eingebaut. Leider aber nicht richtig. Denn ich bekomme jetzt eine Zugriffsverletzung. Syntaxfehler kann
ich nicht ausmachen. Der Code wird ohne zu murren kompiliert.
So funktionierte es ...
Delphi-Quellcode:
Procedure Speichern;
Var
PNG :TPNGObject;
Begin
// Vom Scanner holen
// Image1 ist vom Typ TImage
// Image ist vom Typ TBitmap
Image1.Picture.Assign(Image);
// Speichern
PNG.Assign(Image1.Picture.Graphic);
End;
und so funktioniert es nicht mehr ...
Delphi-Quellcode:
Procedure Speichern;
Var
PNG :TPNGObject;
Begin
// Bilder ist vom Typ TObjectList und wurde zuvor mit
// Bilder:=TObjectList.Create; sowie
// Bilder.OwnsObjects:=True; angelegt.
// Image ist wieder vom Typ TBitmap
Bilder.Add(Image);
// Erstes Bild Speichern
PNG.Assign(TBitmap(Bilder.Items[0]));
End;
Kleine Erklärung:
Ich wollte mit dem zweiten Beispiel nicht den Weg über
TImage gehen. Zum einen ist das Bild sowieso vom Typ Bitmap. Zum anderen muss ich das Bild dann verstecken, weil TImage.Create(X); in X immer ein Argument z.B. Form1 haben will und es dort dann auch anzeigt.
Zusätzliche Frage:
Ich vermute, dass das übergeben Image nur ein Pointer ist. Es ist daher nicht auszuschließen, dass es beim nächsten Aufruf des Ereignisses durch die TWAIN den Inhalt überschreibt. Wenn ich TObjectList richtig verstehe, ist das selbst auch wieder nur eine Liste von Pointern. Wie kann ich sicher stellen, dass ich auch wirklich den Inhalt in der Liste gespeichert habe.
Wie komme ich an den Inhalt der TObjectList ran?
Gruß, Alex