AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

DelphiNeroApi - Dateien übergeben

Ein Thema von Gina · begonnen am 13. Mär 2005 · letzter Beitrag vom 7. Okt 2006
Antwort Antwort
Seite 2 von 6     12 34     Letzte »    
scp

Registriert seit: 31. Okt 2003
1.120 Beiträge
 
Delphi 7 Personal
 
#11

Re: DelphiNeroApi - Dateien übergeben

  Alt 16. Mär 2005, 00:22
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:
  If DirectoryExists(FileName) then
    FileTime := now
  else
    FileTime := FileDateToDateTime(FileAge(FileName));
EDIT:
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:
        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
EDIT2: Zusammengefasst
  Mit Zitat antworten Zitat
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
scp

Registriert seit: 31. Okt 2003
1.120 Beiträge
 
Delphi 7 Personal
 
#13

Re: DelphiNeroApi - Dateien übergeben

  Alt 18. Mär 2005, 02:06
So, habe endlich die groben Fehler des Demos gefunden, ordner wird einwandfrei gebrannt.

Mal wieder in AddFileToRootIsoItem:
Delphi-Quellcode:
  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
Auch in AddFileToRootIsoItem (in der repeat-Schleife):
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.
  Mit Zitat antworten Zitat
jbg

Registriert seit: 12. Jun 2002
3.483 Beiträge
 
Delphi 10.1 Berlin Professional
 
#14

Re: DelphiNeroApi - Dateien übergeben

  Alt 18. Mär 2005, 12:02
Würde es dir was ausmachen, wenn man das in den DelphiNeroAPI CVS eincheckt?
  Mit Zitat antworten Zitat
scp

Registriert seit: 31. Okt 2003
1.120 Beiträge
 
Delphi 7 Personal
 
#15

Re: DelphiNeroApi - Dateien übergeben

  Alt 18. Mär 2005, 14:06
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.
  Mit Zitat antworten Zitat
jbg

Registriert seit: 12. Jun 2002
3.483 Beiträge
 
Delphi 10.1 Berlin Professional
 
#16

Re: DelphiNeroApi - Dateien übergeben

  Alt 18. Mär 2005, 14:26
Zitat von scp:
Ich selbst hab mich mit dem Thema CVS noch nicht so befasst, sonst hätte ich es selbst gemacht.
Dazu brauchst du aber CVS Schreibrechte, die du wohl nicht hast.

Die Änderungen sind jetzt drinnen (mit ein paar kleineren, nicht die Logik verändernden, Ausbesserungen).
  Mit Zitat antworten Zitat
scp

Registriert seit: 31. Okt 2003
1.120 Beiträge
 
Delphi 7 Personal
 
#17

Re: DelphiNeroApi - Dateien übergeben

  Alt 18. Mär 2005, 17:10
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;
  Mit Zitat antworten Zitat
Benutzerbild von Gina
Gina

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

Re: DelphiNeroApi - Dateien übergeben

  Alt 18. Mär 2005, 18:53
Uii, supi, ihr seid meine Helden...

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.
Mein Lieblings-Spiele-Laden in Berlin: www.cometgames-store.de

{KDT}
.
  Mit Zitat antworten Zitat
scp

Registriert seit: 31. Okt 2003
1.120 Beiträge
 
Delphi 7 Personal
 
#19

Re: DelphiNeroApi - Dateien übergeben

  Alt 18. Mär 2005, 20:30
Dauert bei mir etwa 3 Sek. (AMD 2GHz, LG GCE-8320).
  Mit Zitat antworten Zitat
Benutzerbild von Gina
Gina

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

Re: DelphiNeroApi - Dateien übergeben

  Alt 18. Mär 2005, 21:02
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.
Mein Lieblings-Spiele-Laden in Berlin: www.cometgames-store.de

{KDT}
.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 6     12 34     Letzte »    


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:17 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz