AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Windows.Beep Variabel
Thema durchsuchen
Ansicht
Themen-Optionen

Windows.Beep Variabel

Ein Thema von Magic94 · begonnen am 7. Dez 2010 · letzter Beitrag vom 8. Dez 2010
Antwort Antwort
Magic94

Registriert seit: 21. Nov 2010
31 Beiträge
 
Delphi 7 Personal
 
#1

Windows.Beep Variabel

  Alt 7. Dez 2010, 23:00
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.

Geändert von mkinzler ( 8. Dez 2010 um 05:24 Uhr) Grund: Delphi-Tags eingefügt
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.142 Beiträge
 
Delphi 12 Athens
 
#2

AW: Windows.Beep Variabel

  Alt 7. Dez 2010, 23:04
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.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu ( 7. Dez 2010 um 23:08 Uhr)
  Mit Zitat antworten Zitat
Magic94

Registriert seit: 21. Nov 2010
31 Beiträge
 
Delphi 7 Personal
 
#3

AW: Windows.Beep Variabel

  Alt 8. Dez 2010, 00:35
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?
  Mit Zitat antworten Zitat
Benutzerbild von sx2008
sx2008

Registriert seit: 15. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#4

AW: Windows.Beep Variabel

  Alt 8. Dez 2010, 01:39
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.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:28 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