Anforderungen  |   Konzepte  |   Entwurf  |   Entwicklung  |   Qualitätssicherung  |   Lebenszyklus  |   Steuerung
 
 
 
 


Quellcode-Bibliothek

© Kompilation durch diese Firma

[Weder Korrektheit noch Funktionsfähigkeit der Software werden zugesichert.]

Datei: reThreads2.obj   Sprache: Unknown

Untersuchungsergebnis.~pas Download desAda {Ada[98] Abap[667] [0]}zum Wurzelverzeichnis wechseln

unit Utilities;

interface

uses
  SysUtils, Windows, Messages, Classes, Graphics, Controls,
  Forms, Dialogs, StdCtrls, Buttons, ExtCtrls, Menus, ComCtrls, ClipBrd,
  ToolWin, ActnList, ImgList, MMSystem, OleServer, ShellApi,
  SpeechLib_TLB;

type
   TSound    = (HappyBirthDay, SongofJoy, Ding, DingDong,
                Kennenlerntag, MartinasGeburtstag, Hochzeitstag,
                BeethovensGeburtstag, BachsGeburtstag, Internationale,
                Bourree, RadioHamburg, Alarm, Sailing, DieGedankensindfrei);

var
    SpVoice: TspVoice;
    Speaker:integer;
    SOTokens: ISpeechObjectTokens;

  procedure EnumVoices(VoiceNo:integer;Leise:String;Combo:TComboBox);
  procedure Speak(Rate:integer;T:String);
  function  SoundCheck: boolean;
  Procedure PCSounder(i : TSound);


implementation

//----------------------------------------------------------------
//
//     produce speech from clipboard
//
//----------------------------------------------------------------
procedure Speak(rate:integer;T:String);
begin
  if Speaker > 0 then begin
    SpVoice.Voice := SOTokens.Item(Speaker-1);
    SpVoice.Rate:=rate;
    SpVoice.Speak(T, SVSFDefault)
  end
end;

//----------------------------------------------------------------
//
//     test for sound card
//
//----------------------------------------------------------------
function SoundCheck: boolean;
begin
   if WaveOutGetNumDevs > 0 then
     SoundCheck := true
   else
     SoundCheck := false
end;

//----------------------------------------------------------------
//
//     get voices from machine
//
//----------------------------------------------------------------
procedure EnumVoices(VoiceNo:integer;Leise:String;Combo:TComboBox);
var
  i, NoVoices: Integer;
  SOToken: ISpeechObjectToken;
  dwVersion : double;
begin
  if not SoundCheck then begin
    Speaker := 0;
    Combo.Items.AddObject(Leise, nil);
    Combo.ItemIndex:=0;
    exit;
  end;
  dwVersion := GetVersion();
  if (dwVersion >= $80000000) then  // no Windows XP
  begin
    Speaker := 0;
    Combo.Items.AddObject(Leise, nil);
    Combo.ItemIndex:=0;
    exit;
  end;
  SpVoice := TSpVoice.Create(nil);
  //enter silent mode
  Combo.Items.Clear;
  Combo.Items.AddObject(Leise, nil);
  Combo.ItemIndex:=0;
  //Ensure all events fire
  SpVoice.EventInterests := SVEAllEvents;
  SOTokens := SpVoice.GetVoices('''');
  NoVoices := SOTokens.Count - 1;
  for I := 0 to NoVoices do
  begin
    //For each voice, store the descriptor in the TStrings list
    SOToken := SOTokens.Item(I);
    Combo.Items.AddObject(SOToken.GetDescription(0), TObject(SOToken));
    //Increment the descriptor reference count to ensure it doesn't get destroyed
    SOToken._AddRef;
  end;
  if NoVoices >= 0 then
    Combo.ItemIndex := 0; //Select 1st voice
  // set options
  if (NoVoices >=1) and
  (VoiceNo <= Combo.Items.Count) then begin
      Speaker := VoiceNo;
      Combo.ItemIndex := Speaker;
  end;
end;


//----------------------------------------------------------------
//
//     produce pc speaker beeps
//     with predefined songs
//
//----------------------------------------------------------------
procedure PCSpeakerBeep(Frequency, Duration: Integer);
  begin
  if Win32Platform = VER_PLATFORM_WIN32_NT then
     Windows.Beep(Frequency, Duration)
  else
   asm
   MOV ECX, Frequency
   JCXZ @@2
   MOV EAX, 1193181
   CDQ
   IDIV ECX
   MOV ECX, EAX
   IN AL, ($61)
   TEST AL, $03
   JNZ @@1
   OR AL, $03
   OUT ($61), AL
   MOV AL, $B6
   OUT ($43), AL
   @@1: MOV AL, CL
   OUT ($42), AL
   MOV AL, CH
   OUT ($42), AL
   PUSH Duration
   CALL Windows.Sleep
   @@2: IN AL, ($61)
   AND AL, $FC
   OUT ($61), AL
end;
end;

//------------------------------------------------------------------
//
//              Procedure PCSounder
//           for to sound from PC beeper loauspeaker
//
//------------------------------------------------------------------
Procedure PCSounder(i : TSound);
const
   c000  = 32.70;
   c00   = 65.41;
   c0    = 130.81;
   g0    = 196.0;
   a0    = 220.0;
   h0    = 246.94;
   c     = 261.63;
   cis   = 277.18;
   d     = 293.67;
   es    = 311.13;
   e     = 329.63;
   f     = 349.23;
   fis   = 369.99;
   g     = 392.0;
   ass   = 415.31;
   gis   = ass;
   a     = 440.0;
   b     = 466.16;
   h     = 493.88;
   c1    = 261.63;
   c2    = 523.25;
   c3    = 1046.51;
   c4    = 2093.02;
   c5    = 4186.03;

   full  = 512;
   half  = 256;
   Quart = 128;
   eigth = 64;
var
   Hz       : real;
   j        : integer;
   BaseTone : integer;
   Offset   : integer;
   Tempo    : real;
procedure Tone(f : real;d : integer);
var
 frequency : longint;
 dure:variant;
begin
 frequency := trunc(f);
 dure :=  d * Tempo;
 PCSpeakerBeep(frequency,dure);
 sleep(dure);
 //SetVoiceSound(1,frequency,trunc(d*Tempo))
end; {Tone}
procedure Pause(d : integer;Tempo : real);
begin
  Sleep(d);
  // SetVoiceSound(1,frequency,trunc(d*Tempo))
end; {Pause}

begin
  case i of
    HappyBirthDay :
        begin
           Tempo := 1;
           Tone(g,quart+eigth);
           Tone(g,eigth);
           Tone(a,half);
           Tone(g,half);
           Tone(c2,half);
           Tone(h,full);
           Tone(g,quart+eigth);
           Tone(g,eigth);
           Tone(a,half);
           Tone(g,half);
           Tone(2*d,half);
           Tone(c2,full);
           Tone(g,quart+eigth);
           Tone(g,eigth);
           Tone(g*2,half);
           Tone(e*2,half);
           Tone(c2,quart);
           Tone(c2,quart);
           Tone(c2,half);
           Tone(a,half);
           Tone(f*2,quart+eigth);
           Tone(f*2,eigth);
           Tone(e*2,half);
           Tone(c2,half);
           Tone(d*2,half);
           Tone(c2,full);
        end;
    SongofJoy :
        begin
           Tempo := 4.0 / 3.0;
           Tone(e,quart);
           Tone(e,quart);
           Tone(f,quart);
           Tone(g,quart);
           Tone(g,quart);
           Tone(f,quart);
           Tone(e,quart);
           Tone(d,quart);
           Tone(c,quart);
           Tone(c,quart);
           Tone(d,quart);
           Tone(e,quart);
           Tone(e,quart+eigth);
           Tone(d,eigth);
           Tone(d,half+quart);

           Tone(e,quart);
           Tone(e,quart);
           Tone(f,quart);
           Tone(g,quart);
           Tone(g,quart);
           Tone(f,quart);
           Tone(e,quart);
           Tone(d,quart);
           Tone(c,quart);
           Tone(c,quart);
           Tone(d,quart);
           Tone(e,quart);
           Tone(d,quart+eigth);
           Tone(c,eigth);
           Tone(c,half+quart);

           Tone(d,quart);
           Tone(d,quart);
           Tone(e,quart);
           Tone(c,quart);
           Tone(d,quart);
           Tone(e,eigth);
           Tone(f,eigth);
           Tone(e,quart);
           Tone(c,quart);
           Tone(d,quart);
           Tone(e,eigth);
           Tone(f,eigth);
           Tone(e,quart);
           Tone(d,quart);
           Tone(c,quart);
           Tone(d,quart);
           Tone(g/2,half);

           Tone(e,half);
           Tone(f,quart);
           Tone(g,quart);
           Tone(g,quart);
           Tone(f,quart);
           Tone(e,quart);
           Tone(d,quart);
           Tone(c,quart);
           Tone(c,quart);
           Tone(d,quart);
           Tone(e,quart);
           Tone(d,quart+eigth);
           Tone(c,eigth);
           Tone(c,half+quart);
        end;
    Bourree :
        begin
           Tempo := 1.0;
           Tone(a,quart);
           Tone(h,quart);
           Tone(2*c,quart+eigth);
           Tone(h,eigth);
           Tone(a,quart+eigth);
           Tone(gis,quart+eigth);
           Tone(a,eigth);
           Tone(h,quart+eigth);
           Tone(e,quart+eigth);
           Tone(fis,eigth);
           Tone(gis,quart+eigth);
           Tone(a,quart+eigth);
           Pause(quart,Tempo);

           Tone(g,quart);
           Tone(f,quart);
           Tone(e,quart+eigth);
           Tone(d,eigth);
           Tone(c,quart+eigth);
           Tone(h/2,quart+eigth);
           Tone(c,eigth);
           Tone(d,quart+eigth);
           Tone(e,quart+eigth);
           Tone(d,quart);
           Tone(c,quart);
           Tone(h/2,quart);
           Tone(a/2,half);
           Pause(quart,Tempo)
        end;
   RadioHamburg :
       begin
          Tempo := 1.0;
          Tone(f,quart);
          Tone(d,quart);
          Tone(g,quart);
          Tone(e,half);
          Tone(c,quart);
          Pause(half,Tempo);
       end;
   Internationale :
       begin
          Tempo := 1.0;
          // Völker höret die Signale
          Tone(e,quart+eigth);
          Tone(d,eigth);
          Tone(c,half);
          Tone(g0,half);
          Tone(g0,half);
          Tone(g0,half);
          Tone(a0,half);
          Tone(a0,half);
          Pause(quart,Tempo);
          //  auf zum letzten gefecht
          Tone(d,quart+eigth);
          Tone(c,eigth);
          Tone(h0,full);
          Tone(a0,half);
          Tone(g0,half);
          Tone(e,full);
          Pause(half,Tempo);
          // die Internationale
          Tone(e,quart);
          Tone(g,half+quart);
          Tone(g,quart);
          Tone(f,half);
          Tone(e,half);
          Tone(d,half);
          Tone(e,half);
          Tone(f,half);
          Pause(half,Tempo);
          // erkämpft das Menschenrecht
          Tone(f,quart);
          Tone(e,half+quart);
          Tone(c,quart);
          Tone(d,half+quart);
          Tone(h0,quart);
          Tone(c,full);
          Pause(half,Tempo);
       end;
   Sailing :
       begin
          Tempo := 4.0 / 3.0;
          Tone(e,quart);
          Tone(g,quart);
          Tone(a,half);
          Tone(a,quart);
          Pause(quart,Tempo);

          Tone(h,quart);
          Tone(d*2,quart);
          Tone(e*2,half);
          Tone(e*2,quart);
          Pause(quart,Tempo);

          Tone(e*2,quart+eigth);
          Tone(d*2,eigth);
          Tone(d*2,half);
          Tone(c*2,quart+eigth);
          Pause(eigth,Tempo);

          Tone(c*2,quart+eigth);
          Tone(h,eigth);
          Tone(h,half);
          Pause(eigth,Tempo);

          Tone(c*2,quart);
          Tone(h,quart);
          Tone(a,half);
          Tone(a,quart+eigth);
          Pause(eigth,Tempo);

          Tone(h,quart);
          Tone(a,quart);
          Tone(g,half);
          Tone(g,quart+eigth);
          Pause(eigth,Tempo);

          Tone(e,quart);
          Tone(e,quart);
          Tone(h,half);
          Tone(a,quart+eigth);
          Pause(eigth,Tempo);

          Tone(a,quart);
          Tone(g,quart);
          Tone(g,half);
          Pause(quart,Tempo)
        end;
   Ding :
        begin
          Tempo := 1.5;
          Tone(e,eigth);
          Tone(e,eigth)
        end;
   DingDong :
        begin
          Tempo := 1.5;
          Tone(e,eigth);
          Tone(e,eigth);
          Tone(c,eigth);
          Tone(c,eigth)
        end;
   DieGedankensindfrei :
        begin
          tempo := 1.5;
          Tone(e,eigth);
          Tone(e,eigth);
          Tone(a,quart);
          Tone(a,quart);
          Tone(cis,eigth);
          Tone(a,eigth);
          Tone(e,half);
          Tone(e,quart);
          Tone(d,Quart);
          Tone(h,Quart);
          Tone(e,Quart);
          Tone(c,Quart);
          Tone(a/2,Quart);
          Pause(half,Tempo);
          Tone(a,Quart);
          Tone(gis,Quart);
          Tone(h,Quart+eigth);
          Tone(gis,eigth);
          Tone(a,Quart);
          Tone(cis,Quart);
          Tone(a,Quart);
          Tone(gis,Quart);
          Tone(h,Quart+eigth);
          Tone(gis,eigth);
          Tone(a,Quart);
          Tone(cis,Quart);
          Tone(a,Quart);
          Tone(fis,Quart);
          Tone(fis,Quart);
          Tone(a,eigth);
          Tone(fis,eigth);
          Tone(e,half);
          Tone(e,eigth);
          Tone(cis,eigth);
          Tone(cis,eigth);
          Tone(h,eigth);
          Tone(a,Quart);
          Tone(gis,Quart);
          Tone(a,half);
      end;
   Alarm :
        begin
          BaseTone := 880;
          Offset   := 440;
          for j := 1 to 200 do
          begin
             Hz := BaseTone + sin(j*2*3.1415/300)*Offset;
             PCSpeakerBeep(Trunc(Hz),10+j div 4);
             //SetVoiceSound(1,trunc(Hz),10+j div 4)
          end;
        end;
   end;
end; {Sounder}

end.



[ Seitenstruktur0.165Drucken  ]

                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Software

     Produkte
     Quellcodebibliothek

Aktivitäten

     Artikel über Sicherheit
     Anleitung zur Aktivierung von SSL

Muße

     Gedichte
     Musik
     Bilder

Jenseits des Üblichen ....
    

Besucherstatistik

Besucherstatistik