AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Zugriffsverletzung bei Adresse 00000000 bei TImage
Thema durchsuchen
Ansicht
Themen-Optionen

Zugriffsverletzung bei Adresse 00000000 bei TImage

Ein Thema von SuperSeb · begonnen am 18. Jan 2009 · letzter Beitrag vom 19. Jan 2009
Antwort Antwort
Seite 2 von 4     12 34      
SuperSeb

Registriert seit: 7. Jan 2008
17 Beiträge
 
#11

Re: Zugriffsverletzung bei Adresse 00000000 bei TImage

  Alt 18. Jan 2009, 19:12
@DeddyH: O, stimmt. Tut mir Leid, hab oben das falsch geschrieben. Ist natürlich im Original-Code richtig mit Parameter.

@3_of_8: Bin dran...
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.033 Beiträge
 
Delphi 12 Athens
 
#12

Re: Zugriffsverletzung bei Adresse 00000000 bei TImage

  Alt 18. Jan 2009, 19:15
muß man TImage nicht beim .Create einen Owner übergeben?
Zitat von SuperSeb:
@DeddyH: O, stimmt. Tut mir Leid, hab oben das falsch geschrieben. Ist natürlich im Original-Code richtig mit Parameter.
und welches Objekt hast du da als Owner übergeben?
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
SuperSeb

Registriert seit: 7. Jan 2008
17 Beiträge
 
#13

Re: Zugriffsverletzung bei Adresse 00000000 bei TImage

  Alt 18. Jan 2009, 19:26
@3_of_8: Also, bin jetzt Zeile für Zeile durchgesprungen - läuft ohne Probleme. Der Fehler tritt erst auf, wenn man die Form schließt.

@himitsu: Also den AOwner habe ich durchgeschleift, d.h. das ist der des Klassen-Konstructors. Wahrscheinlich liegt hier der Hase im Pfeffer. Beim Erzeugen eines Objekts hatte ich dem Constructor schon mal Application mitgegeben, dann auch mal den eigenen Objektnamen. Es machte bisher keinen Unterschied und funktionierte Einwandfrei - habe auch schon gegooglet, aber so richtig schlau geworden, wo der Unterschied liegt, bin ich nicht.

Vielleicht sollte ich noch dazu sagen (jetzt werde ich wahrscheinlich gesteinigt), dass ich das Objekt unter initialization instanziere, denn wenn ich das erst bei FormCreate einbaue (habs mal getestet), kommt ein schöner Fehler.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

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

Re: Zugriffsverletzung bei Adresse 00000000 bei TImage

  Alt 18. Jan 2009, 19:29
Dann zeig doch mal die relevanten Quellcode-Stellen, bevor wir hier weiter in einer Blackbox herumstochern.
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
Benutzerbild von 3_of_8
3_of_8

Registriert seit: 22. Mär 2005
Ort: Dingolfing
4.129 Beiträge
 
Turbo Delphi für Win32
 
#15

Re: Zugriffsverletzung bei Adresse 00000000 bei TImage

  Alt 18. Jan 2009, 19:31
Gibst du das Bild auch wieder irgendwann frei?
Manuel Eberl
„The trouble with having an open mind, of course, is that people will insist on coming along and trying to put things in it.“
- Terry Pratchett
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

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

Re: Zugriffsverletzung bei Adresse 00000000 bei TImage

  Alt 18. Jan 2009, 19:33
Nur im Destruktor, hat er weiter oben gesagt.
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
SuperSeb

Registriert seit: 7. Jan 2008
17 Beiträge
 
#17

Re: Zugriffsverletzung bei Adresse 00000000 bei TImage

  Alt 18. Jan 2009, 19:47
@ 3_of_8:

Zitat:
[...] einmal im destructor.

@DeddyH: bitteschön:

Delphi-Quellcode:
initialization
  Klasse := TKlasse.Create(Klasse); //Ob das wohl so stimmt???
end.
Delphi-Quellcode:
//Klassendefinition habt ihr ja schon oben

constructor TKlasse.Create(AOwner: TComponent);
var
begin
  inherited Create(AOwner);
  Bild := TImage.Create(AOwner);
  with Bild do
  begin
    Parent := Self;
    Transparent := true;
    //usw. - alles, was man hier tun will, geht, ohne dass es beim Schließen einen Fehler erzeugt
  end;
end;

destructor TKlasse.Destroy;
begin
  Bild.Free; //da wirds gekillt
end;

Wenn ich jetzt in irgendwelche "hauseigenen" Prozeduren (z.B. wie oben procedure TKlasse.MachWas z.B. Bild.Top := 5; reinschreibe, dann gibts beim Schließen n Fehler

Was mich ja am Meisten fuchst, ist, dass - wenn ich die Passage aus der Prozedur rausnehme - sowohl "Bild" als auch das andere TImage-Objekt funktioniert
  Mit Zitat antworten Zitat
Benutzerbild von 3_of_8
3_of_8

Registriert seit: 22. Mär 2005
Ort: Dingolfing
4.129 Beiträge
 
Turbo Delphi für Win32
 
#18

Re: Zugriffsverletzung bei Adresse 00000000 bei TImage

  Alt 18. Jan 2009, 19:49
Okay. Du übergibst also dem Image einen Owner und gibst das Image frei, wenn deine Klasse freigegeben wird. Jetzt wird der Owner selbst freigegeben und hat noch das Image, um das er sich ja kümmern soll, und versucht es freizugeben. Was passiert, wenn man ein bereits freigegebenes Objekt nochmal freigeben will? Richtig, es kracht.

Also: Übergib nil als Owner.
Manuel Eberl
„The trouble with having an open mind, of course, is that people will insist on coming along and trying to put things in it.“
- Terry Pratchett
  Mit Zitat antworten Zitat
SuperSeb

Registriert seit: 7. Jan 2008
17 Beiträge
 
#19

Re: Zugriffsverletzung bei Adresse 00000000 bei TImage

  Alt 18. Jan 2009, 19:58
Danke für deine Antwort.

Habe jetzt folgendes im Konstruktor stehn:

Delphi-Quellcode:
//...
Bild := TImage.Create(nil);
//...
...aber es kracht immer noch. Diemal sagt er (mal etwas konkreter): Exception der Klasse EInvalidPointer Meldung: "Ungültige Zeigeroperation"

Hmmm... Mist.

Was nu?

  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#20

Re: Zugriffsverletzung bei Adresse 00000000 bei TImage

  Alt 18. Jan 2009, 20:01
Hast du mal durch schrittweises Ausführen im Debugger versucht herauszufinden in welcher Zeile der Fehler auftritt?
Markus Kinzler
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 4     12 34      


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 05:02 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