Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2003.12.12;
Скачать: [xml.tar.bz2];

Вниз

mciSendCommand что неправильно?   Найти похожие ветки 

 
Max_one   (2003-10-13 17:27) [0]

Имеется вот такой участок кода
var
Form1: TForm1;
lpOpen:MCI_WAVE_OPEN_PARMS;
dwFlags:Dword;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
AllocMem(SizeOf(lpOpen));
lpOpen.dwCallback := 0;
lpOpen.wDeviceID := 0;
lpOpen.lpstrDeviceType := "waveaudio" ;
lpOpen.lpstrElementName := "C:\1.wav";
lpOpen.lpstrAlias :=nil;
lpOpen.dwBufferSeconds:=256;

dwFlags:= MCI_OPEN_TYPE or MCI_OPEN_ELEMENT or MCI_WAIT or MCI_WAVE_OPEN_BUFFER ;
mciSendCommand(0,MCI_OPEN, dwFlags ,@@lpOpen);

end;
всё это удовольствие выдаёт ошибку :"Variable required"
Может я структуру параметров неправильно задаю?
Тогда как в delphi определять эту структуру?
У меня примеры использования этой функции только на Visual C, там всё работает а тут нет...


 
clickmaker   (2003-10-13 18:08) [1]

а зачем 2 собаки @@lpOpen? Одной бы хватило


 
Max_one   (2003-10-13 18:19) [2]

тогда он выдаёт ошибку
[Error] Unit13.pas(42): Incompatible types: "Cardinal" and "Pointer"
Понятно почему Cardinal она указана в описании функции, а причём тут Pointer?


 
Е-Моё имя   (2003-10-13 18:22) [3]


> а зачем 2 собаки @@lpOpen? Одной бы хватило

евреи, не жалейте заварки! =)


 
Е-Моё имя   (2003-10-13 18:22) [4]


> [2] Max_one © (13.10.03 18:19)

a:cardinal
b:pointer

b:=pointer(a);


 
Max_one   (2003-10-13 18:40) [5]

Thanks зделал cardinal(@plOpen) зарабо


 
Е-Моё имя   (2003-10-13 18:48) [6]


> [5] Max_one © (13.10.03 18:40)
> Thanks зделал cardinal(@plOpen) зарабо

видать все взорвалось =)))))))))


 
Max_one   (2003-10-14 13:27) [7]

Рано радовался, ошибку-то перестало выдавать, а играть не играет...
теперь это выглядит вот так:var
Form1: TForm1;
lpOpen:MCI_WAVE_OPEN_PARMS;
lpPlay:MCI_PLAY_PARMS;
lpSet:MCI_SET_PARMS;
dwFlags:Dword;
implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin

lpOpen.wDeviceID := 0;
lpOpen.lpstrDeviceType := "waveaudio" ;
lpOpen.lpstrElementName := "C:\1.wav";
lpOpen.lpstrAlias :=nil;
lpOpen.dwBufferSeconds:=256;

lpPlay.dwFrom:=0;
lpPlay.dwTo:=300;

lpSet.dwTimeFormat:=MCI_FORMAT_MILLISECONDS;
lpSet.dwAudio:=2;

dwFlags:= MCI_OPEN_TYPE or MCI_OPEN_ELEMENT or MCI_WAVE_OPEN_BUFFER ;
mciSendCommand(0,MCI_OPEN, dwFlags ,cardinal(@lpOpen));
mciSendCommand(lpOpen.wDeviceID,MCI_SET,MCI_SET_TIME_FORMAT,cardinal(@lpSet));
mciSendCommand(lpOpen.wDeviceID,MCI_PLAY, MCI_WAIT ,cardinal(@lpPlay));

end;

помоему dwFrom и dwTo в данномслучае нет необходимости...
но всё равно не играет...

> видать все взорвалось =)))))))))

Потушить успели...


 
clickmaker   (2003-10-14 13:32) [8]

Спроси mciGetErrorString(mciSendCommand


 
Max_one   (2003-10-14 14:44) [9]

Спрашиваю таким образом

dwError:Dword;
………...
dwError:=mciSendCommand(lpOpen.wDeviceID,MCI_PLAY, MCI_WAIT ,cardinal(@lpPlay));
if mciGetErrorString(dwError,Buff_1,128)=True
then Edit1.Text:=string(Buff_1)
else Edit1.Text:="oblom";
и получаю постоянно облом... код ошибки не распознаётся?


 
Max_one   (2003-10-16 21:51) [10]

Ладно разобрался сам, так что если у кто столкнулся с такоё же проблемой, ошибка была в размере буффера, почему-то нельзя задавать его более 10 секунд. А mciGetErrorString()так и не возвратила текстовое описание ошибки, поэтому пришлось открыть модуль и просто смотреть по коду возвращаемого значения от SendCommand.



Страницы: 1 вся ветка

Форум: "WinAPI";
Текущий архив: 2003.12.12;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.008 c
3-36548
Stepa
2003-11-19 20:21
2003.12.12
проблемы с ADOQuery+SQL


1-36594
GreySerg
2003-12-01 17:21
2003.12.12
Как узнать имя класса окна по его Handle ?


1-36762
uu
2003-12-01 19:32
2003.12.12
InputQuery


1-36737
Dracula2000
2003-12-02 10:30
2003.12.12
Grid or DBGrid


1-36759
Labert
2003-12-01 20:06
2003.12.12
Как сделать подключение форм в run time





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский