Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Von Com-Port zum WinAmp-Player (https://www.delphipraxis.net/52547-von-com-port-zum-winamp-player.html)

JasonDX 7. Sep 2005 21:23

Re: Von Com-Port zum WinAmp-Player
 
Zitat:

Zitat von BenjaminH
Zitat:

Zitat von Chimaira
Dies liegt daran, dass port keine Globale Variable ist, sondern in machwas deklariert wurde, und somit it machwas2 keine gültigkeit hat.

Das war auch mein erster Verdacht, aber:
Delphi-Quellcode:
procedure machwas2(port: TSerialPortNG);

oh, oops :oops: wer lesen kann, is klar im vorteil :wall:
Tja, dann wären mehr infos oder Source echt hilfreich. (Wobei ich ersteres bevorzugen würde ;) )

Islay 7. Sep 2005 21:47

Re: Von Com-Port zum WinAmp-Player
 
Also, ich habe halt völlig ahnungslos den Code im Internet gesucht, der mir an einfachsten erschien.

Also habe ich von hier Klick mich! den Code genommen.

Dann noch diese Komponente installiert und soweit bin ich jetzt...

Ich suche halt nur die einfachste Möglichkeit den COM-Port abzufragen. An dem kommt alle 500ms eine Zahl zwischen 0-16 an, dahinter vielleicht noch was zum erkennen, dass die Nachricht zu Ende ist.

Diese Zahl hätte ich danach ganz gerne in einer Variable, mehr nicht... bin für alles offen :-D


Gruß Denis

JasonDX 7. Sep 2005 22:16

Re: Von Com-Port zum WinAmp-Player
 
Ich denke, wir haben uns falsch verstanden ;)
Relevante Informationen für das derzeitige Problem wären bspw. wo der Fehler auftritt, und welcher Bezeichner unbekannt ist.
Wenn ich mir den Code im DF angucke, denke ich, dass es sein könnte (ich bin vorsichtiger mit meinen Fehleranalysen geworden ^^), dass nicht Port selbst, sondern die Paramterübergabe das Problem darstellt.
Aber am besten einfach mal den Code posten, wo der Fehler auftritt ;)

Islay 8. Sep 2005 16:41

Re: Von Com-Port zum WinAmp-Player
 
Hallo,

also der Fehler tritt hier auf:
if 1 = 1 then machwas2(port: TSerialPortNG);

Das hat mir ein Feund so empfohlen, im Originaltext steht nur
machwas2(port: TSerialPortNG);

Ruft aber halt beides die selbe Fehlermeldung auf, obwohl es ja nur aus einem angeblich funktionierenden Quellcode kopiert wurde...

Gibt es vielleicht Probleme, weil ich noch Delphi 5 nutze?

Gruß Denis

JasonDX 8. Sep 2005 19:30

Re: Von Com-Port zum WinAmp-Player
 
Hi Denis

Zitat:

Zitat von Islay
Delphi-Quellcode:
also der Fehler tritt hier auf:
 if 1 = 1 then machwas2(port: TSerialPortNG);
//Das hat mir ein Feund so empfohlen, im Originaltext steht nur
machwas2(port: TSerialPortNG);
Gibt es vielleicht Probleme, weil ich noch Delphi 5 nutze?

Delphi5 ist hier definitiv nicht das Problem, es fehlt einfach nur an den Grundlagen ;)
Wenn du eine Prozedur/Funktion deklarierst, schreibst du das mit procedure Name(Parameter: Typ; Parameter: Typ);
Hingegen beim Aufrufen einer Prozedur/Funktion müssen nur mehr die Parameter übergeben werden: Name(Variable, Variable);
Damit brauchst du nur noch aufzurufen:
Delphi-Quellcode:
machwas2(port);
Natürlich musst du port irgendwo als Variable vom Typ TSerialPortNG definiert haben :)

Islay 9. Sep 2005 16:27

Re: Von Com-Port zum WinAmp-Player
 
Klar liegt der Fehler bei mir, hät ich nicht anders erwartet, Programme sind schließlich perfekt ;-)

Also, ich kann deinen Erläuterungen folgen, muss sie aber falsch verstanden haben, denn ich bekomme kein Ergebnis zustande.

Nochmal mein kompletter Code, könnt mir vielleicht jemand mit Rotstift editieren was falsch ist, die Fehlermeldung ist immer noch die gleiche in Zeile 41 "undefinierter Bezeichner"

Tut mir Leid das ich mich so blöd anstelle...

Gruß Denis

Delphi-Quellcode:
unit rs232;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  SerialNG, StdCtrls;

type
  TForm1 = class(TForm)
    SerialPortNG1: TSerialPortNG;
    Label1: TLabel;
    procedure Button1Click(Sender: TObject);
    procedure Label2Click(Sender: TObject);
    procedure machwas2(port: TSerialPortNG);

  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;
  port: TSerialPortNG;

implementation

{$R *.DFM}

procedure machwas;    

begin
  // schnittstelle aufmachen
  port := TSerialPortNG.Create(nil); // objekt kerstellen
  try    
    port.CommPort := 'COM1'; // comport einstellen
    port.BaudRate := 9600; // baud-rate einstellen
    port.Active := true; // schnittstelle öffnen

    machwas2(port:);

  finally
    // schnittstelle zumachen
    port.Active := false;    
    freeandnil(port);
  end;
end;

 procedure machwas2(port: TSerialPortNG);
var
  text: String;
begin
  text := 'Hallo';
  port.SendString(text + #11);


end;


end.

JasonDX 9. Sep 2005 16:47

Re: Von Com-Port zum WinAmp-Player
 
Einmal das:
Zitat:

Zitat von Islay
machwas2(port:);

und zum anderen, das mir grad durch zufall aufgefallen ist:
Du hast keine forward-deklaration deiner Funktionen, soll heißen:
Der Compiler kennt die funktion erst, ab wann sie deklariert wurde.
soll heißen:
Delphi-Quellcode:
procedure machwas;
//code....
//Hier ist aber machwas2 noch unbekannt

procedure machwas2(port: TSerialPortNG); //erst ab hier ist sie dem compiler bekannt
Was man dagegen tun kann?
2 Möglichkeiten
  1. die machwas2-prozedur über die machwas-prozedur schieben, ist allerdings nicht die allerbeste möglichkeit
  2. den Funktionskopf im Interface-Teil der Unit bereits deklarieren ->
    Delphi-Quellcode:
    var
      Form1: TForm1;
      port: TSerialPortNG;

    procedure machwas;
    procedure machwas2(port: TSerailPortNG);

    implementation
    Damit kennt der Compiler nun die Funktionen immer und sollte damit das Problem lösen ;)

PS:
Zitat:

Zitat von Islay
Programme sind schließlich perfekt

na ja, fast :stupid:


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:55 Uhr.
Seite 2 von 2     12   

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