Einzelnen Beitrag anzeigen

Benutzerbild von Amnon82
Amnon82

Registriert seit: 5. Jan 2005
186 Beiträge
 
FreePascal / Lazarus
 
#1

_tfopen() failed: 2 - Liegt es an meiner Function?

  Alt 27. Jun 2006, 20:23
http://img204.imageshack.us/img204/7...titled16bm.png

... ist eine Fehlermeldung vom Cinema Craft Encoder (CCE).
Ich hab für diesen Encoder ein Delphi-Tool geschrieben AutoQ3.

Mir und auch meinem Hauptbetatester ist jener Fehler mit den neueren Versionen von AutoQ3 (mehrmals) passiert.
Ich starte CCE in der neusten Version (0.6.49.86) folgendermaßen:

Delphi-Quellcode:
{=== RunAndWaitShell (Enhanced AutoQ Version) ======================

This is an extended Version of Shellexecute. It will wait until
the process is done.

(C) 2006 AMSOFT - by Amnon82

{===================================================================}

procedure RunAndWaitShell(Executable, Parameter: STRING; ShowParameter: INTEGER; WaitParameter:Integer; D2VCreatedParameter:Integer; WaitForECL:Integer);
var
  Info: TShellExecuteInfo;
  pInfo: PShellExecuteInfo;
  exitCode: DWord;
begin
  pInfo := @Info;
  with Info do
  begin
    cbSize := SizeOf(Info);
    fMask := SEE_MASK_NOCLOSEPROCESS;
    wnd := application.Handle;
    lpVerb := NIL;
    lpFile := PChar(Executable);
    lpParameters := PChar(Parameter + #0);
    lpDirectory := NIL;
    nShow := ShowParameter;
    hInstApp := 0;
  end;

  if WaitforECL=1 then
  repeat
    nil;
    if AQ3MAINFORM.DisplayWaitforECLMessages1.Checked=true
    then
    begin
      AQ3MAINFORM.M_log.SelStart := Length(AQ3MAINFORM.M_log.Text);
      AQ3MAINFORM.M_log.SelLength := 0;
      TextAusgabe(AQ3MAINFORM.M_log, TimeToStr(time)+' - '+DateToStr(Date)+' >> '
      +#3+'Debug message: NIL-Run (wait for ECL)'+#3 + sLineBreak);
      TextAusgabe(AQ3MAINFORM.M_log, TimeToStr(time)+' - '+DateToStr(Date)+' >> '
      +#3+'ECL file: '+S_ECLFILE+#3 + sLineBreak);
    end;
    Application.ProcessMessages;
  until
  V_ECLCREATED=1;

  if WaitforECL=1 then
  begin
    if (V_ECLCREATED=1) and (fileexists(S_ECLFILE)) and (IsFileInUse(S_ECLFILE)=false)
    then
    begin
      if AQ3MAINFORM.DisplayWaitforECLMessages1.Checked=true
      then
      begin
        AQ3MAINFORM.M_log.SelStart := Length(AQ3MAINFORM.M_log.Text);
        AQ3MAINFORM.M_log.SelLength := 0;
        TextAusgabe(AQ3MAINFORM.M_log, TimeToStr(time)+' - '+DateToStr(Date)+' >> '
        +#3+'Debug message: CCE executed'+#3 + sLineBreak);
      end;
      ShellExecuteEx(pInfo);
    end;
  end
  else
    Begin
      ShellExecuteEx(pInfo);
    end;

  s_exe:=extractfilename(executable);
  AQ3MAINFORM.prioritytimer.enabled:=true;

  if D2VcreatedParameter=1 then
  repeat
    exitCode := WaitForSingleObject(Info.hProcess, WaitParameter);
    Application.ProcessMessages;
  until
  ((exitCode <> WAIT_TIMEOUT   ) or (CreatedD2v() = true))
  else
    repeat
      exitCode := WaitForSingleObject(Info.hProcess, WaitParameter);
      Application.ProcessMessages;
  until
  (exitCode <> WAIT_TIMEOUT);
end;
{===================================================================}


RunAndWaitShell(pchar(s_cce_path), ' -ecl "'+path+'temp\AQ3PREDICTION.ecl" -encode -exit -hideshutdown',value,1000,0,1)
Das sogenannte ECL-File wird mit einer anderen Function erstellt.
Laut einem Forenbeitrag ...

Zitat:
Hallo,

ich hab mir gestern die Vollversion von CCE Basic gekauft, nun will das Ding einfach nicht mit
dvd2dvd-r 1.45 oder1.46 starten. Es geht ein Fenster mit folgender Meldung auf(WindowsXP):

_tfopen() failed : 2, klicke ich das Fenster weiter , kommt ein neues Fenster mit:

C:\Dokumente und Einstellungen\Benutzername\Desktop\1_26.03.2003_16 .07,

die mit dv2dvd-r erzeugte ecl liegt aber auf :H:\DVD COPY 1_26.03.2003_16.07
Ich wäre sehr dankbar für schnelle Hilfe.

Danke und Gruß

Morrison
Zitat:
Hi

Das Problem ist die Bezeichnung Deiner Festplatte 'DVD Copy 1'. Durch einen kleinen Umstand darf zur Zeit kein Leerzeichen in der Bezeichnung des Quelllaufwerks bzw. im Label der DVD sein. In 1.4.7 ist dieses behoben. Ändere die Bezeichnung Deiner HD in 'DVD_Copy_1' und es wird gehen.
... hat das Ganze mit dem Dateinamen zu tun.

Ist bei mir aber nicht der Fall ("'+path+'temp\AQ3PREDICTION.ecl"). Dann hab ichs auch mit Pfaden, in denen Leerzeichen enthalten waren, probiert, was aber auch keinen Fehler ausgelöst hatte.

Nun kam mir der Gedanke, es könnte ja sein, das CCE keinen Lese/Schreibzugriff auf die ECL-Datei hat.
Ich hoffe ich hab das Problem mit der veränderten RunAndWait-Function behoben.

btw. wie findet Ihr die Function? Kann man diese noch verbessern?
  Mit Zitat antworten Zitat