Results 1 to 4 of 4

Thread: Array van procedures

  1. #1
    Registered User
    Join Date
    Jan 2003
    Location
    Limburg, Belgi?½
    Posts
    20

    Array van procedures

    Hallo,

    Ik ben een programmaatje aan het maken dat tekst omzet in morse code (geluid). Ik heb 2 mediaplayers, 1 met de lange en 1 met de korte toon. Deze worden aangeroepen door de procedures lang en kort.

    Nu is mijn vraag, ik zou door mijn tekst ( string) willen stappen met een loopje en een Case ... Of. Nu is mijn vraag, is het mogelijk om daar realtime een array van procedures aan te maken zodat ik na elke letter bijvoorbeeld lang, kort, lang, lang ... kan zeggen en dat deze procedures dan uitgevoerd worden. Ik raak hier niet wijs uit.

    Ik had zoiets in gedachten
    Code:
     While i < length(s) 
     begin
           Case s[i] of 
              'a' : [kort, lang]; ==> kan ik hier een array van maken? 
              'b' : [lang, kort, kort, kort]
              ......
           end;
           i = i + 1;
     end;
    Alvast bedankt voor jullie hulp !

    MetalHeart
    Last edited by Dees; 01-Jul-04 at 08:53.
    Hehe, zou'k ni meer kans hebben met de lotto

  2. #2
    mov rax,marcov; push rax marcov's Avatar
    Join Date
    Apr 2004
    Location
    Ehv, Nl
    Posts
    10,357
    Heb je niet ook nog tenminste een pauze eenheid nodig?

    Arrays maken kan altijd. Ik zou het proberen met een enumeratie, maar weet niet of dat met digitale arrays samengaat.

    Code:
    type    morsetoon = (lang,kort,pauze);
               morsearray = array of morsetoon;
    Krijg je iets als:
    Code:
    case marray[i] of 
          lang : beep(lang);
          kort  : beep(kort);
         pauze: sleep(50);
    end;
    oid

  3. #3
    Code:
    //Zet een TEdit en een TButton op je form
    
    type
      TMorseCode = (mcShort, mcLong);
      TMorseCodeArray = array of TMorseCode;
    
    private
      function CharToMorseCode(c:char):TMorseCodeArray;
      procedure PlayMorse(ar:TMorseCodeArray);
    
    const
      DefFreq = 500;
      DefLong = 600;
      DefShort = 250;
      DefTussentijd = 80;
    
    //implementatie
    
    function TForm1.CharToMorseCode(c:char):TMorseCodeArray;
    
      function IsAlphaChar:boolean;
      begin
        result:=c in ['a'..'z','A'..'Z'];
      end;
    
    begin
      result:=nil;
      if not IsAlphaChar then
        exit;
      case C of
        'a':
        begin
          setlength(result,2);
          result[0]:=mcShort;
          result[1]:=mcLong;
        end;//a
        'b':
        begin
          setlength(result,4);
          result[0]:=mcLong;
          result[1]:=mcShort;
          result[2]:=mcShort;
          result[3]:=mcShort;
        end;//b
      end;//case
    end;
    
    procedure TForm1.PlayMorse(ar:TMorseCodeArray);
    var
     x:integer;
    begin
      for x:= low(ar) to high(ar) do
      begin
        case ar[x]
          mcShort:Windows.beep(DefFreq,DefShort);
          mcLong:Windows.Beep(DefFreq,DefLong);
        end;/case
        sleep(DefTussentijd);
      end;
    end;
    
    //de code onder Button1
    procedure TForm1.Button1Click(Sender:TObject);
    var
      a:TMorseCodeArray;
    begin
      a:=CharToMorseCode(edit1.text[1]);
      playMorse(a);
    end;
    DeX 3 Delphi := The ease of VB with the power of C; Zoekt en gij zult vinden

  4. #4

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •