![]() |
Seltsame AV bei Pointerzweisung
Hi,
Habe folgenden Quelltext:
Delphi-Quellcode:
Der Quelltext sagt schon eigentlich alles.. Ich bekomme wenn ich P FMemory zuweise eine AV. Bei allen anderen Pointervariablen (lokal, global) funktioniert es :gruebel:
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; Gruß Neutral General |
Re: Seltsame AV bei Pointerzweisung
Wie lauten die Details der AV (vollständige Fehlermeldung!)?
|
Re: Seltsame AV bei Pointerzweisung
Hi,
ne ganz "normale" AV: Zitat:
PS: x ist <> Pointer($00455813) und <> Pointer($4)! |
Re: Seltsame AV bei Pointerzweisung
also bei mir läuft das problemlos...
Delphi-Quellcode:
muss also an einer anderen stelle liegen... was rufst du zuvor auf? vielleicht ist die meldung nur verzögert...
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. BTW: ist deine klasse bereits erstellt? |
Re: Seltsame AV bei Pointerzweisung
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. |
Re: Seltsame AV bei Pointerzweisung
Zitat:
Durch die vollständige Fehlermeldung kann ich dir deinen Fehler schon recht sicher sagen:
Delphi-Quellcode:
[Edit]4 ist das Offset von fMemory zur Instanz
var
instanz: TKlasse; begin instanz.Create(irgendwas, irgendwas); //anstelle von: instanz := TKlasse.Create(irgendwas, irgendwas); |
Re: Seltsame AV bei Pointerzweisung
Tatsächlich :oops:
Passiert mir eigentlich nie, und wenn dann bemerke ichs eigentlich noch rechtzeitig :? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:20 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz