Einzelnen Beitrag anzeigen

Muetze1
(Gast)

n/a Beiträge
 
#10

Re: Class Initialisieren und Terminieren

  Alt 9. Okt 2006, 15:04
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).
  Mit Zitat antworten Zitat