Einzelnen Beitrag anzeigen

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