Changeset 7 for trunk/UDriveScan.pas


Ignore:
Timestamp:
Mar 30, 2016, 11:32:54 PM (8 years ago)
Author:
chronos
Message:
  • Added: Main menu with available actions.
  • Added: Basic functionality to save project to file and open project from file.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/UDriveScan.pas

    r6 r7  
    66
    77uses
    8   Classes, SysUtils, Syncobjs, UBlockMap, Forms, UConfig;
     8  Classes, SysUtils, Syncobjs, UBlockMap, Forms, UConfig, DOM, XMLRead, XMLWrite,
     9  UXMLUtils, Contnrs;
    910
    1011type
     
    4748    constructor Create;
    4849    destructor Destroy; override;
     50    procedure SaveToNode(Node: TDOMNode);
     51    procedure LoadFromNode(Node: TDOMNode);
    4952    property OnTerminate: TNotifyEvent read FOnTerminate write FOnTerminate;
    5053    property OnChange: TNotifyEvent read FOnChange write FOnChange;
    5154  end;
    5255
     56  { TDriveScanList }
     57
     58  TDriveScanList = class(TObjectList)
     59    procedure SaveToNode(Node: TDOMNode);
     60    procedure LoadFromNode(Node: TDOMNode);
     61  end;
     62
    5363
    5464implementation
     
    5666resourcestring
    5767  SUnknownRunMode = 'Unknown run mode';
     68
     69{ TDriveScanList }
     70
     71procedure TDriveScanList.SaveToNode(Node: TDOMNode);
     72var
     73  I: Integer;
     74  NewNode2: TDOMNode;
     75begin
     76  for I := 0 to Count - 1 do
     77  with TDriveScan(Items[I]) do begin
     78    NewNode2 := Node.OwnerDocument.CreateElement('Scan');
     79    Node.AppendChild(NewNode2);
     80    SaveToNode(NewNode2);
     81  end;
     82end;
     83
     84procedure TDriveScanList.LoadFromNode(Node: TDOMNode);
     85var
     86  Node2: TDOMNode;
     87  NewScan: TDriveScan;
     88begin
     89  Count := 0;
     90  Node2 := Node.FirstChild;
     91  while Assigned(Node2) and (Node2.NodeName = 'Scan') do begin
     92    NewScan := TDriveScan.Create;
     93    NewScan.LoadFromNode(Node2);
     94    Add(NewScan);
     95    Node2 := Node2.NextSibling;
     96  end;
     97end;
    5898
    5999
     
    174214end;
    175215
     216procedure TDriveScan.SaveToNode(Node: TDOMNode);
     217var
     218  NewNode: TDOMNode;
     219begin
     220  with Node do begin
     221    WriteInteger(Node, 'DamagedBlockCount', DamagedBlockCount);
     222    WriteInteger(Node, 'WritePattern', WritePattern);
     223    WriteString(Node, 'DriveName', Drive);
     224
     225    NewNode := OwnerDocument.CreateElement('SectorMap');
     226    AppendChild(NewNode);
     227    BlockMap.SaveToNode(NewNode);
     228  end;
     229end;
     230
     231procedure TDriveScan.LoadFromNode(Node: TDOMNode);
     232var
     233  NewNode: TDOMNode;
     234begin
     235  with Node do begin
     236    DamagedBlockCount := ReadInteger(Node, 'DamagedBlockCount', 0);
     237    WritePattern := ReadInteger(Node, 'WritePattern', 0);
     238    Drive := ReadString(Node, 'DriveName', '');
     239
     240    NewNode := FindNode('SectorMap');
     241    if Assigned(NewNode) then
     242      BlockMap.LoadFromNode(NewNode);
     243  end;
     244end;
    176245
    177246end.
Note: See TracChangeset for help on using the changeset viewer.