Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Handle Problem (https://www.delphipraxis.net/5964-handle-problem.html)

braingrenade 24. Jun 2003 19:04


Handle Problem
 
Moin Leute !

Ich hab eine prozedur in einer
unit :

Delphi-Quellcode:

type myclass = class
 targethandle : HWND;
 procedure init(windowhandle : HWND);
  ...
end;

...

procedure myclass.init(windowhandle : HWND);
begin
targethandle := windowhandle; // in dieser zeile kommt der fehler
...
end;
nun möchte ich diese prozedue in einer form so ausführen :

Delphi-Quellcode:

var x : myclass;

procedure y;
begin
x.init(application.handle);
end;
aber es kommt währen der laufzeit immer zu folgendem Fehler :

'access violation at address 0046280E in modul ...'

Weiß jemand wie das beheben kann ?

Christian Seehase 24. Jun 2003 19:08

Moin Braingrenade,

bist Du sicher, dass der Fehler nicht in dieser Zeile kommt

Delphi-Quellcode:
x.init(application.handle);
Vielleicht hast Du's ja auch nur nicht mit hingeschrieben, aber ich seh' nämlich nirgends, dass das Objekt auch erzeugt wurde.

braingrenade 24. Jun 2003 19:25

aso!

Du meinst ich soll Tobject vererben und dann create aufrufen?

ich dachter immer das geht auch ohne!

Christian Seehase 24. Jun 2003 19:30

Moin Braingrenade,

wenn Du etwas von class ableitest so wird das intern als class(TObject) gesehen.

In keinem Falle aber kommst Du um den Aufruf eines Konstruktors herum, wenn Du eine Instanz von Deiner Klasse bilden willst.

Dazu musst Du nicht zwingend selber einen erstellen, wenn Du nichts hast was dort initialisiert werden soll.

Wenn Du also erst den Konstruktor der Klasse aufrufst

Delphi-Quellcode:
var x : myclass;

procedure y;
begin
  x := myclass.create; // Instanz von MyClass erzeugen
  x.init(application.handle);
end;
sollte es gehen.

Dazu musst Du in Deiner Klasse nichts ändern.

braingrenade 24. Jun 2003 19:34

Alles funzt jetzt !!

DAnke!


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:28 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