GCMH Δημοσ. 31 Μαΐου 2006 Δημοσ. 31 Μαΐου 2006 Το πρόβλημα είναι το εξής. Έχω ένα αριθμό από buffer έτοιμα... Ανοίγω χωρίς προβλήματα ένα waveout, ετοιμάζω χωρίς πρόβλημα τα WaveOutPrepareHeader και ορίζω με επιτυχία και μια callback function ώστε μόλις τελειώσει το παίξιμο ενός buffer να περνάω στο επόμενο. 1. Όμως το πέρασμα δεν γίνεται ομαλά... μεταξύ των buffer ακούγεται και ένα κενό. Τί μου διαφεύγει; 2. Κατά το τερματισμό της εφαρμογής, το παράθυρο κλείνει μεν, στον task manager δε η εφαρμογή εξακολουθεί να τρέχει... από την στιγμή που κλείνω κανονικά το waveout και ελευθερώνω κάθε κατειλημμένη μνήμη μήπως δεν κάνω κάτι σωστά με την callback function; (το πρόβλημα αυτό εμφανίστηκε με την εφαρμογή της callback function). Έχει κανείς καμιά ιδέα;
kath Δημοσ. 31 Μαΐου 2006 Δημοσ. 31 Μαΐου 2006 2. Κατά το τερματισμό της εφαρμογής' date=' το παράθυρο κλείνει μεν, στον task manager δε η εφαρμογή εξακολουθεί να τρέχει... από την στιγμή που κλείνω κανονικά το waveout και ελευθερώνω κάθε κατειλημμένη μνήμη μήπως δεν κάνω κάτι σωστά με την callback function; (το πρόβλημα αυτό εμφανίστηκε με την εφαρμογή της callback function). Έχει κανείς καμιά ιδέα;[/quote'] 2) Μηπως εχεις θεσει ως mainform καποια αλλη φορμα (πχ για splash screen) ? αν ναι , θα πρεπει να προσθεσεις στο onclose query της φορμας κατι σαν κι αυτο: splashscreen.close; form1.close; canclose :=true; ktl... Application.terminate;
GCMH Δημοσ. 31 Μαΐου 2006 Μέλος Δημοσ. 31 Μαΐου 2006 Ευχαριστώ για την απάντηση. Όχι δεν είναι αυτό. Δεν έχω άλλη φόρμα. Μόνο μία είναι.
kath Δημοσ. 31 Μαΐου 2006 Δημοσ. 31 Μαΐου 2006 Ευχαριστώ για την απάντηση. Όχι δεν είναι αυτό. Δεν έχω άλλη φόρμα. Μόνο μία είναι. Μηπως διαθετει καποιου ειδους συναρτηση "απελευθερωσης" .free; ?
GCMH Δημοσ. 31 Μαΐου 2006 Μέλος Δημοσ. 31 Μαΐου 2006 Μηπως διαθετει καποιου ειδους συναρτηση "απελευθερωσης" .free; ? Τί εννοείς; Αν έχει .free η κυρίως φόρμα; και να έχει δεν χρειάζεται. Αν εννοείς το waveout όχι δεν έχει... απλά καλείς ένα waveoutclose με το σωστό handle και ελευθερώνεται... Πρόβλημα κατά την γνώμη μου είναι η callback function αλλά ΠΟΥ;
kath Δημοσ. 1 Ιουνίου 2006 Δημοσ. 1 Ιουνίου 2006 Οκ , μπορεις να κανεις και αυτο: (θα χρειαστεις ενα timer1) στο public : Global_GETtitle:string; { Public declarations } στον oncreate event της φορμας Global_gettitle := form1.Caption; if (timer1.Enabled) then timer1.Enabled:=false; if not (timer1.Interval = 200) then timer1.Interval:=200; στο onClose query της φορμας: timer1.Enabled:=true; canclose:=true; και τελος , στο timer1: var Window: HWND; if not (global_getTitle = form1.Caption) then global_getTitle:=form1.Caption; Window := findWindow(nil , PansiChar(global_gettitle)); if (window <> 0) then begin SendMessage(Window, WM_SYSCOMMAND, SC_CLOSE, 0); end;
GCMH Δημοσ. 1 Ιουνίου 2006 Μέλος Δημοσ. 1 Ιουνίου 2006 Ευχαριστώ για το ενδιαφέρον σου... Τελικά φταίει η callback function διότι από λάθος :oops: μου δημιουργείται ατέρμων βρόγχος... Θα το κοιτάξω το πρόβλημα πιο προσεκτικά και αν δεν τα καταφέρω θα επανέλθω. Αυτά προς το παρόν.
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.