AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi VTOC/Inhaltsverzeichnis einer CD/DVD auslesen
Thema durchsuchen
Ansicht
Themen-Optionen

VTOC/Inhaltsverzeichnis einer CD/DVD auslesen

Ein Thema von Dalai · begonnen am 13. Okt 2009 · letzter Beitrag vom 16. Okt 2009
 
Benutzerbild von Dalai
Dalai

Registriert seit: 9. Apr 2006
1.684 Beiträge
 
Delphi 5 Professional
 
#12

Re: VTOC/Inhaltsverzeichnis einer CD/DVD auslesen

  Alt 16. Okt 2009, 00:19
Ich muss erneut um eure Hilfe bitten, weil ich momentan einen Knoten im Hirn habe und nicht weiterkomme .

Ich hab das Programm etwas geändert, und zwar habe ich ein Record definiert, in dem die Daten ankommen:
Delphi-Quellcode:
var PVD : record
        VolDescType : byte;
        StandardID : array[2..6] of char;
        VolDescVer : byte;
        X1 : byte;
        SystemID : array[9..40] of char;
        VolID : array[41..72] of char;
        X2 : array[73..80] of byte;
        VolSpaceSize : array[81..88] of byte;
        X3 : array[89..120] of byte;
        VolSetSize : array[121..124] of byte;
        VolSequNr : array[125..128] of byte;
        LogBlockSize : array[129..132] of byte;
        PathTableSize : array[133..140] of byte;
        TypeLPathTab : array[141..144] of byte;
        OptTypeLPathTab: array[145..148] of byte;
        TypeMPathTab : array[149..152] of byte;
        OptTypeMPathTab: array[153..156] of byte;
        DirRecordRoot : array[157..190] of char;
        VolumeSetID : array[191..318] of char;
        PublisherID : array[319..446] of char;
        DataPrepID : array[447..574] of char;
        AppID : array[575..702] of char;
        CopyFileID : array[703..739] of char;
        AbstractFileID : array[740..776] of char;
        BibFileID : array[777..813] of char;
        VolCreation : array[814..830] of char;
        VolModDate : array[831..847] of char;
        VolExpirDate : array[848..864] of char;
        VolEffectDate : array[865..881] of char;
        FilStructVer : byte;
        X4 : byte;
        AppUse : array[884..1395] of char;
        X5 : array[1396..2048] of byte;
      end;
Um die Daten dann von dem Pointer Buf auf das Record zu übertragen, habe ich die Methode ReadBtnClick so abgeändert:
Delphi-Quellcode:
if fDrives.Items[DriveCombo.ItemIndex].DeviceReader.ReadData(16, 1, Buf, BufLen) then
begin
     Move(Buf^, PVD, SizeOf(PVD));
end;
Das landet auch alles schön in dem Record. Nur habe ich Schwierigkeiten, die numerischen Felder richtig zu verarbeiten. Konkret geht's mir um die Felder Volume Space Size, Volume Set Size usw. Laut Spec sind diese Felder als Both-byte orders geschrieben:
Zitat:
For example, the decimal number 305419896 has (12 34 56 78 ) as its hexadecimal representation and is recorded as (78 56 34 12 12 34 56 78 ).
Hat jemand eine gute Idee, wie ich das auf einfachem (und verständlichem ) Weg in einen Integer umrechnen kann? In meinem DOS-Programm damals habe ich das ebenfalls mit einem Record gemacht, aber da wurden nur die String-Felder weiterverarbeitet (die numerischen wurden nicht benötigt).

MfG Dalai
  Mit Zitat antworten Zitat
 


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 13:40 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