Delphi-PRAXiS
Seite 3 von 6     123 45     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi DelphiNeroApi - Dateien übergeben (https://www.delphipraxis.net/42078-delphineroapi-dateien-uebergeben.html)

Gina 19. Mär 2005 11:33

Re: DelphiNeroApi - Dateien übergeben
 
Morgen...,

ich hab es geschafft, eine Session zu importieren. Leider nicht 100% erfolgreich.

Zunächst muss man in der NeroApi.pas bei InitNeroAPIFunctions hinzufügen:

Delphi-Quellcode:
NeroImportDataTrack := GetNeroProc('NeroImportDataTrack');
Dann habe ich vor dem ersten AddFileToRootIsoItem diese Zeile eingefügt:

Delphi-Quellcode:
RootIsoItem := NeroImportDataTrack(NeroDeviceHandle,NeroCDInfo.ncdiNumTracks-1,ppCDStamp,pInfo,NIITEF_IMPORT_ISO_ONLY,pResult,nil);
Bei NeroCDInfo.ncdiNumTracks mußte ich -1 angeben, damit er die letzte Session einliest. Folgende Variablen mußten noch deklariert werden:

Delphi-Quellcode:
ppCDStamp: PPointer;
pInfo: PNERO_IMPORT_DATA_TRACK_INFO;
pResult: PNERO_IMPORT_DATA_TRACK_RESULT;
Diese werden beim Aufruf von NeroImportDataTrack gefüllt, sind also zunächst nil.

So, nun dazu, warum es nicht 100% waren. Ich habe jetzt zwei Ordner auf der CD, die jeweils ca. 4,1 MB groß sind. Die Dateien sind alle da und die Ordnergrößen an sich werden im Explorer korrekt angezeigt. Allerdings zeigt die Gesamtgröße der CD nur 5,8 MB an, obwohl es ja ca. 8,2 MB sein müßten. Hat jemand dazu eine Idee?

Und da wir gerade bei Größenangaben sind:

Delphi-Quellcode:
ShowMessage(IntToStr(NeroCDInfo.ncdiFreeCapacityInBlocks) + ' Free Blocks (' + FloatToStrF(NeroCDInfo.ncdiFreeCapacityInBlocks * 2352 / 1024 / 1024 ,ffGeneral, 3, 3) + ' MB)');
Das liefert bei mir total abwegige Ergebnisse. Ein 700 MB Rohling hat angeblich eine Kapazität von 802 MB. Woher kommt die Zahl 2352? Es kann doch nur daran liegen, oder?

Thx, Gina.

scp 19. Mär 2005 11:57

Re: DelphiNeroApi - Dateien übergeben
 
Die 2352 stehen für die Bytes/Block. Für Rohdaten hast du tatsächlich 802MB zur Verfügung, z.B. wenn du eine (S)VCD oder eine Audio CD brennst, bei Daten-CDs werden dann ca. 100MB für CRC-Checks benötigt. Hier eine kleine Liste:
Code:
Audio CD             : 2352
(Super) VideoCD      : 2324
ISO Level 1 Mode 1    : 2048
ISO Level 2 Mode 1    : 2336
ISO Level 1 Mode 2/XA : 2048
ISO Level 2 Mode 2/XA : 2324
Irrtümer vorbehalten.

Gina 19. Mär 2005 12:43

Re: DelphiNeroApi - Dateien übergeben
 
Liste der Anhänge anzeigen (Anzahl: 1)
Ahh, vielen Dank, dann ist das ja klar...

Habe auch gerade das Einlesen der Brenner-Infos auf einem anderen PC probiert. Dort geht es auch sehr schnell. Nur bei mir nicht... *grübel*

Außerdem hab ich meine angefangene CD mal mit Nero geprüft. Er zeigt mir im Arbeitsplatz also nur die Größe der letzten Session an. Muss ich ihm die beim Einlesen der Session noch übergeben? Wenn ja wie ? Ich hab mal einen Screenie der Sessions angehängt. Es sieht so aus, als wenn zwischen den Tracks eine ziemlich große Pause ist. Was kann ich da tun?

Tausend Dank, Gina.

PS: Mit den dort angezeigten Sessions sind etwa 137 MB der CD belegt...

jbg 19. Mär 2005 16:10

Re: DelphiNeroApi - Dateien übergeben
 
Zitat:

Zitat von scp
Beim verwenden von NeroCreateIsoTrackEx muss offfensichtlich immer ein Trackname als zweiter Parameter angegeben werden, bei AudioCDs und VideoCDs steht dort jedoch nil.

Ausgebessert.

Zitat:

Ebenfalls bei WMDropFiles fehlt bei (S)VCDs die Speicherzuweiseng von paBuffer:
Ausgebessert. paBuffer wurde als string benutzt, war aber als PAnsiChar deklariert. Ich habe das jetzt komplett auf string umgeschrieben.

Zitat:

Zunächst muss man in der NeroApi.pas bei InitNeroAPIFunctions hinzufügen:
Ist auch im CVS.

Gina 19. Mär 2005 16:53

Re: DelphiNeroApi - Dateien übergeben
 
Super jbg, vielen Dank.

Hast du das schon integriert? Oder eine andere Lösung dafür? Muß man vielleicht wirklich das \. auselesen, um das Datum eines Ordners zu bekommen?

Zitat:

Zitat von scp
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));

Ich hänge immernoch an den drei Speicherplatzproblemen fest:

1) Warum belegt er so viel mehr Speicher, als die Dateien groß sind? Hat das was mit der Reservierung durch #0 zu tun?
2) Wie übergebe ich den bisher belegten Platz?
3) Wenn die CD nicht genug Platz hat, wirft er sie aus, es kommt aber keine Meldung. Wie frage ich nach der AddFileToRootIsoItem ab, wieviel Platz die Zusammenstellung belegt?

Oje, Fragen über Fragen...

jbg 19. Mär 2005 22:22

Re: DelphiNeroApi - Dateien übergeben
 
Zitat:

Zitat von Gina
Delphi-Quellcode:
  If DirectoryExists(FileName) then
    FileTime := now
  else
    FileTime := FileDateToDateTime(FileAge(FileName));

Der FileAge Code schließt Verzeichnis explizit aus.
Delphi-Quellcode:
function DirectoryAge(const DirectoryName: string): Integer;
var
  sr: TSearchRec;
begin
  Result := -1;
  if FindFirst(DirectoryName, faAnyFile or faDirectory, sr) = 0 then
  begin
    Result := sr.Time;
    FindClose(sr);
  end;
end;
Ist bereits im CVS Code drinnen.

scp 19. Mär 2005 22:46

Re: DelphiNeroApi - Dateien übergeben
 
@jbg
Das ist gut. Fehlt jetzt evtl. nur noch ein "Abbrechen"-Knopf für die Rückgabewerte von IdleCallback und AbortedCallback.
AudioCDs hab ich auch getestet, das klappt zwar, da kommt aber am Ende meistens eine Schutzverletzung, weis noch nicht woran das liegt.

@gina
Habe mich mal mit MultiSession beschäftigt, aber irgendwas fehlt da noch. Muss irgend ein Flag oder so sein. Er importiert zwar die Session, aber wie du sagst die Gesamtgrösse stimmt nicht und das echte Nero erkennt es nicht als Nero-eigenes MultiSession-Format.

Gina 20. Mär 2005 12:03

Re: DelphiNeroApi - Dateien übergeben
 
Hi,

eine AV ist bei mir auch aufgetaucht, und zwar, wenn die CD voll ist. Wenn noch ein wenig Platz ist, dann wirft er sie nur aus, wenn sie aber total voll ist, kommt eine AV.

Die Meldung von Nero, dass es nicht das Mutlisessionformat ist, hab ich auch bekommen. Das liegt sicher daran, dass er nicht alle Informationen eingelesen hat, die er braucht, um die Session korrekt fortzuschreiben...

Und dann hab ich die Sache mit dem Speicherverbrauch mal genauer analysiert. Nach dem ersten Track macht er eine Pause von 02:32.00 Minuten. Nach jedem weiteren Track jeweils eine Pause von 01:32.00 Minuten. Das ergibt bei 5 Sessions etwa 76 MB verschenkter Platz...

Es gibt doch bei Audio-CDs so eine Option, wo man die Pause weglassen kann. Hat es damit vielleicht etwas zu tun? (Kenne mich mit Audio-CDs nicht so aus)

@jbg

Eine Frage zur DirectoryAge: Sehe ich das richtig, dass bei einem Ordner dann kein Datum zurückgegeben wird? Bei mir zumindest ist es so. Je nachdem, ob ich den Pfad mit Backslash übergebe (Result -1) oder ohne Backslash (Result ist ungültiges Timeformat). *grübel*

Thx, Gina.

jbg 21. Mär 2005 18:22

Re: DelphiNeroApi - Dateien übergeben
 
Zitat:

Zitat von Gina
Eine Frage zur DirectoryAge: Sehe ich das richtig, dass bei einem Ordner dann kein Datum zurückgegeben wird?

Bei einem Ordner wird DirectoryAge() aufgerufen, und das liefert das Datum, wenn das Verzeichnis existiert, sonst -1. Da es FindFirst benutzt, darfst du natürlich keinen Backslash am Ende übergeben, da es dann kein gültiger Dateiname mehr ist.

Gina 21. Mär 2005 21:51

Re: DelphiNeroApi - Dateien übergeben
 
Hmm, komisch. Und wieso bekomme ich dann eine Fehlermeldung, wenn ich den Pfad ohne Backslash übergebe? Liegt das etwa auch an meinem D6?

Zu dem Speicherverbrauch:

Ich nehme alles zurück und behaupte das Gegenteil... ;) Denn heute haben wir herausgefunden, dass Nero direkt bei Multisession ebenfalls soviel Speicher verbraucht. Wohl für Lead-In-Lead-Out. Ist mir echt noch nie aufgefallen... :oops: Das ist ja der poore Wahnsinn...

Trotzdem bleibt die Sache mit der Übergabe des bisher belegten Speicherplatzes... :gruebel:

Bis denne, Gina.


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:41 Uhr.
Seite 3 von 6     123 45     Letzte »    

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