ISO9660BootClass.pas
上传用户:wanyu_2000
上传日期:2021-02-21
资源大小:527k
文件大小:3k
源码类别:

DVD

开发平台:

Delphi

  1. {-----------------------------------------------------------------------------
  2.  Unit Name: ISO9660BootClass
  3.  Author:    Paul Fisher , Daniel Mann / Thomas Koos (original class structure)
  4.  Purpose:   Class for Bootrecord volume descriptor
  5.  History:   First Code Release
  6. -----------------------------------------------------------------------------}
  7. Unit ISO9660BootClass;
  8. Interface
  9. Uses
  10.   SysUtils,
  11.   Classes,
  12.   ISO9660ClassTypes;
  13.    
  14. Type
  15.   TBootRecordVolumeDescriptor = Class
  16.   Private
  17.   Protected
  18.     FDescriptor : TVolumeDescriptor;
  19.     LastErrorString : String;
  20.     Function  GetString(Const AIndex : Integer): String;
  21.     Procedure SetString(const AIndex : Integer; Const Value: String);
  22.   Public
  23.     Constructor Create; Overload; Virtual;
  24.     Constructor Create(Const ABootRecordVolumeDescriptor : TVolumeDescriptor); Overload; Virtual;
  25.     Destructor  Destroy; Override;
  26.     Function GetLastError : String;
  27.   Published
  28.     Property  Descriptor : TVolumeDescriptor  Read  FDescriptor;
  29.     Property  BootSystemIdentifier        : String   Index 0  Read  GetString
  30.                                                               Write SetString;
  31.     Property  BootIdentifier              : String   Index 1  Read  GetString
  32.                                                               Write SetString;
  33.     Property  BootCatalogPointer      : LongWord    Read  FDescriptor.BootRecord.BootCatalogPointer
  34.                                                     Write FDescriptor.BootRecord.BootCatalogPointer;
  35.   End;
  36. Implementation
  37. Uses
  38.     CovertFuncs;
  39. Constructor TBootRecordVolumeDescriptor.Create;
  40. Begin
  41.   Inherited Create;
  42.   FillChar(fDescriptor, SizeOf(fDescriptor), 0);
  43.   fDescriptor.DescriptorType := vdtBR;
  44.   fDescriptor.BootRecord.StandardIdentifier := ISO_STANDARD_ID;
  45.   fDescriptor.BootRecord.VersionOfDescriptor := 1;
  46. End;
  47. Constructor TBootRecordVolumeDescriptor.Create(Const ABootRecordVolumeDescriptor: TVolumeDescriptor);
  48. Begin
  49.   Inherited Create;
  50.   If ( ABootRecordVolumeDescriptor.DescriptorType <> vdtBR ) Then
  51.     LastErrorString := ('MisMatched Boot record Descriptor');
  52.   fDescriptor := ABootRecordVolumeDescriptor;
  53. End;
  54. Destructor TBootRecordVolumeDescriptor.Destroy;
  55. Begin
  56.   Inherited;
  57. End;
  58. Function TBootRecordVolumeDescriptor.GetLastError : String;
  59. begin
  60.     Result := LastErrorString;
  61. end;
  62. Function TBootRecordVolumeDescriptor.GetString(Const AIndex: Integer): String;
  63. Begin
  64.   Case AIndex Of
  65.     0 : Result := fDescriptor.BootRecord.BootSystemIdentifier;
  66.     1 : Result := fDescriptor.BootRecord.BootIdentifier;
  67.   End;
  68. End;
  69. Procedure TBootRecordVolumeDescriptor.SetString(Const AIndex: Integer; Const Value: String);
  70. Begin
  71.   Case AIndex Of
  72.     0 : StrPCopy(fDescriptor.BootRecord.BootSystemIdentifier,
  73.                   Copy(Value, 1, Length(fDescriptor.BootRecord.BootSystemIdentifier)));
  74.     1 : StrPCopy(fDescriptor.BootRecord.BootIdentifier,
  75.                   Copy(Value, 1, Length(fDescriptor.BootRecord.BootIdentifier)));
  76.   End;
  77. End;
  78. End.