Zitat von
r2c2:
Nach dem beginn im contructor gehört noch n inherited Create... In dem Fall isses zwar nicht so wichtig, man sollte es sich trotzdem angewöhnen...
Wieso denn dies? Wir haben schliesslich keinen Constructor überschrieben - schon allein, da keiner virtuell ist...
@EWeiss:
Delphi-Quellcode:
implementation
var
Magnetic : TMagnetic;
begin
Magnetic := TMagnetic.create; // <- TMagnetic - hier beim Constructor immer die Klasse angeben - die Variable mit der Instanz (Magnetic) ist ja noch nicht gefüllt!
try
Magnetic.Class_Initialize; // klar, kein Problem so - also Class_Initialize als Methode. Du könntest die Initialisierung aber auch im Constructor erledigen
finally
Magnetic.Free; // du willst hier doch die Klasse freigeben. Dies geschieht durch den Destructor und der wird im Normalfall über Free aufgerufen.
end;
end;
// Das sind so normale Proceduren gewesen, du willst aber Methoden machen. Daher: TMagnetic. davor. Sprich: Schreibe den Klassennamen mit einem Punkt davor und du erhälst eine Methode.
// Ansonsten: Diese Anweisungen kannst du auch in den Constructor übertragen
procedure TMagnetic.Class_Initialize;
begin
// Default snap width
m_lSnapWidth := 10;
// Initialize array (handled windows info)
ReDim m_uWndInfo(0): WND_INFO;
m_lWndCount := 0;
End;
// wie oben beschrieben mal als Destructor ausgelegt und nicht mehr als eigene Methode (Class_Terminate)
Destructor TMagnetic.Destroy;
begin
// Stop subclassing
If (m_lWndCount) Then
Subclass_StopAll;
Inherited;
End;
Nochwas als Tipp: Du hast doch die Architect Version von delphi, daher nutze doch die Code-Vervollständigung. Sprich: Schreibe oben doch einfach mal das Klassen Grundgerüst im Interface Abschnitt:
Delphi-Quellcode:
Type
TMagnetic = Class
Private
m_lSnapWidth: Integer;
m_uWndInfo: Array Of WND_Info;
m_lWndCount: Integer; // wirklich nötig? Die Länge des dynamisches Arrays kann man in Delphi jederzeit abfragen...
Public
Constructor Create;
Destructor Destroy; Override;
End;
So, wenn du nun dich mit dem Cursor in die Zeile des Constructor's oder Destructor's stellst und dann STRG-SHIFT-C drückst, dann sollte Delphi dir die ganzen Methoden vervollständigen und im Implementation Teil ordentlich einfügen (mit dem TMagnetic vor dem Methodennamen).