Einzelnen Beitrag anzeigen

Benutzerbild von Gina
Gina

Registriert seit: 23. Dez 2004
Ort: Berlin
161 Beiträge
 
Delphi 6 Professional
 
#12

Re: DelphiNeroApi - Dateien übergeben

  Alt 16. Mär 2005, 18:41
Hi,

danke für den Tipp. Bin gestern dort abgestorben, da mein Kopf irgendwie nach einer Pause geschrieen hat

Hab das mal in etwa so eingebaut. Die Abfrage nach '.' und '..' hab ich vorn angestellt. Außerdem hab ich noch ne Try finally eingebaut. Momentan sieht die procedure AddFileToRootIsoItem so aus:

Delphi-Quellcode:
procedure TForm1.AddFileToRootIsoItem(var RootItem: PNeroIsoItem; FileName: String);
var
  FileTime: TDateTime;
  tm_year, tm_mon, tm_mday, tm_hour, tm_min, tm_sec, tm_msec: WORD;
  TempItem, SubDirItem: PNeroIsoItem;
  sr: TSearchRec;
begin
  TempItem := RootItem;

  if not (RootItem.fileName = '') then
  begin
    while Assigned(TempItem.nextItem) do
      TempItem := TempItem.nextItem;

    TempItem.nextItem := NeroCreateIsoItem();
    TempItem := TempItem.nextItem;
  end;

  StrPCopy(TempItem.fileName, ExtractFileName(FileName));
  TempItem.fileName[SizeOf(TempItem.fileName) - 1] := #00;

  StrPCopy(TempItem.sourceFilePath, FileName);
  TempItem.fileName[SizeOf(TempItem.sourceFilePath) - 1] := #00;

  If DirectoryExists(FileName) then
     FileTime := now
  else
     FileTime := FileDateToDateTime(FileAge(FileName));
  DecodeDateTime(FileTime, tm_year, tm_mon, tm_mday, tm_hour, tm_min, tm_sec, tm_msec);

  TempItem.entryTime.tm_year := tm_year;
  TempItem.entryTime.tm_mon := tm_mon;
  TempItem.entryTime.tm_wday := DayOfTheWeek(FileTime);
  TempItem.entryTime.tm_mday := DayOfTheMonth(FileTime);
  TempItem.entryTime.tm_yday := DayOfTheYear(FileTime);
  TempItem.entryTime.tm_isdst := WORD(False);
  TempItem.entryTime.tm_hour := tm_hour;
  TempItem.entryTime.tm_min := tm_min;
  TempItem.entryTime.tm_sec := tm_min;

  TempItem.isReference := False;
  TempItem.isDirectory := DirectoryExists(FileName);
  TempItem.importinfo := nil;
  TempItem.userData := nil;
  TempItem.subDirFirstItem := nil;
  SubDirItem := nil;

  if TempItem.isDirectory then
    if FindFirst(IncludeTrailingPathDelimiter(FileName) + '*.*', faAnyFile + faHidden + faArchive + faReadOnly + faSysFile + faDirectory, sr) = 0 then
    try
      repeat
       if (SR.Name <> '.') and (SR.Name <> '..') then begin
        if Assigned(SubDirItem) then
        begin
          SubDirItem.nextItem := NeroCreateIsoItem();
          SubDirItem.fileName := '';
          SubDirItem := SubDirItem.nextItem;
        end
        else
        begin
          SubDirItem := NeroCreateIsoItem();
          SubDirItem.fileName := '';
          TempItem.subDirFirstItem := SubDirItem;
        end;

        AddFileToRootIsoItem(SubDirItem, IncludeTrailingPathDelimiter(FileName) +sr.Name);
       end;
      until FindNext(sr) <> 0;
    finally
      FindClose(sr);
    end;
end;
So ganz klappt es aber noch nicht. Er brennt zwar den Ordner, aber der Inhalt ist nicht zu sehen. Außerdem bekomme ich ständig diese Meldungen:
Zitat:
Joliet names of these files (listed here in ISO-L3) are the same
Als wenn er die Zeichenanzahl des kompletten Pfades mitzählen würde. Mit nem ganz kurzen Pfad konnte ich wenigstens brennen, aber wie gesagt, der Inhalt ist nicht zu sehen. Die Optionen für die langen Pfad- und Dateinamen hab ich noch nicht gefunden... Welche Flags benutzt du?

Bis denne, Gina.
Mein Lieblings-Spiele-Laden in Berlin: www.cometgames-store.de

{KDT}
.
  Mit Zitat antworten Zitat