Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Windows.Beep Variabel (https://www.delphipraxis.net/156586-windows-beep-variabel.html)

Magic94 7. Dez 2010 23:00


Windows.Beep Variabel
 
Hallo,

ich habe vor einen Beep Editor zu programmieren. (Bin noch neu in Delphi). Habe alles schon erstellt und zugewiesen. Es gibt zwei Variablen: freq und lengh. Zwei Textfelder: edfreq und edlengh. Und halt den Button wo alles drauf liegt.

Delphi-Quellcode:
procedure TForm1.bthearClick(Sender: TObject);
begin
  freq := edFreq.Text;
  lengh := edLengh.Text;
  windows.Beep('freq','lengh');
end;
-> [Fehler] Unit1.pas(88): Inkompatible Typen: 'Cardinal' und 'String'


zweite möglichkeit:
Delphi-Quellcode:
procedure TForm1.bthearClick(Sender: TObject);
begin
  freq := edFreq.Text;
  lengh := edLengh.Text;
  windows.Beep((freq),(lengh));
end;
-> [Fehler] Unit1.pas(88): Inkompatible Typen: 'Cardinal' und 'String'

weiss nicht was ich machen soll.

himitsu 7. Dez 2010 23:04

AW: Windows.Beep Variabel
 
Es werden als Parameter vorzeichenlose Integer (auch Cardinal genannt) verlangt und keine Strings.

PS: Ich denke du solltest dir erstmal zu Gemüte führen, was Integer-Typen, String-Typen und String-Konstanten sind, da du hier diese total vermischts.
Und warum sind deine Variablen "freq" und "length" global, obwohl sie nur lokal verwendet werden?

Das Durcharbeiten folgender Seiten könnte bestimmt nicht schaden, bevor du hier weitermachst.
http://www.delphi-treff.de/tutorials/grundlagen/
http://www.delphi-treff.de/tutorials...-fange-ich-an/

PSS: Eine Variable "length" zu nennen ist sehr unvorteilhaft, da es eine gleichnamige und oftgenutzte Funktion gibt > Delphi-Referenz durchsuchenLength.

Magic94 8. Dez 2010 00:35

AW: Windows.Beep Variabel
 
hab das Problem etwas anders gelöst bekommen. Aber jetzt steht der erstellte Befehl in der Variable "tag" (string)
also in der variable "tag" steht: windows.beep(500,100); (oder halt andere werten, jenachdem wie man die werte in die Edit felder eingibt.
Nochmal zum mitschreiben wie die Variable "tag" erstellt wird:
tag := 'windows.beep' + '(' + freq + ',' + lengh + ');';

Jetzt muss aber der Inhalt der variable "tag" in eine procedure eines Buttons geschrieben werden.
Folgende möglichkeiten funktionieren nicht:
Button3.OnClick := tag; [Fehler]: Inkompatible Typen: 'TNotifyEvent' und 'String'
Button3.Click := tag; [Fehler]: Der linken Seite kann nichts zugewiesen werden

Wie bekomme ich den Inhalt der Variable so, dass er von Delphi ausgeführt wird?

sx2008 8. Dez 2010 01:39

AW: Windows.Beep Variabel
 
Also irgendwie bist du völlig auf dem Holzweg.
Delphi ist kein Interpreter oder Scriptsprache, bei der Strings ohne Weiteres in Befehle umgewandelt werden.
Delphi-Quellcode:
procedure TForm1.bthearClick(Sender: TObject);
const
  MILLISECONDS_PER_SECONDS = 1000; // 1 Sekunde = 1000 Millisekunden
var
  freq : integer;
  duration : integer;
begin
  freq := StrToInt(edFreq.Text);
  // edLengh.Text enthält die Länge in Sekunden als String z.B. '0,95'
  duration := Round(StrToFloat(edLengh.Text) * MILLISECONDS_PER_SECONDS);

  // kann man auch weglassen; soll nur zeigen, wie man die If-Anweisung einsetzt
  if duration < 50 then
    duration := 50;

  windows.Beep(freq,duration);
end;
Hier ist noch ein weiteres Beispiel.


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:51 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz