Προς το περιεχόμενο

Delphi6 και πρόβλημα με method pointer.


capthookb

Προτεινόμενες αναρτήσεις

Δημοσ.

Έχω δημιουργήσει ένα νέο application σε Delphi6 και μετά νέο unit (to unit2).

Στο unit2 δηλώνω ένα Timer object και θέλω να αντιστοιχήσω στο event του OnTimer μια συνάρτηση την Loop, όπως παρακάτω:

 

>unit Unit2;

interface

uses ExtCtrls;

var
 tmr:TTimer;
Procedure Loop(Sender:TObject);
Procedure Initialize;
Procedure Close;

implementation

Procedure Initialize;
begin
 tmr:=TTimer.Create(nil);
 tmr.OnTimer:=Loop;
end;

Procedure Close;
Begin
 tmr.Free;
end;

Procedure Loop(Sender:TObject);
begin
end;

end.

 

 

Όμως όταν κάνω compile παίρνω το εξής error:

>[Error]Unit1.pas(18): Incompatible types: 'method pointer and regular procedure'

Βασικά δηλαδή δεν έχω δηλώσει την συνάρτηση Loop ως method pointer, έτσι ώστε να την αντιστοιχήσω στο event του Timer.

Πως μπορώ να το κάνω αυτό; Αν δε φταίει αυτό, τι άλλο μπορώ να κάνω;

 

Θα εκτιμούσα οποιαδήποτε βοήθεια.

Δημοσ.

Βασικά δεν πρέπει να δηλώσεις την Loop "χύμα", αλλά σαν μέρος ενός object. Πιο απλά μπορείς να κάνεις:

* Κλικ πάνω στον timer στην φόρμα σου,

* στον object inspector, διαλέγεις [Events]

* διπλό κλικ στο OnTimer για να σου δημιουργήσει μόνο του την αντίστοιχη συνάρτηση.

 

Για θεωρητικό background ψάξε στο index του help για "method pointers".

Δημοσ.

Τότε απλά πρέπει να δηλώσεις μια άλλη κλάση που να κληρονομεί από τον TTimer και να περιέχει ΜΕΣΑ ΣΤΗΝ ΚΛΑΣΗ την συνάρτηση Loop. Τα άλλα ισχύουν όπως τα έχεις στον κώδικα, εκτός από το var tmr: MyTimer.

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...