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

Delphi και WaveOut


GCMH

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

Δημοσ.

Το πρόβλημα είναι το εξής. Έχω ένα αριθμό από buffer έτοιμα... Ανοίγω χωρίς προβλήματα ένα waveout, ετοιμάζω χωρίς πρόβλημα τα WaveOutPrepareHeader και ορίζω με επιτυχία και μια callback function ώστε μόλις τελειώσει το παίξιμο ενός buffer να περνάω στο επόμενο.

 

1. Όμως το πέρασμα δεν γίνεται ομαλά... μεταξύ των buffer ακούγεται και ένα κενό. Τί μου διαφεύγει; :confused:

 

2. Κατά το τερματισμό της εφαρμογής, το παράθυρο κλείνει μεν, στον task manager δε η εφαρμογή εξακολουθεί να τρέχει... από την στιγμή που κλείνω κανονικά το waveout και ελευθερώνω κάθε κατειλημμένη μνήμη μήπως δεν κάνω κάτι σωστά με την callback function; :confused: (το πρόβλημα αυτό εμφανίστηκε με την εφαρμογή της callback function).

 

Έχει κανείς καμιά ιδέα;:-D

Δημοσ.

2. Κατά το τερματισμό της εφαρμογής' date=' το παράθυρο κλείνει μεν, στον task manager δε η εφαρμογή εξακολουθεί να τρέχει... από την στιγμή που κλείνω κανονικά το waveout και ελευθερώνω κάθε κατειλημμένη μνήμη μήπως δεν κάνω κάτι σωστά με την callback function; :confused: (το πρόβλημα αυτό εμφανίστηκε με την εφαρμογή της callback function).

 

Έχει κανείς καμιά ιδέα;:-D[/quote']

 

2) Μηπως εχεις θεσει ως mainform καποια αλλη φορμα (πχ για splash screen) ? αν ναι , θα πρεπει να προσθεσεις στο onclose query της φορμας

κατι σαν κι αυτο:

 

 

splashscreen.close;

 

form1.close;

canclose :=true;

ktl...

Application.terminate;

Δημοσ.

Ευχαριστώ για την απάντηση. Όχι δεν είναι αυτό. Δεν έχω άλλη φόρμα. Μόνο μία είναι.

Δημοσ.
Ευχαριστώ για την απάντηση. Όχι δεν είναι αυτό. Δεν έχω άλλη φόρμα. Μόνο μία είναι.

 

Μηπως διαθετει καποιου ειδους συναρτηση "απελευθερωσης" .free; ?

Δημοσ.
Μηπως διαθετει καποιου ειδους συναρτηση "απελευθερωσης" .free; ?

Τί εννοείς; Αν έχει .free η κυρίως φόρμα; και να έχει δεν χρειάζεται.

Αν εννοείς το waveout όχι δεν έχει... απλά καλείς ένα waveoutclose με το σωστό handle και ελευθερώνεται... Πρόβλημα κατά την γνώμη μου είναι η callback function αλλά ΠΟΥ;

Δημοσ.

Οκ , μπορεις να κανεις και αυτο:

 

(θα χρειαστεις ενα 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;

Δημοσ.

Ευχαριστώ για το ενδιαφέρον σου...:-D

 

Τελικά φταίει η callback function διότι από λάθος :oops: μου δημιουργείται ατέρμων βρόγχος...

 

Θα το κοιτάξω το πρόβλημα πιο προσεκτικά και αν δεν τα καταφέρω θα επανέλθω. :mrgreen:

 

Αυτά προς το παρόν.

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

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

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