AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi TImage EAccessViolation
Thema durchsuchen
Ansicht
Themen-Optionen

TImage EAccessViolation

Ein Thema von Schwedenbitter · begonnen am 26. Aug 2008 · letzter Beitrag vom 27. Aug 2008
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#11

Re: TImage EAccessViolation

  Alt 27. Aug 2008, 11:19
Hi,

Dazu sollte man erwähnen, dass er die Unit "contnrs" einbinden muss.

Gruß
Neutral General
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.622 Beiträge
 
Delphi 12 Athens
 
#12

Re: TImage EAccessViolation

  Alt 27. Aug 2008, 11:33
Das steht aber in der Hilfe (und die ist unter Delphi 6 ja noch zu gebrauchen ).
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
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, 19: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
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.622 Beiträge
 
Delphi 12 Athens
 
#14

Re: TImage EAccessViolation

  Alt 27. Aug 2008, 19:07
Außer, dass Du das TPngObject nicht anlegst, kann ich auch nichts entdecken. Und TObjectlist enthält eine Liste mit Instanzen, welche ja auch nur Pointer sind. Heran kommst Du ganz normal über den Index, ggf. musst Du halt casten.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Schwedenbitter

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

Re: TImage EAccessViolation

  Alt 27. Aug 2008, 19:11
Zitat von DeddyH:
Außer, dass Du das TPngObject nicht anlegst, kann ich auch nichts entdecken.
Das mache ich schon. Ich wollte nur nicht den ganzen Code hier posten. Sind zwar nur 117 Zeilen. Aber ich will das nicht überfrachten...
Alex Winzer
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.622 Beiträge
 
Delphi 12 Athens
 
#16

Re: TImage EAccessViolation

  Alt 27. Aug 2008, 19:20
In welcher Zeile knallt es denn genau?
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Schwedenbitter

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

Re: TImage EAccessViolation

  Alt 27. Aug 2008, 19:23
@DeddyH
Bei dem Code-Schnipsel in Zeile 10, weil das Object zwar da aber leer war (Siehe unten).
Ich habe es geschafft. Mein Denkfehler (mal wieder).

Es reicht nicht, ein Object anzulegen, sondern ich muss es auch füllen! Richtig muss also so heißen:

Delphi-Quellcode:
Procedure Speichern;
Var
   PNG :TPNGObject;
Begin
   // Typen wie vor
   Bilder.Add(TBitmap.Create);
   // Und jetzt der Inhalt ...
   TBitmap(Bilder.Last).Assign(Image);
   // Erstes Bild Speichern
   PNG.Assign(TBitmap(Bilder.Items[0]));
End;
P.S.
Zitat:
10 Minuten Nachdenken ersparen oftmals 10 Stunden Fehlersuche.
Ich wäre auch nach 10 Stunden ohne probieren nicht drauf gekommen.

DANKE an ALLE
Alex Winzer
  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 23:32 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