capthookb Δημοσ. 4 Οκτωβρίου 2004 Δημοσ. 4 Οκτωβρίου 2004 Έχω δημιουργήσει ένα νέο 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. Πως μπορώ να το κάνω αυτό; Αν δε φταίει αυτό, τι άλλο μπορώ να κάνω; Θα εκτιμούσα οποιαδήποτε βοήθεια.
alkisg Δημοσ. 5 Οκτωβρίου 2004 Δημοσ. 5 Οκτωβρίου 2004 Βασικά δεν πρέπει να δηλώσεις την Loop "χύμα", αλλά σαν μέρος ενός object. Πιο απλά μπορείς να κάνεις: * Κλικ πάνω στον timer στην φόρμα σου, * στον object inspector, διαλέγεις [Events] * διπλό κλικ στο OnTimer για να σου δημιουργήσει μόνο του την αντίστοιχη συνάρτηση. Για θεωρητικό background ψάξε στο index του help για "method pointers".
capthookb Δημοσ. 5 Οκτωβρίου 2004 Μέλος Δημοσ. 5 Οκτωβρίου 2004 Nai san meros tis formas douleuei, apla thelo na dimiourgo to object otan trexei i efarmogi kai osi tin ora tou design. Telospanton, euxaristo
alkisg Δημοσ. 6 Οκτωβρίου 2004 Δημοσ. 6 Οκτωβρίου 2004 Τότε απλά πρέπει να δηλώσεις μια άλλη κλάση που να κληρονομεί από τον TTimer και να περιέχει ΜΕΣΑ ΣΤΗΝ ΚΛΑΣΗ την συνάρτηση Loop. Τα άλλα ισχύουν όπως τα έχεις στον κώδικα, εκτός από το var tmr: MyTimer.
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.