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.