Thema: Delphi TImage EAccessViolation

Einzelnen Beitrag anzeigen

Schwedenbitter

Registriert seit: 22. Mär 2003
Ort: Finsterwalde
622 Beiträge
 
Turbo Delphi für Win32
 
#13

Re: TImage EAccessViolation

  Alt 27. Aug 2008, 18:00
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
Alex Winzer
  Mit Zitat antworten Zitat