![]() |
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:
-> [Fehler] Unit1.pas(88): Inkompatible Typen: 'Cardinal' und 'String'
procedure TForm1.bthearClick(Sender: TObject);
begin freq := edFreq.Text; lengh := edLengh.Text; windows.Beep('freq','lengh'); end; zweite möglichkeit:
Delphi-Quellcode:
-> [Fehler] Unit1.pas(88): Inkompatible Typen: 'Cardinal' und 'String'
procedure TForm1.bthearClick(Sender: TObject);
begin freq := edFreq.Text; lengh := edLengh.Text; windows.Beep((freq),(lengh)); end; weiss nicht was ich machen soll. |
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. ![]() ![]() PSS: Eine Variable "length" zu nennen ist sehr unvorteilhaft, da es eine gleichnamige und oftgenutzte Funktion gibt > ![]() |
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? |
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; ![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:37 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz