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

Вниз

Подскажите как правильно задекларировать процедуру.   Найти похожие ветки 

 
vegarulez ©   (2007-04-10 14:53) [0]

Есть вот такой код чтобы спекармауса заставить пикнуть.

Не знаю как процедуру задекларировать в декларации процедур - подскажите плиз.


Procedure  BeepEx(Freq:  Word;  Duration:  Integer);
var  
    Ver:  TOsVersionInfo;
begin
    Ver.dwOSVersionInfoSize  :=  SizeOf(Ver);
    GetVersionEx(Ver);
    if  Ver.dwPlatformId  =  VER_PLATFORM_WIN32_NT  then  
        Windows.Beep(Freq,  Duration)  
    else  begin
        asm
            movzx  ecx,  Freq
            mov  eax,  1193180            //  тактовая  частота
            sub  edx,  edx
            div  ecx                              //  преобразование  частоты  в  делитель
            mov  ecx,  eax
            mov  al,0b6H
            out  43H,al                        //  управляющие  слово
            mov  al,cl
            out  42h,al                        //  младший  байт  делителя
            mov  al,ch
            out  42h,al                        //  старший  байт  делителя
            in    al,61H
            or    al,03H
            out  61H,al                        //  включить  звук
        end;
        sleep(Duration);                //  пауза  на  время  звучани
        asm
            in    al,61H
            and  al,0fcH
            out  61H,al                        //  выключить  звук  по  окончанию  Duration
        end;
    end;
end;



 
Сергей М. ©   (2007-04-10 14:57) [1]

Вот прямо так и "задекларировать" - см. первая строчка в твоем коде


 
Сергей М. ©   (2007-04-10 14:58) [2]


> спекармаус


А эт что за зверь ?)


 
vegarulez ©   (2007-04-10 14:58) [3]

так я её и прописываю - ругается....
Подскажите что не так...

unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, StdCtrls;

type
 TForm1 = class(TForm)
   Button1: TButton;
   procedure Button1Click(Sender: TObject);
   Procedure  BeepEx(Freq:  Word;  Duration:  Integer);
 private
   { Private declarations }
 public
   { Public declarations }
 end;

var
 Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
BeepEx(50,50);
end;

Procedure  BeepEx(Freq:  Word;  Duration:  Integer);
var  
    Ver:  TOsVersionInfo;
begin
    Ver.dwOSVersionInfoSize  :=  SizeOf(Ver);
    GetVersionEx(Ver);
    if  Ver.dwPlatformId  =  VER_PLATFORM_WIN32_NT  then
        Windows.Beep(Freq,  Duration)
    else  begin
        asm
            movzx  ecx,  Freq
            mov  eax,  1193180            //  тактовая  частота
            sub  edx,  edx
            div  ecx                              //  преобразование  частоты  в  делитель
            mov  ecx,  eax
            mov  al,0b6H
            out  43H,al                        //  управляющие  слово
            mov  al,cl
            out  42h,al                        //  младший  байт  делителя
            mov  al,ch
            out  42h,al                        //  старший  байт  делителя
            in    al,61H
            or    al,03H
            out  61H,al                        //  включить  звук
        end;
        sleep(Duration);                //  пауза  на  время  звучани
        asm
            in    al,61H
            and  al,0fcH
            out  61H,al                        //  выключить  звук  по  окончанию  Duration
        end;
    end;
end;

end.


 
vegarulez ©   (2007-04-10 15:00) [4]

Сергей М. ©   (10.04.07 14:58) [2]

Это Очепятка или Описка...  )


 
Сергей М. ©   (2007-04-10 15:01) [5]

Паскаль-то знаешь ?

Нет, не знаешь.
И "спекармаус" здесь совершенно ни причем.

Декларация идентификатора должна предшествовать его использованию !


 
Сергей М. ©   (2007-04-10 15:02) [6]

Procedure  TForm1.BeepEx(Freq:  Word;  Duration:  Integer);

!!!!!


 
vegarulez ©   (2007-04-10 15:02) [7]

Понил... попробую счаз...


 
Сергей М. ©   (2007-04-10 15:03) [8]


> Понил... попробую счаз...
>


У "реальных пацанов" сейчас не в моде идиотское коверканье языка)


 
vegarulez ©   (2007-04-10 15:05) [9]

Вроде скомпилился... но чото звука не слышно... дома ещё попробую :)


 
vegarulez ©   (2007-04-10 15:06) [10]

Сергей М. ©   (10.04.07 15:03) [8]  

Тороплюсь домой не до лексеики


 
Сергей М. ©   (2007-04-10 15:09) [11]


> чото звука не слышно


Домой он торопится)... Не до звука ему, "спекармаусу" этому)


 
icWasya ©   (2007-04-10 18:52) [12]

по умолчанию несколько первых параметров передаются через регистры,
поэтому форвард процедуры  лучше записать так
Tform1 = ...
...
  Procedure  BeepEx(Freq:  Word;  Duration:  Integer);stdcall;
...
end;

чтобы правильно сработало
 movzx  ecx,  Freq



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

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

Наверх




Память: 0.48 MB
Время: 0.062 c
15-1175795915
vasIZmax
2007-04-05 21:58
2007.04.29
Диспечер устройств


2-1175845690
=Teddy=
2007-04-06 11:48
2007.04.29
Как определить возраст папки?


2-1176390478
Juice
2007-04-12 19:07
2007.04.29
Format и символ %


3-1170937364
r2d2
2007-02-08 15:22
2007.04.29
mySQL не отображается кодировка


2-1175955394
=Guest=
2007-04-07 18:16
2007.04.29
Количество файлов в папке





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский