AGB  ·  Datenschutz  ·  Impressum  







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

Seltsame AV bei Pointerzweisung

Ein Thema von Neutral General · begonnen am 7. Mai 2008 · letzter Beitrag vom 7. Mai 2008
Antwort Antwort
Benutzerbild von Neutral General
Neutral General

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

Seltsame AV bei Pointerzweisung

  Alt 7. Mai 2008, 17:06
Hi,

Habe folgenden Quelltext:

Delphi-Quellcode:
TKlasse = class(...)
private
  FMemory: Pointer;
  FSize: Int64;
public
  constructor Create(P: Pointer; DataSize: Int64);
  property Memory: Pointer read FMemory;
end;

implementation

var x: Pointer;

constructor TKlasse.Create(P: Pointer; DataSize: Int64);
var y: Pointer;
begin
  inherited Create;
  FMemory := P; // AV
  x := P; // keine AV
  y := P; // keine AV
  FSize := DataSize;
end;
Der Quelltext sagt schon eigentlich alles.. Ich bekomme wenn ich P FMemory zuweise eine AV. Bei allen anderen Pointervariablen (lokal, global) funktioniert es

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 SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Seltsame AV bei Pointerzweisung

  Alt 7. Mai 2008, 17:10
Wie lauten die Details der AV (vollständige Fehlermeldung!)?
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

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

Re: Seltsame AV bei Pointerzweisung

  Alt 7. Mai 2008, 17:16
Hi,

ne ganz "normale" AV:

Zitat:
---------------------------
Debugger Exception Notification
---------------------------
Project Project1.exe raised exception class EAccessViolation with message 'Access violation at address 00455813 in module 'Project1.exe'. Write of address 00000004'. Process stopped. Use Step or Run to continue.
---------------------------
OK Help
---------------------------
Das seltsame ist, dass ich für @FMemory während dem debuggen: "Inaccessible value" angezeigt bekomme... Verstehe das alles nicht...

PS: x ist <> Pointer($00455813) und <> Pointer($4)!
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
grenzgaenger
(Gast)

n/a Beiträge
 
#4

Re: Seltsame AV bei Pointerzweisung

  Alt 7. Mai 2008, 17:17
also bei mir läuft das problemlos...
Delphi-Quellcode:
program Project1;
{$APPTYPE CONSOLE}

uses
  SysUtils;

type
 tC = class
  strict private
   fMem: Pointer;
  public
   Constructor Create(p: Pointer);
   procedure run;
   property Memory: Pointer read fMem;
 end;

{ tC }
constructor tC.Create(p: Pointer);
begin
 Inherited Create;
 fMem := p;
end;
procedure tC.run;
begin
 writeln('irgendwas ...');
 readln;
end;

var
 x: TC;
begin
 x := tc.Create(pointer($abcd));
 try
  x.run;
 finally
  x.free;
 end;
end.
muss also an einer anderen stelle liegen... was rufst du zuvor auf? vielleicht ist die meldung nur verzögert...

BTW: ist deine klasse bereits erstellt?
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: Seltsame AV bei Pointerzweisung

  Alt 7. Mai 2008, 17:18
Eigentlich ist es nicht von dir zu erwarten, aber du rufst nicht doch zufällig Create direkt als Methode auf (Klasse.create) anstatt als Klasse:=TKlasse.create;
So sieht es zumindest aus.
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#6

Re: Seltsame AV bei Pointerzweisung

  Alt 7. Mai 2008, 17:19
Zitat:
ne ganz "normale" AV:
So wie ein Fehler ein ganz normaler Fehler ist

Durch die vollständige Fehlermeldung kann ich dir deinen Fehler schon recht sicher sagen:
Delphi-Quellcode:
var
  instanz: TKlasse;
begin
  instanz.Create(irgendwas, irgendwas);
  //anstelle von:
  instanz := TKlasse.Create(irgendwas, irgendwas);
[Edit]4 ist das Offset von fMemory zur Instanz
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

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

Re: Seltsame AV bei Pointerzweisung

  Alt 7. Mai 2008, 17:25
Tatsächlich

Passiert mir eigentlich nie, und wenn dann bemerke ichs eigentlich noch rechtzeitig
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
Antwort Antwort


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