Delphi-PRAXiS
Seite 3 von 6     123 45     Letzte »    

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 18:28

Re: Fehler: Undefinierter Bezeichner! Wo liegt das Problem?
 
Hab das jetzt so gemacht, aber irgendwie stürzt das Prog ab... :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:=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]);

  if DirectoryExists(Root + '\' + CCRDir) then
  begin
       if DirectoryExists(Root + '\' + CCRDir + '\' + ChannelDir) then
       begin
       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);
                    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
                   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);
                                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) and RecordStatus=True then
      Form1.StopRec;
  if (buffer = nil) then
      FileStream.Free // finished downloading
   else
      FileStream.Write(buffer^, len);
end;

mkinzler 31. Mai 2009 18:32

Re: Fehler: Undefinierter Bezeichner! Wo liegt das Problem?
 
Was heist abstürzen? es gibt sicherlich auch eine Fehlermeldung!

Warum postest du immer nur Codefragmente, die immer weitere Fragen offenlassen. Ist die Definition am Anfang, die der Klasse TForm1?

AlexII 31. Mai 2009 18:42

Re: Fehler: Undefinierter Bezeichner! Wo liegt das Problem?
 
Liste der Anhänge anzeigen (Anzahl: 1)
Das ist der ganze Code der die Aufnahme betrifft...
Die Fehlermeldung am Anhang.

mkinzler 31. Mai 2009 18:46

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

Das ist der ganze Code der die Aufnahme betrifft...
Nein, die Klassendeklaration ist nicht vollständig!

Debugge dein Programm einmal, dann siehst du, in welcher Zeile der Fehler auftritt.

Der Fehler weist auf den Zugriff auf ein nicht instantiiertes Objekt hin ( 0 = nil)

Gausi 31. Mai 2009 18:46

Re: Fehler: Undefinierter Bezeichner! Wo liegt das Problem?
 
Ich würde einfach tippen, dass das Programm durch das DirectoryExists-Gewusel nicht durchblickt und deshalb den FileStream nicht erzeugt, in den später was geschrieben wird. :stupid: Probier mal, den Code mit ForceDirectories aufzuräumen.

Außerdem: es muss heißen

Delphi-Quellcode:
Filestream := TFileStream.Create( .... );
Stürzt das Programm ab, oder bricht die Compilierung ab? Denn die Fehlermeldung am Anfang ist doch eine Compiler-Fehlermeldung, oder nicht? Edit: Anhang nicht gesehen.

AlexII 31. Mai 2009 18:48

Re: Fehler: Undefinierter Bezeichner! Wo liegt das Problem?
 
Verzeih, hab mich falsch ausgedruckt, das Prog startet ohne Fehler, es stürzt beim Play eines Senders, wärend es mit ihm connectet wird.

AlexII 31. Mai 2009 18:53

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

Zitat von Gausi
Probier mal, den Code mit ForceDirectories aufzuräumen.

Da ist ja alles sauber, oder? :gruebel: Weiß nicht was da aufzuräumen ist. :?: Außerdem die "Directories" funktionieren, hab getestet.

mkinzler 31. Mai 2009 18:58

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

Debugge dein Programm einmal, dann siehst du, in welcher Zeile der Fehler auftritt.

AlexII 31. Mai 2009 18:59

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

Delphi-Quellcode:
chan := BASS_StreamCreateURL(url, 0, BASS_STREAM_STATUS, @StatusProc, 0);
Pardon, werde mich ab jetzt besser und ausführlicher ausdrücken. :)

Gausi 31. Mai 2009 19:05

Re: Fehler: Undefinierter Bezeichner! Wo liegt das Problem?
 
Ich wüsste nicht, dass so ein Aufruf der bass.dll-Funktion eine Exception wirft.

Ü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.


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:30 Uhr.
Seite 3 von 6     123 45     Letzte »    

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