![]() |
Re: DelphiNeroApi - Dateien übergeben
Das mit dem Ordner ist allerdings merkwürdig, schliesslich zeigt er das Datum ja auch im Explorer usw. an.
Entweder ist das ein Bug von Windows, von Delphi oder ein bißchen von beidem: FileAge gibt bei Ordnern generell -1 zurück, da ich den Quelltext dank D3 Pro habe, hab ich das zum Test verändert. und sie da: nur wenn man z.B. statt dem Ordner 'C:\SIK' das Datum von 'C:\SIK\.' abfragt, gehts. Da das Datum aber eh egal ist bei Ordnern, würde ich es so lösen:
Delphi-Quellcode:
EDIT:
If DirectoryExists(FileName) then
FileTime := now else FileTime := FileDateToDateTime(FileAge(FileName)); Achja und die Ordner-Verarbeitung ist noch total unbrauchbar. In der Schleife von AddFileToRootIsoItem ist die Rekursion falsch. Hier muss die Sache z.B. so aussehen:
Delphi-Quellcode:
EDIT2: Zusammengefasst :-)
If (sr.Name <> '.') and (sr.Name <> '..') then // Zeile neu eingefügt
AddFileToRootIsoItem(SubDirItem, FileName + '\' + sr.Name); // "FileName + '\' +" hinzugefügt until FindNext(sr) <> 0; // diese bleibt wie sie ist |
Re: DelphiNeroApi - Dateien übergeben
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:
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:
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; Zitat:
Bis denne, Gina. |
Re: DelphiNeroApi - Dateien übergeben
So, habe endlich die groben Fehler des Demos gefunden, ordner wird einwandfrei gebrannt.
Mal wieder in AddFileToRootIsoItem:
Delphi-Quellcode:
Auch in AddFileToRootIsoItem (in der repeat-Schleife):
If DirectoryExists(FileName) then
StrPCopy(TempItem.sourceFilePath, '') // sourceFilePath bleibt bei Ordnern leer else StrPCopy(TempItem.sourceFilePath, FileName); TempItem.sourceFilePath[SizeOf(TempItem.sourceFilePath) - 1] := #00; // hier war .filename angegeben
Delphi-Quellcode:
if Assigned(SubDirItem) then
begin SubDirItem.nextItem := NeroCreateIsoItem(); SubDirItem.nextItem.fileName := ''; // nextitem ist das neue, also hier filename setzen SubDirItem := SubDirItem.nextItem; end In IdleCallback und AbortedCallback muss als result false zurückgegeben werden. Möchtest du einen "Abbrechen"-Knopf einbauen, brauchst du eine globale Variable die dann bei drücken auf true gesetzt wird. |
Re: DelphiNeroApi - Dateien übergeben
Würde es dir was ausmachen, wenn man das in den DelphiNeroAPI CVS eincheckt?
|
Re: DelphiNeroApi - Dateien übergeben
Nö, kein Thema, wäre mir sogar recht.
Ich selbst hab mich mit dem Thema CVS noch nicht so befasst, sonst hätte ich es selbst gemacht. |
Re: DelphiNeroApi - Dateien übergeben
Zitat:
Die Änderungen sind jetzt drinnen (mit ein paar kleineren, nicht die Logik verändernden, Ausbesserungen). |
Re: DelphiNeroApi - Dateien übergeben
Hier noch zwei Dinge, die mir beim erstellen einer SVCD aufgefallen sind:
Beim verwenden von NeroCreateIsoTrackEx muss offfensichtlich immer ein Trackname als zweiter Parameter angegeben werden, bei AudioCDs und VideoCDs steht dort jedoch nil. Zu finden in WMDropFiles Ebenfalls bei WMDropFiles fehlt bei (S)VCDs die Speicherzuweiseng von paBuffer:
Delphi-Quellcode:
if NeroWriteVideoCD.nwvcdTempPath = '' then
begin GetMem(paBuffer, MAX_PATH); try //... finally FreeMem(paBuffer); end; |
Re: DelphiNeroApi - Dateien übergeben
Uii, supi, ihr seid meine Helden... :love:
Jetzt hat er auch keine Probleme mehr mit den langen Pfaden. Alle Ordner und Unterordner und Unterunterordner etc. sind da. Jetzt muss ich mich nur noch um die Übergabe der alten Session kümmern. Hat zufällig einer von Euch eine Idee, warum das Einlesen des Brenners (NeroDeviceInfos) so ewig dauert? Ist das bei Euch auch so? Oder liegt das an meinem PC? Bis denne, Gina. |
Re: DelphiNeroApi - Dateien übergeben
Dauert bei mir etwa 3 Sek. (AMD 2GHz, LG GCE-8320).
|
Re: DelphiNeroApi - Dateien übergeben
Ahh, ok, dann scheint es an meinem System zu liegen. Hab zwar einen 3,2 P4, aber vielleicht mag er ja das HT nicht... Ich werds morgen mal auf einem anderen PC probieren. Danke dir.
Hab jetzt nochmal intensiv das Brennen von Ordnern getestet. Auch Namen mit Leerzeichen sind kein Problem. Da bin ich echt beruhigt ;) Nur das Einlesen der alten Session will nicht klappen. Da hab ich wohl noch nicht den richtigen Befehl gefunden... :( Ich suche weiter... Thx, Gina. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:41 Uhr. |
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