
28.09.2009, 16:14
|
Модератор
|
|
Регистрация: 17.04.2008
Сообщения: 8,096
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
|
|
Вот:
Код:
unit Unit2;
interface
uses
Windows, SysUtils, Classes, Contnrs;
type
TUpdateInfo = class
private
FName : String;
FUpd : Boolean;
public
constructor Create;
destructor Destroy; override;
procedure SaveToStream(AStream : TStream);
procedure LoadFromStream(AStream : TStream);
property Name : String read FName write FName;
property Upd : Boolean read FUpd write FUpd;
end;
TUpdateInfoList = class
private
FItems : TObjectList;
function GetCount: Integer;
function GetItem(Index: Integer): TUpdateInfo;
public
constructor Create;
destructor Destroy; override;
procedure SaveToStream(AStream : TStream);
procedure LoadFromStream(AStream : TStream);
procedure SaveToFile(AFileName : String);
procedure LoadFrommFile(AFileName : String);
procedure AddItem(AItem : TUpdateInfo);
procedure RemoveItem(AIndex : Integer);
property Count : Integer read GetCount;
property Items[Index : Integer] : TUpdateInfo read GetItem;
end;
implementation
{ TUpdateInfo }
constructor TUpdateInfo.Create;
begin
inherited;
FName := '';
FUpd := False;
end;
destructor TUpdateInfo.Destroy;
begin
inherited;
end;
procedure TUpdateInfo.LoadFromStream(AStream: TStream);
var
ALen : Integer;
begin
AStream.ReadBuffer(ALen,SizeOf(Integer));
SetLength(FName,ALen)
If ALen > 0 Then
AStream.ReadBuffer(FName[1],ALen);
AStream.ReadBuffer(FUpd,SizeOf(Boolean));
end;
procedure TUpdateInfo.SaveToStream(AStream: TStream);
var
ALen : Integer;
begin
ALen := Length(FName);
AStream.WriteBuffer(ALen,SizeOf(Integer));
If ALen > 0 Then
AStream.WriteBuffer(FName[1],ALen);
AStream.WriteBuffer(FUpd,SizeOf(Boolean));
end;
{ TUpdateInfoList }
procedure TUpdateInfoList.AddItem(AItem: TUpdateInfo);
begin
FItems.Add(AItem);
end;
constructor TUpdateInfoList.Create;
begin
inherited;
FItems := TObjectList.Create(True);
end;
destructor TUpdateInfoList.Destroy;
begin
FItems.Free;
inherited;
end;
function TUpdateInfoList.GetCount: Integer;
begin
Result := FItems.Count;
end;
function TUpdateInfoList.GetItem(Index: Integer): TUpdateInfo;
begin
Result := FItems[Index] As TUpdateInfo;
end;
procedure TUpdateInfoList.LoadFrommFile(AFileName: String);
var
AStream : TFileStream;
begin
AStream := TFileStream.Create(AFileName,fmOpenRead);
Try
LoadFromStream(AStream);
Finally
AStream.Free;
End;
end;
procedure TUpdateInfoList.LoadFromStream(AStream: TStream);
var
I : Integer;
ACount : Integer;
AItem : TUpdateInfo;
begin
AStream.ReadBuffer(ACount,SizeOf(Integer));
For I := 0 To ACount-1 Do
Begin
AItems := TUpdateInfo.Create;
AItem.LoadFromStream(AStream);
FItems.Add(AItem);
End;
end;
procedure TUpdateInfoList.RemoveItem(AIndex: Integer);
begin
FItems.Delete(AIndex);
end;
procedure TUpdateInfoList.SaveToFile(AFileName: String);
var
AStream : TFileStream;
begin
AStream := TFileStream.Create(AFileName,fmCreate);
Try
SaveToStream(AStream);
Finally
AStream.Free;
End;
end;
procedure TUpdateInfoList.SaveToStream(AStream: TStream);
var
I : Integer;
ACount : Integer;
begin
ACount := FItems.Count;
AStream.WriteBuffer(ACount,SizeOf(Integer));
For I := 0 To FItems.Count-1 Do
(FItems[i] As TUpdateInfo).SaveToStream(AStream);
end;
end.
Если не понятно как пользоваться - напиши.
|