AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Fehler: Undefinierter Bezeichner! Wo liegt das Problem?

Fehler: Undefinierter Bezeichner! Wo liegt das Problem?

Ein Thema von AlexII · begonnen am 17. Mai 2009 · letzter Beitrag vom 3. Jun 2009
Antwort Antwort
Seite 5 von 6   « Erste     345 6   
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.859 Beiträge
 
Delphi 11 Alexandria
 
#41

Re: Fehler: Undefinierter Bezeichner! Wo liegt das Problem?

  Alt 2. Jun 2009, 22:21
Auch ein Hobby-Programmierer sollte:
-die Grundsätze der OOP, den Unterschied zwischen einer freien Prozedur und den Unterschied zwischen einer Prozedur/Funktion kennen.
-wenn er Hilfe will Nachfragen beantworten ( Poste die "komplette" Klassendeklaration); aber die ist wohl so geheim, wie die PIN deiner Scheckkarte.
-verstehen, das man entweder komplett objektorientiert arbeiten sollte oder garnicht; alles Methoden war allgeimein gemeint und nicht nur für StopRec sondern auch für alle weiteren Prozeduren, welche vielleicht noch kommen
Markus Kinzler
  Mit Zitat antworten Zitat
AlexII

Registriert seit: 28. Apr 2008
1.717 Beiträge
 
FreePascal / Lazarus
 
#42

Re: Fehler: Undefinierter Bezeichner! Wo liegt das Problem?

  Alt 2. Jun 2009, 22:27
Woher soll ich das alles wissen, wenn ich erst in diesem Thema erfahre, dass es noch freie Proceduren gibt Ok, ist ein anderes Thema.

Klassendeklaration? Muss das hier sein denke ich, oder?

Delphi-Quellcode:
type
  
  TForm1 = class(TForm)
    GroupBox1: TGroupBox;
    GroupBox2: TGroupBox;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    GroupBox3: TGroupBox;
    Label6: TLabel;
    ed_ProxyServer: TEdit;
    cbDirectConnection: TCheckBox;
    Label7: TLabel;
    Label8: TLabel;
    ComboBox1: TComboBox;
    Label9: TLabel;
    XPManifest1: TXPManifest;
    Panel1: TPanel;
    Image2: TImage;
    PopupMenu1: TPopupMenu;
    About1: TMenuItem;
    ProxyServer1: TMenuItem;
    Website1: TMenuItem;
    N1: TMenuItem;
    Image3: TImage;
    VolumeOff: TImage;
    VolumeOn: TImage;
    Image1: TImage;
    Image4: TImage;
    TrackBar1: TTrackBar;
    PaintBox1: TPaintBox;
    Timer1: TTimer;
    Image5: TImage;
    Image6: TImage;
    Image7: TImage;
    Label1: TLabel;
    Label2: TLabel;
    Timer2: TTimer;
    Image8: TImage;
    Timer3: TTimer;
    Image9: TImage;
    Image10: TImage;
    Image11: TImage;
    ListBox1: TListBox;
    ListBox2: TListBox;
    Image12: TImage;
    Image13: TImage;
    Image14: TImage;
    ListBox3: TListBox;
    ListBox4: TListBox;
    Image15: TImage;
    GroupBox4: TGroupBox;
    Label10: TLabel;
    Label11: TLabel;
    Timer4: TTimer;
    BitBtn4: TBitBtn;
    ShowDate1: TMenuItem;
    ShowTime1: TMenuItem;
    N2: TMenuItem;
    Image16: TImage;
    Image17: TImage;
    Image18: TImage;
    Image19: TImage;
    Timer5: TTimer;
    Image20: TImage;
    SaveDialog1: TSaveDialog;
    GroupBox5: TGroupBox;
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure cbDirectConnectionClick(Sender: TObject);
    procedure ComboBox1Click(Sender: TObject);
    procedure BitBtn4Click(Sender: TObject);
    procedure Exit1Click(Sender: TObject);
    procedure Image2Click(Sender: TObject);
    procedure ProxyServer1Click(Sender: TObject);
    procedure Website1Click(Sender: TObject);
    procedure About1Click(Sender: TObject);
    procedure VolumeOnClick(Sender: TObject);
    procedure VolumeOffClick(Sender: TObject);
    procedure Image1Click(Sender: TObject);
    procedure Image4Click(Sender: TObject);
    procedure TrackBar1Change(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
    procedure Image7Click(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure Timer2Timer(Sender: TObject);
    procedure ComboBox1KeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure Image8Click(Sender: TObject);
    procedure Timer3Timer(Sender: TObject);
    procedure Image9Click(Sender: TObject);
    procedure Image10Click(Sender: TObject);
    procedure Image11Click(Sender: TObject);
    procedure Image12Click(Sender: TObject);
    procedure ListBox1Click(Sender: TObject);
    procedure Image13Click(Sender: TObject);
    procedure Image14Click(Sender: TObject);
    procedure Image15Click(Sender: TObject);
    procedure Timer4Timer(Sender: TObject);
    procedure ShowDate1Click(Sender: TObject);
    procedure ShowTime1Click(Sender: TObject);
    procedure Image16Click(Sender: TObject);
    procedure Image17Click(Sender: TObject);
    procedure Image18Click(Sender: TObject);
    procedure Image19Click(Sender: TObject);
    procedure Timer5Timer(Sender: TObject);
    procedure Image19MouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    procedure Image4MouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    procedure Image20Click(Sender: TObject);
  private
    { Private declarations }
    procedure StopRec;

  public
    { Public declarations }
    procedure WndProc(var Msg: TMessage); override;

  end;
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.859 Beiträge
 
Delphi 11 Alexandria
 
#43

Re: Fehler: Undefinierter Bezeichner! Wo liegt das Problem?

  Alt 2. Jun 2009, 22:35
Zitat:
Woher soll ich das alles wissen, wenn ich erst in diesem Thema erfahre, dass es noch freie Proceduren gibt Rotating Eyes Ok, ist ein anderes Thema.
Weil das Grundlagen sind!

Wo ist FileStream deklariert?
Gibt es mehrere Variablen dieses Namens?

Delphi-Quellcode:
...
function TForm1.StopRec: TFileStream;
var
  Root, CCRDir, ChannelDir, FileName : String;
begin
   ...
   result := FileStream;
end;

procedure StatusProc(buffer: Pointer; len, user: DWORD); stdcall;
begin
  if (buffer <> nil) and (len = 0) then
    SendMessage(win, WM_INFO_UPDATE, 8, DWORD(PChar(buffer)));


  if (FileStream = nil) then
      FilrStream := Form1.StopRec;
  ...
end;
...
Markus Kinzler
  Mit Zitat antworten Zitat
Satty67

Registriert seit: 24. Feb 2007
Ort: Baden
1.566 Beiträge
 
Delphi 2007 Professional
 
#44

Re: Fehler: Undefinierter Bezeichner! Wo liegt das Problem?

  Alt 2. Jun 2009, 22:36
Ja, es ist böse... es wäre für Dich auch leichter, Fehler zu finden, wenn der Code besser wird. Das es nicht von heute auf morgen geht ist klar.

Das Problem ist zumindest für mich, das es nicht leicht ist, die arbeitsweise Deines Codes zu durchschauen, wenn z.B. schon eine StopProc gar nicht Stoppt, sondern startet?

Irgendwo wird die ganze Aktion (zu früh) ausgelöst, der Auslöse-Code scheint immer noch zu fehlen!?

***

Etwas hätte ich dann noch

- Filename änderst Du am Anfang, also nur einmal zuweisen an SaveDialog1 nötig
- StringReplace Sammlung könnte man anders lösen
- Du fügst ständig Root, CCRDir und u.U. noch ChannelDir zusammen, ohne das die sich inwischen geändert haben. Warum nicht gleich den komplette Pfad in der Variable CCDir bzw. ChannelDir ablegen?

Könnte so aussehen (ohne Gewähr, wollte If then's vertehen, dabei ist es entstanden):
Delphi-Quellcode:
procedure TForm1.StopRec;
var
  Root, CCRDir, ChannelDir, FileName : String;
  i : Integer;
begin
  Root := GetSpecialFolderForMP3(Handle, CSIDL_PERSONAL);
  CCRDir := Root +'\'+ 'CCRadio Recordings';
  ChannelDir := Label4.Caption;
  FileName:=FormatDateTime('dd.mm.yy', date) + ' - ' + FormatDateTime('hh.nn.ss', time) + '.mp3';
  SaveDialog1.FileName := FileName;

  for i := Length(ChannelDir) downto 1 do
    if Pos(ChanelDir[i], '\/:*?"<>|.') > 0 then Delete(ChannelDir,1,1);

  // Ok, das muss nach bereinigen zusammen
  ChannelDir := CCDir +'\'+ ChannelDir;

  if DirectoryExists(CCRDir) then
  begin
    if DirectoryExists(ChannelDir) then
    begin
      Filestream:=TFileStream.Create(ChannelDir + '\' + FileName, fmCreate);
    end else if (not CreateDir(ChannelDir)) then
    begin
      if SaveDialog1.Execute then //WaveStream.SaveToFile(SaveDialog1.FileName);
    end else
    begin
      CreateDir(ChannelDir);
      Filestream:=TFileStream.Create(ChannelDir + '\' + FileName, fmCreate);
    end;

  end else if (not CreateDir(CCRDir)) then
  begin
    if SaveDialog1.Execute then //WaveStream.SaveToFile(SaveDialog1.FileName);
  end else
  begin
    CreateDir(CCRDir);
    if DirectoryExists(ChannelDir) then
    begin
      Filestream:=TFileStream.Create(ChannelDir + '\' + FileName, fmCreate);
    end else if (not CreateDir(ChannelDir)) then
    begin
      if SaveDialog1.Execute then //WaveStream.SaveToFile(SaveDialog1.FileName);
    end else
    begin
      CreateDir(ChannelDir);
      Filestream:=TFileStream.Create(ChannelDir + '\' + FileName, fmCreate);
    end;
  end;
  //RecordStatus:=False;
end;
Dabei hab' ich irgendwann aufgegeben, was die Orgie mit den If then unterm Strich genau macht...

€: Waren ein paar Fehler drin, sollte aber nicht funktionsfähig sein, sondern nur (für mich) das lesen erleichtern!
  Mit Zitat antworten Zitat
AlexII

Registriert seit: 28. Apr 2008
1.717 Beiträge
 
FreePascal / Lazarus
 
#45

Re: Fehler: Undefinierter Bezeichner! Wo liegt das Problem?

  Alt 2. Jun 2009, 22:45
Deklariert ist es hier und nur ein mal:

Delphi-Quellcode:
  public
    { Public declarations }
    procedure WndProc(var Msg: TMessage); override;

  end;

var
  Form1: TForm1;
  Proxy: array [0..99] of char; //proxy server

  cthread: DWORD = 0;
  chan : HSTREAM = 0;
  win : hwnd;
  vol : Integer;
  z : Integer = 0;
  a : Integer = 0;

  FileStream : TFileStream; <------
  RecordStatus : Boolean;
  Mit Zitat antworten Zitat
Satty67

Registriert seit: 24. Feb 2007
Ort: Baden
1.566 Beiträge
 
Delphi 2007 Professional
 
#46

Re: Fehler: Undefinierter Bezeichner! Wo liegt das Problem?

  Alt 2. Jun 2009, 22:49
Zitat:
Hab die Aufnahme soweit fertig, es wird aber nicht auf nen Knopfdruck aufgenommen, sondern sofort wenn ein Sender abgespielt wird. Hat jemand eine Idee wie ich die Aufnahme mit einem Knopfdruck starte und stoppe?
Das ist noch die aktuell gültige Frage? Also wo wird die Aufnahme gestartet? Irgendwo wird doch das Ereignis ausgelöst, das bei Senderstart auch aufgenommen wird.
  Mit Zitat antworten Zitat
AlexII

Registriert seit: 28. Apr 2008
1.717 Beiträge
 
FreePascal / Lazarus
 
#47

Re: Fehler: Undefinierter Bezeichner! Wo liegt das Problem?

  Alt 2. Jun 2009, 22:50
Satty67 thx
  Mit Zitat antworten Zitat
AlexII

Registriert seit: 28. Apr 2008
1.717 Beiträge
 
FreePascal / Lazarus
 
#48

Re: Fehler: Undefinierter Bezeichner! Wo liegt das Problem?

  Alt 2. Jun 2009, 22:51
Zitat von Satty67:
Zitat:
Hab die Aufnahme soweit fertig, es wird aber nicht auf nen Knopfdruck aufgenommen, sondern sofort wenn ein Sender abgespielt wird. Hat jemand eine Idee wie ich die Aufnahme mit einem Knopfdruck starte und stoppe?
Das ist noch die aktuell gültige Frage? Also wo wird die Aufnahme gestartet? Irgendwo wird doch das Ereignis ausgelöst, das bei Senderstart auch aufgenommen wird.
Steht alles im Post #34
  Mit Zitat antworten Zitat
Satty67

Registriert seit: 24. Feb 2007
Ort: Baden
1.566 Beiträge
 
Delphi 2007 Professional
 
#49

Re: Fehler: Undefinierter Bezeichner! Wo liegt das Problem?

  Alt 2. Jun 2009, 22:55
Also die Procedure StatusProc steuert die Aufnahme/Beenden der Aufnahme und wird von irgendwas aufgerufen, das Du nicht 100% kontrollieren kannst?

Du könntest mit einem Button einen Schalter setzen (Aufnahme an/aus), das bei "Aufnahme aus" die übergebenen Buffer einfach verworfen werden (nicht speichern).
  Mit Zitat antworten Zitat
AlexII

Registriert seit: 28. Apr 2008
1.717 Beiträge
 
FreePascal / Lazarus
 
#50

Re: Fehler: Undefinierter Bezeichner! Wo liegt das Problem?

  Alt 2. Jun 2009, 23:01
Die Aufnahme wird hier sofort gestartet sobald ein Radio-Sender läuft. Muss aber nur dann starten wenn man auf einen AufnahmeButton klickt.

Delphi-Quellcode:
procedure StatusProc(buffer: Pointer; len, user: DWORD); stdcall;
begin
  if (buffer <> nil) and (len = 0) then
    SendMessage(win, WM_INFO_UPDATE, 8, DWORD(PChar(buffer)));


  if (FileStream = nil) {and (RecordStatus=True)} then
      Form1.StopRec;
  if (buffer = nil) {or (RecordStatus=False)} then
      FileStream.Free // finished downloading
   else
      FileStream.Write(buffer^, len);
end;

Hab schon so versucht, aber irgendwie klappt das nicht.

Delphi-Quellcode:
procedure StatusProc(buffer: Pointer; len, user: DWORD); stdcall;
begin
  if (buffer <> nil) and (len = 0) then
    SendMessage(win, WM_INFO_UPDATE, 8, DWORD(PChar(buffer)));


  if (FileStream = nil) and (RecordStatus=True) then
      Form1.StopRec;
  if (buffer = nil) or (RecordStatus=False) then
      FileStream.Free // finished downloading
   else
      FileStream.Write(buffer^, len);
end;


procedure TForm1.Button1Click(Sender: TObject);
begin
RecordStatus:=True; //Start
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
RecordStatus:=False; //Stopp
end;
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 17:27 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