AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Hilfe beim Beheben einer Access Violation
Thema durchsuchen
Ansicht
Themen-Optionen

Hilfe beim Beheben einer Access Violation

Ein Thema von Romi · begonnen am 29. Dez 2008 · letzter Beitrag vom 2. Jan 2009
Antwort Antwort
Seite 2 von 3     12 3      
Romi

Registriert seit: 25. Apr 2007
72 Beiträge
 
#11

Re: Hilfe beim Beheben einer Access Violation

  Alt 30. Dez 2008, 00:46
Zitat von rollstuhlfahrer:
keine Ahnung, ob das weiterhilft, aber nutze mal zum Zerstören FreeAndNil.
Wer oder was ist denn FreeAndNil?

Zitat von rollstuhlfahrer:
Schnelle boolische Auswertung mit {$B+} anschalten.
Was macht das genau? Ist das das selbe wie in den Projektoptionen "Vollständige Boolesche Auswertung"? Das stand auf False.
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#12

Re: Hilfe beim Beheben einer Access Violation

  Alt 30. Dez 2008, 07:22
Hallo,

nein, damit erreicht du das Gegenteil.
Zur Frage, was das ist,
gibt es doch die schöne Hilfe ?

Akademisches Bsp:

Delphi-Quellcode:
function Foo: Integer;
begin
  Result:= 1;
end;

{$B+}
a:= 0;
if (a=0) or (b=Foo)
Es wird nur der 1. Teil ausgewertet,
da das Endergebnis ja schon True ist

Foo als Funktion wird überhaupt nicht angesprungen.

Das kann gut sein, oder nicht,
je nachdem, ob der Programmierer in Foo etwas macht,
was immer gemacht werden soll, oder nicht.

Ist immer lustig, solche Sachen zu suchen und zu finden.


Heiko
Heiko
  Mit Zitat antworten Zitat
Romi

Registriert seit: 25. Apr 2007
72 Beiträge
 
#13

Re: Hilfe beim Beheben einer Access Violation

  Alt 30. Dez 2008, 12:53
Zitat von hoika:
Zur Frage, was das ist,
gibt es doch die schöne Hilfe ?
Oh ja, die kann ich leider nicht öffnen. Der Microsoft Document Explorer sei nicht installiert, ist er aber.

Zitat von hoika:
Ist immer lustig, solche Sachen zu suchen und zu finden.
Ich teste gerade noch, aber ich glaube das wars.
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#14

Re: Hilfe beim Beheben einer Access Violation

  Alt 30. Dez 2008, 13:59
Hallo,

zu deinem Hilfe-Problem.

1


Heiko
Heiko
  Mit Zitat antworten Zitat
Benutzerbild von rollstuhlfahrer
rollstuhlfahrer

Registriert seit: 1. Aug 2007
Ort: Ludwigshafen am Rhein
1.529 Beiträge
 
Delphi 7 Professional
 
#15

Re: Hilfe beim Beheben einer Access Violation

  Alt 30. Dez 2008, 14:10
HI

FreeAndNil ist eine Delphi-Prozedur aus der Sysutils-Unit.
Der interne Aufbau sieht wie folgt aus:
Delphi-Quellcode:
procedure FreeAndNil(var Obj);
var
  Temp: TObject;
begin
  Temp := TObject(Obj);
  Pointer(Obj) := nil;
  Temp.Free;
end;
Zuerst wird Temp das Objekt (die Komponente oder sonst was) zugewiesen. Dann wird der VAR-Parameter auf nil gesetzt. -> Fazit: er ist eindeutig nil. Danach wrd noch das Objekt aus dem Speicher geräumt. Achtung: Da .Free von TObject aufgerufen wird, darf diese Prozedur nirgendwo überschrieben werden, was bei manchen Programmierern manchmal vorkommt. Zerstört wird in .Destroy.

Bernhard
Bernhard
Iliacos intra muros peccatur et extra!
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

Re: Hilfe beim Beheben einer Access Violation

  Alt 30. Dez 2008, 14:12
Zitat:
Da .Free von TObject aufgerufen wird, darf diese Prozedur nirgendwo überschrieben werden,
Überschrieben werden schon, man muss in diesem Fall nur sicherstellen, das die geerbte Variante am Schluss aufgerufen wird
Markus Kinzler
  Mit Zitat antworten Zitat
Romi

Registriert seit: 25. Apr 2007
72 Beiträge
 
#17

Re: Hilfe beim Beheben einer Access Violation

  Alt 30. Dez 2008, 14:25
Naja, {B+} hat doch nicht geholfen. Schade, ich hatte 9 Spiele am Stück, das sah so gut aus

Zitat:
Zuerst wird Temp das Objekt (die Komponente oder sonst was) zugewiesen. Dann wird der VAR-Parameter auf nil gesetzt. -> Fazit: er ist eindeutig nil. Danach wrd noch das Objekt aus dem Speicher geräumt. Achtung: Da .Free von TObject aufgerufen wird, darf diese Prozedur nirgendwo überschrieben werden, was bei manchen Programmierern manchmal vorkommt. Zerstört wird in .Destroy.
Das klingt interessant. Du sagtest, es liegt in der SysUtils Unit, wie erweitere ich denn meine Klasse um diese Procedure?
  Mit Zitat antworten Zitat
Romi

Registriert seit: 25. Apr 2007
72 Beiträge
 
#18

Re: Hilfe beim Beheben einer Access Violation

  Alt 2. Jan 2009, 20:00
Zitat von Romi:
Das klingt interessant. Du sagtest, es liegt in der SysUtils Unit, wie erweitere ich denn meine Klasse um diese Procedure?
*bump*
Vllt. noch jemand eine Ahnung?
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

Re: Hilfe beim Beheben einer Access Violation

  Alt 2. Jan 2009, 20:06
Nein Free ist eine Methode der Basis-Klasse TObject, von welcher alle Klassen direkt oder indirekt abgeleitet sind. Überschreibt man diese Methode sollte man am ende die geerbete Aufrufen:

Delphi-Quellcode:
procedure TMeineKlasse.Free();
begin
    ...
    inherited;
end;
Markus Kinzler
  Mit Zitat antworten Zitat
Romi

Registriert seit: 25. Apr 2007
72 Beiträge
 
#20

Re: Hilfe beim Beheben einer Access Violation

  Alt 2. Jan 2009, 20:11
Zitat von mkinzler:
Nein Free ist eine Methode der Basis-Klasse TObject, von welcher alle Klassen direkt oder indirekt abgeleitet sind. Überschreibt man diese Methode sollte man am ende die geerbete Aufrufen:

Delphi-Quellcode:
procedure TMeineKlasse.Free();
begin
    ...
    inherited;
end;
Danke für deine Antwort, aber es ging um FreeAndNil

EDIT: Habs schon gefunden. Hatte mich bloß verlesen. Das löst das Problem mit der Acces Violation! Danke!
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


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