AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Access Violation bei einer Zuweisung

Ein Thema von MARGERSCH · begonnen am 18. Aug 2005 · letzter Beitrag vom 20. Aug 2005
Antwort Antwort
Seite 1 von 2  1 2      
MARGERSCH

Registriert seit: 6. Dez 2004
Ort: Pfalzgrafenweiler
38 Beiträge
 
Delphi 2010 Professional
 
#1

Access Violation bei einer Zuweisung

  Alt 18. Aug 2005, 17:02
Hallo,

Ich bekomme in einer Prozedur einer selbst geschriebenen Klasse
bei der Zuweisung dWert1 := dWert2; eine Access Violation

Im Projekt LDUAcquisition.exe ist eine Exception der Klasse EAccessViolation aufgetreten. Meldung: 'Zugriffsverletzung bei Adresse 005FAD4C in Modul 'LDUAcquisition.exe'. Schreiben von Adresse 00000030'. Prozeß wurde angehalten. Mit Einzelne Anweisung oder Start fortsetzen.

Dabei ist dWert1 eine public Double-Variable in einer Unterklasse
Dabei ist dWert2 eine lokale Double-Variable mit einem normalen Wert (2.6267)

Hat jemand eine Idee, was falsch sein könnte ?

Ich bin für jeden Tipp dankbar

Martin
Martin
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#2

Re: Access Violation bei einer Zuweisung

  Alt 18. Aug 2005, 17:04
Wurde die Unterklasse erstellt ?
  Mit Zitat antworten Zitat
MARGERSCH

Registriert seit: 6. Dez 2004
Ort: Pfalzgrafenweiler
38 Beiträge
 
Delphi 2010 Professional
 
#3

Re: Access Violation bei einer Zuweisung

  Alt 18. Aug 2005, 17:15
Sie ist in der Hauptklasse, wo auch die (fehlerhafte) Prozedur steht,
im public-Teil mit einer Instanz deklariert. In der Prozedur selbst steht
natürlich dann auch
Delphi-Quellcode:
with Instanz do
  dWert1 := dWert2;
Martin
  Mit Zitat antworten Zitat
Benutzerbild von BlackJack
BlackJack

Registriert seit: 2. Jul 2005
Ort: Coesfeld
246 Beiträge
 
Delphi 2005 Personal
 
#4

Re: Access Violation bei einer Zuweisung

  Alt 18. Aug 2005, 17:16
hast dudenn auch im contructor der "Hauptklasse" (oder sonstwo)
Instanz := TUnterKlasse.Create; stehen?
See my shadow changing, stretching up and over me.
Soften this old armor. Hoping I can clear the way
By stepping through my shadow, coming out the other side.
Step into the shadow. Forty six and two are just ahead of me.
  Mit Zitat antworten Zitat
MARGERSCH

Registriert seit: 6. Dez 2004
Ort: Pfalzgrafenweiler
38 Beiträge
 
Delphi 2010 Professional
 
#5

Re: Access Violation bei einer Zuweisung

  Alt 18. Aug 2005, 17:24
Tschuldigung, ich bin ein wenig durcheinander gekommen
(tut mir leid), die Variable dWert1 ist doch direkt in der Hauptklasse definiert
Martin
  Mit Zitat antworten Zitat
Benutzerbild von BlackJack
BlackJack

Registriert seit: 2. Jul 2005
Ort: Coesfeld
246 Beiträge
 
Delphi 2005 Personal
 
#6

Re: Access Violation bei einer Zuweisung

  Alt 18. Aug 2005, 17:34
wenn die Variable ein Double und in einer Klasse deklariert ist, dann kann der Fehler eigentlich nur kommen, wenn keine Instanz erstellt wurde, d.h. wenn Create nicht aufgerufen worden ist. Check doch noch mal nach ob du das nicht vergessen hast.

und wenn du soetwas schreibst:
Delphi-Quellcode:
with Instanz do
  dWert1 := dWert2;
, dann werden sowohl dWert1 als auch dWert2 zuerst in "Instanz" gesucht, d.h. wenn Instanz eine Variable namens dWert1 hat, dann wird diese angesprochen, und nicht etwa die Variable dWert1 der Hauptklasse - ich weiss ja nicht wie es jetzt genau sein soll. von daher vielleicht mal das "with" weglassen und die Variablen direkt über die Instanzen ansprechen.
See my shadow changing, stretching up and over me.
Soften this old armor. Hoping I can clear the way
By stepping through my shadow, coming out the other side.
Step into the shadow. Forty six and two are just ahead of me.
  Mit Zitat antworten Zitat
18. Aug 2005, 17:54
Dieses Thema wurde von "sakura" von "Neuen Beitrag zur Code-Library hinzufügen" nach "Sonstige Fragen zu Delphi" verschoben.
MARGERSCH

Registriert seit: 6. Dez 2004
Ort: Pfalzgrafenweiler
38 Beiträge
 
Delphi 2010 Professional
 
#8

Re: Access Violation bei einer Zuweisung

  Alt 20. Aug 2005, 11:04
Danke, BlackJack, für die Hinweise,
ich habe deshalb noch mal den Code überprüft.
Die Instanz der Hauptklasse wurde erstellt.
 Device := TDevice.Create Der Fehler kommt auch, wenn ich die Unterklasse
Instanz vor die einzelnen Variablen und Objekte setze
und die with-Anweisung weglasse.

Allerdings ist mir beim Testen etwas anderes aufgefallen
Wenn ich im obigen Source Fkt(x,y,z) ersetze durch den
konstanten Wert 2.6267, dann gibt es kein Problem.
Also dürfte der Fehler wohl in der Funktion Fkt liegen.
Das Komische ist nur, dass bei der Berechnung des Wertes
durch die Funktion Fkt kein Fehler auftaucht und in dWert2
wirklich der richtige berechnete Wert zu finden ist.
Vielleicht noch zur Info: Fkt ist eine Funktion
aus einer Sammlung von selbstgeschriebenen mathematischen
Funktion in einer eigenen Unit.
Martin
  Mit Zitat antworten Zitat
MARGERSCH

Registriert seit: 6. Dez 2004
Ort: Pfalzgrafenweiler
38 Beiträge
 
Delphi 2010 Professional
 
#9

Re: Access Violation bei einer Zuweisung

  Alt 20. Aug 2005, 11:29
Der Fehler kommt selbst dann, wenn ich erst die Funktion aufrufe
und danach den Wert dWert1 mit einem konstanten wert überschreibe
Also :
Delphi-Quellcode:
Procedure xyz;
 var dWert2 : double;
begin
  with clKlasse do
  begin
    dWert2 := Fkt(x,y,z);
    dWert2 := 0.26267
    dWert1 := dWert2 // hier kommt die Access Violation
  end;
  ...
end;
Delphi-Quellcode:
Procedure xyz;
 var dWert2 : double;
begin
  with clKlasse do
  begin
    dWert2 := 0.26267
    dWert1 := dWert2
  end;
  ...
end;
läuft hingegen einwandfrei
Martin
  Mit Zitat antworten Zitat
Benutzerbild von BlackJack
BlackJack

Registriert seit: 2. Jul 2005
Ort: Coesfeld
246 Beiträge
 
Delphi 2005 Personal
 
#10

Re: Access Violation bei einer Zuweisung

  Alt 20. Aug 2005, 11:32
und dWert1 ist ein feld von clKlasse? dann wird entweder clKlasse nicht Created oder die Fkt-function ist fehlerhaft. (ich denke eher ersteres)

ansonsten ist es ziemlich merkwürdig, dass der 2. code funzt, der 1. aber nicht... ich kann mir das höchstens so erklären dass der Debugger an der falschen Stelle die AV anzeigt.
See my shadow changing, stretching up and over me.
Soften this old armor. Hoping I can clear the way
By stepping through my shadow, coming out the other side.
Step into the shadow. Forty six and two are just ahead of me.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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:24 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