Delphi-PRAXiS
Seite 4 von 6   « Erste     234 56      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Fehler: Undefinierter Bezeichner! Wo liegt das Problem? (https://www.delphipraxis.net/134193-fehler-undefinierter-bezeichner-wo-liegt-das-problem.html)

AlexII 31. Mai 2009 19:15

Re: Fehler: Undefinierter Bezeichner! Wo liegt das Problem?
 
Ich hab diesen Code hier aus dem Forum, ich ging davon aus, der ist richtig, hab nur aus diesem:


Delphi-Quellcode:
procedure StatusProc(buffer: Pointer; len, user: DWORD); stdcall;
begin
  if (buffer <> nil) and (len = 0) then
    Form1.Label5.Caption := PChar(buffer); // display connection status


  if (FileNeme = '') then
    exit;
  if (FileStream = nil) then
      FileStream:= TFileStream.Create(FileNeme, fmCreate); // create the file
  if (buffer = nil) then
      FileStream.Free // finished downloading
   else
      FileStream.Write(buffer^, len);

end;
diesen gemacht:

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) then
      FileStream.Free // finished downloading
   else
      FileStream.Write(buffer^, len);
end;
Der FileStream wird nur wo anders erstellt (in der StopRec) und fertig. :gruebel: Hm....

AlexII 1. Jun 2009 12:00

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

Zitat von Gausi
Überleg doch mal, was du da machst. Erst wenn die Aufnahme gestoppt wird, erzeugst du den Filestream, in den du während der Aufnahme reinschreibst. Das kann doch gar nicht funktionieren. Von der fehlerhaften Erzeugung bzw. fehlenden Zuweisung an die Variable FileStream mal abgesehen.

Wo wird denn die Aufnahme gestoppt? :gruebel:

Gausi 1. Jun 2009 12:16

Re: Fehler: Undefinierter Bezeichner! Wo liegt das Problem?
 
Weiß ich nicht, aber wenn eine Prozedur StopRec heißt, würde ich annehmen, dass die was mit dem Stoppen der Aufnahme zu tun hat. Wenn du die ausführst, wenn die Aufnahme gestartet wird, ist das natürlich auch ok. ;-)

Hast du dort mittlerweile das/die "FileStream := " eingefügt?

AlexII 1. Jun 2009 12:20

Re: Fehler: Undefinierter Bezeichner! Wo liegt das Problem?
 
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? :gruebel:

Delphi-Quellcode:
  private
    { Private declarations }
    procedure StopRec;


procedure TForm1.StopRec;
var
  Root, CCRDir, ChannelDir, FileName : String;
begin
  Root:=GetSpecialFolderForMP3(Handle, CSIDL_PERSONAL);
  CCRDir:='CCRadio Recordings';
  ChannelDir:=Label4.Caption;
  //FileName:='my.mp3';
  FileName:=FormatDateTime('dd.mm.yy', date) + ' - ' + FormatDateTime('hh.nn.ss', time) + '.mp3';

  ChannelDir:=StringReplace(ChannelDir, '\', ' ', [rfReplaceAll]);
  ChannelDir:=StringReplace(ChannelDir, '/', ' ', [rfReplaceAll]);
  ChannelDir:=StringReplace(ChannelDir, ':', ' ', [rfReplaceAll]);
  ChannelDir:=StringReplace(ChannelDir, '*', ' ', [rfReplaceAll]);
  ChannelDir:=StringReplace(ChannelDir, '?', ' ', [rfReplaceAll]);
  ChannelDir:=StringReplace(ChannelDir, '"', ' ', [rfReplaceAll]);
  ChannelDir:=StringReplace(ChannelDir, '<', ' ', [rfReplaceAll]);
  ChannelDir:=StringReplace(ChannelDir, '>', ' ', [rfReplaceAll]);
  ChannelDir:=StringReplace(ChannelDir, '|', ' ', [rfReplaceAll]);
  ChannelDir:=StringReplace(ChannelDir, '.', '', [rfReplaceAll]);

  if DirectoryExists(Root + '\' + CCRDir) then
  begin
       if DirectoryExists(Root + '\' + CCRDir + '\' + ChannelDir) then
       begin
       //showmessage(Root + '\' + CCRDir + '\' + ChannelDir);
       Filestream:=TFileStream.Create(Root + '\' + CCRDir + '\' + ChannelDir + '\' + FileName, fmCreate);
       end else if (not CreateDir(Root + '\' + CCRDir + '\' + ChannelDir)) then
                begin
                SaveDialog1.FileName:=FileName;
                if SaveDialog1.Execute then //WaveStream.SaveToFile(SaveDialog1.FileName);
                end else
                    begin
                    CreateDir(Root + '\' + CCRDir + '\' + ChannelDir);
                    Filestream:=TFileStream.Create(Root + '\' + CCRDir + '\' + ChannelDir + '\' + FileName, fmCreate);
                    end;
  end else if (not CreateDir(Root + '\' + CCRDir)) then
           begin
           SaveDialog1.FileName:=FileName;
           if SaveDialog1.Execute then //WaveStream.SaveToFile(SaveDialog1.FileName);
           end else
               begin
               CreateDir(Root + '\' + CCRDir);
                   if DirectoryExists(Root + '\' + CCRDir + '\' + ChannelDir) then
                   begin
                   Filestream:=TFileStream.Create(Root + '\' + CCRDir + '\' + ChannelDir + '\' + FileName, fmCreate);
                   end else if (not CreateDir(Root + '\' + CCRDir + '\' + ChannelDir)) then
                            begin
                            SaveDialog1.FileName:=FileName;
                            if SaveDialog1.Execute then //WaveStream.SaveToFile(SaveDialog1.FileName);
                            end else
                                begin
                                CreateDir(Root + '\' + CCRDir + '\' + ChannelDir);
                                Filestream:=TFileStream.Create(Root + '\' + CCRDir + '\' + ChannelDir + '\' + FileName, fmCreate);
                                end;
               end;
  //RecordStatus:=False;
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
      Form1.StopRec;
  if (buffer = nil) then
      FileStream.Free // finished downloading
   else
      FileStream.Write(buffer^, len);
end;

AlexII 1. Jun 2009 12:25

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

Zitat von Gausi
Weiß ich nicht, aber wenn eine Prozedur StopRec heißt, würde ich annehmen, dass die was mit dem Stoppen der Aufnahme zu tun hat. Wenn du die ausführst, wenn die Aufnahme gestartet wird, ist das natürlich auch ok. ;-)

Hast du dort mittlerweile das/die "FileStream := " eingefügt?

Ja die Prozedure heißt nicht passend, muss mal umbennenen. Ja hab ich eingefügt. :thumb:

AlexII 2. Jun 2009 20:45

Re: Fehler: Undefinierter Bezeichner! Wo liegt das Problem?
 
Siehe Post #34

Kann mir keiner was dazu sagen?

mkinzler 2. Jun 2009 21:00

Re: Fehler: Undefinierter Bezeichner! Wo liegt das Problem?
 
Vielleicht solltest du das so anpassen:
Delphi-Quellcode:
function TForm1.StopRec: TFileStream;

AlexII 2. Jun 2009 21:01

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

mkinzler 2. Jun 2009 21:08

Re: Fehler: Undefinierter Bezeichner! Wo liegt das Problem?
 
Du vermischst immer wieder freie Prozeduren/Funktionen mit Methoden, hantierst auf Variabeln, welche du im unheimlich geheimen Teil, den du uns weiterhin unterschlägst ( vollständige Klassendeklaration).
Zudem schinst du noch weitere Do-Nots zu fröhnen wie globale Variablen, zumidest greifst du ständig auf Variablen zu, die weder lokale sind noch im rudimentären Klassenkopf sichtbar sind; da du auf diese auch in der freien Prozedur zugreifst vermute ich mal das diese global sind.

AlexII 2. Jun 2009 21:13

Re: Fehler: Undefinierter Bezeichner! Wo liegt das Problem?
 
Ich bin Hobby-Programmierer, verzeih hab dein Post überhaupt nicht verstanden. :pale: :roteyes: :cry:


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:50 Uhr.
Seite 4 von 6   « Erste     234 56      

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