⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 netserializabledemo.dpr

📁 多数代码可以直接在Delphi6和Delphi7环境下运行。部分涉及.NET技术内容的代码
💻 DPR
字号:
Program NETSerializableDemo;

{$APPTYPE CONSOLE}

uses
  System.IO, System.Runtime.Serialization,
  System.Runtime.Serialization.Formatters.Binary,
  System.Runtime.Serialization.Formatters.Soap;

type
  [Serializable] 
  TMyClass = class(System.Object, ISerializable)
  private
    sName : String;
    iSize : Integer;
  public
    Constructor Create;
    Constructor Create(info : SerializationInfo; context : StreamingContext);
    procedure GetObjectData(info : SerializationInfo; context : StreamingContext);

    function GetName : String;
    function GetSize : Integer;
  end;


{ TMyClass }

constructor TMyClass.Create;
begin
  inherited;

  sName := Self.ClassName;
  iSize := sizeof(Self);
end;

constructor TMyClass.Create(info: SerializationInfo;
  context: StreamingContext);
begin
  inherited Create;
  
  iSize := Integer(info.GetValue('iSize', typeof(Integer)) );
  sName := String(info.GetValue('sName', typeof(String)) );
end;

function TMyClass.GetName: String;
begin
  Result := sName;
end;

procedure TMyClass.GetObjectData(info: SerializationInfo;
  context: StreamingContext);
begin
  info.AddValue('iSize', iSize);
  info.AddValue('sName', sName);
end;

function TMyClass.GetSize: Integer;
begin
  Result := iSize;
end;

const
  PERFILE = 'TMyClass.xml';
var
  myObject : TMyClass;
  sm : Stream;
  bformatter : BinaryFormatter;
  spFormatter : SoapFormatter;
begin
  myObject := TMyClass.Create;

  try
    sm := System.IO.File.Open(PERFILE, FileMode.Create);
//    bformatter := BinaryFormatter.Create;
//    bformatter.Serialize(sm, myObject);
    spFormatter := SoapFormatter.Create;
    spFormatter.Serialize(sm, myObject);
  finally
    sm.Close();
    myObject := nil;
  end;

  try
    sm := System.IO.File.Open(PERFILE, FileMode.Open);
//    bformatter := BinaryFormatter.Create;
//    myObject := TMyClass(bformatter.Deserialize(sm) );
    spFormatter := SoapFormatter.Create;
    myObject := TMyClass(spFormatter.Deserialize(sm) );

    Console.WriteLine(myObject.GetName);
    Console.WriteLine(myObject.GetSize);
  finally
    sm.Close();
  end;
end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -