怎样读取记事本的每一行信息到DELPHI中的memo1中 
内容如下: 
这是一份测试信息.................. 
信息内容如下: 
abdsfsdf 
sdfsdfsdfsd 
sdfsdfwerewrew 
sdfsdwerwerewrewrew 
fdsfdsfdfdsfwerwerwerwer 
dsfdsfdfdffsdfdfdsfsdfdsfdsffde 
ewrewrwerewrwerwerwerwerewrwe
//如何编程实现利用zlib进行压缩的写入demo.dat文件
或者通过按扭"读取"解压文件内容到memo1中

解决方案 »

  1.   

    uses
    zlib;//将Src使用Zlib压缩后存入Dst当中
    procedure PackStream(const Src:TStream; Dst:TStream);
    var
    CompStream: TCompressionStream;
    begin
    //增加“断言”以防止输入参数有误
    Assert(Src <> Nil);
    Assert(Dst <> Nil);CompStream := TCompressionStream.Create(clDefault,Dst);
    try
        //将源数据的偏移转到首部
        Src.Seek(0,soFromBeginning);
        //使用CopyFrom将源数据输入到压缩流,以实现压缩
        CompStream.CopyFrom(Src,0);
    finally
        CompStream.Free;
    end;
    end;//将以zlib压缩的Src解压缩后存入Dst当中
    procedure UnpackStream(const Src:TStream; Dst:TStream);
    var
    DecompStream: TDecompressionStream;
    NewSize: Int64;
    begin
    //增加“断言”以防止输入参数有误
    Assert(Src <> Nil);
    Assert(Dst <> Nil);DecompStream:= TDecompressionStream.Create(Src);
    try
        //将源数据的偏移转到首部
        NewSize := Src.Seek(0, soFromEnd);
        Src.Seek(0, soFromBeginning);
        //使用CopyFrom将源数据输入到解压缩流,以实现解压缩
        //并得到实际解压缩后的数据大小(NewSize)
        //内部会使用AllocMem(System单元定义)对Dst进行内存重新分配
        //所以,Dst的内存管理必须兼容AllocMem进行内存分配
        NewSize := Dst.CopyFrom(DecompStream,NewSize);
        //重新设置Dst的实际大小(已经在解压缩过程当中进行重新分配)
        Dst.Size := NewSize;
    finally
        DecompStream.Free;
    end;
    end;//测试代码
    procedure Test;
    var
    SrcStream,PackedStream,UnpackedStream:TMemoryStream;
    begin
    SrcStream := TMemoryStream.Create;
    try
        SrcStream.LoadFromFile('c:\test.xml');
        PackedStream := TMemoryStream.Create;
        try
          //压缩
          PackStream(SrcStream, PackedStream);      PackedStream.Seek(0, soFromBeginning);
          PackedStream.SaveToFile('c:\test_xml.pk');
          UnpackedStream := TMemoryStream.Create;
          try
            //解压缩
            UnpackStream(PackedStream, UnpackedStream);        UnpackedStream.Seek(0, soFromBeginning);
            UnpackedStream.SaveToFile('c:\test_xml.xml');
          finally
            UnpackedStream.Free;
          end;
        finally
          PackedStream.Free;
        end;
    finally
        SrcStream.Free;
    end;
    end;
      

  2.   

    Zlib不是有demo么?你参考一下Demo看看?
      

  3.   

    你有没有QQ号呀,加上我呀QQ;405418144,给看看吧
      

  4.   

    测试了一版主的代码,提示“Stream read error"
     然后指向了这句:NewSize := Dst.CopyFrom(DecompStream,NewSize);
      

  5.   


    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls;type
      TForm1 = class(TForm)
        Button1: TButton;
        Button2: TButton;
        procedure FormCreate(Sender: TObject);
        procedure Button1Click(Sender: TObject);
        procedure Button2Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.dfm}
     uses
    zlib;
     //将Src使用Zlib压缩后存入Dst当中
    procedure PackStream(const Src:TStream; Dst:TStream);
    var
    CompStream: TCompressionStream;
    begin
    //增加“断言”以防止输入参数有误
    Assert(Src <> Nil);
    Assert(Dst <> Nil);CompStream := TCompressionStream.Create(clDefault,Dst);
    try
        //将源数据的偏移转到首部
        Src.Seek(0,soFromBeginning);
        //使用CopyFrom将源数据输入到压缩流,以实现压缩
        CompStream.CopyFrom(Src,0);
    finally
        CompStream.Free;
    end;
    end;//将以zlib压缩的Src解压缩后存入Dst当中
    procedure UnpackStream(const Src:TStream; Dst:TStream);
    var
    DecompStream: TDecompressionStream;
    NewSize: Int64;
    begin
    //增加“断言”以防止输入参数有误
    Assert(Src <> Nil);
    Assert(Dst <> Nil);DecompStream:= TDecompressionStream.Create(Src);
    try
        //将源数据的偏移转到首部
        NewSize := Src.Seek(0, soFromEnd);
        Src.Seek(0, soFromBeginning);
        //使用CopyFrom将源数据输入到解压缩流,以实现解压缩
        //并得到实际解压缩后的数据大小(NewSize)
        //内部会使用AllocMem(System单元定义)对Dst进行内存重新分配
        //所以,Dst的内存管理必须兼容AllocMem进行内存分配
        NewSize := Dst.CopyFrom(DecompStream,NewSize);
        //重新设置Dst的实际大小(已经在解压缩过程当中进行重新分配)
        Dst.Size := NewSize;
    finally
        DecompStream.Free;
    end;
    end;//测试代码
    procedure Test;
    var
    SrcStream,PackedStream:TMemoryStream;
    begin
    SrcStream := TMemoryStream.Create;
    try
        SrcStream.LoadFromFile('c:\test.txt');
        PackedStream := TMemoryStream.Create;
        try
          //压缩
          PackStream(SrcStream, PackedStream);      PackedStream.Seek(0, soFromBeginning);
          PackedStream.SaveToFile('c:\test_txt.pk');
          //UnpackedStream := TMemoryStream.Create;
          {try
            //解压缩
            UnpackStream(PackedStream, UnpackedStream);        UnpackedStream.Seek(0, soFromBeginning);
            UnpackedStream.SaveToFile('c:\test_txt.txt');
          finally
            UnpackedStream.Free;
          end;}
        finally
          PackedStream.Free;
        end;
    finally
        SrcStream.Free;
    end;
    end;procedure TForm1.FormCreate(Sender: TObject);
    begin
    //setbkmode(canvas.handle,1);
    end;procedure TForm1.Button1Click(Sender: TObject);
    begin
    test;
    end;procedure TForm1.Button2Click(Sender: TObject);
    var
    SrcStream,PackedStream,UnpackedStream:TMemoryStream;
    begin
    SrcStream := TMemoryStream.Create;
    try
        SrcStream.LoadFromFile('c:\test_txt.pk');
        PackedStream := TMemoryStream.Create;
        {try
          //压缩
          PackStream(SrcStream, PackedStream);      PackedStream.Seek(0, soFromBeginning);
          PackedStream.SaveToFile('c:\test_txt.pk');}
          UnpackedStream := TMemoryStream.Create;
          try
            //解压缩
            UnpackStream(PackedStream, UnpackedStream);        UnpackedStream.Seek(0, soFromBeginning);
            UnpackedStream.SaveToFile('c:\test_txt.txt');
          finally
            UnpackedStream.Free;
          end;
        {finally
          PackedStream.Free;
        end;}
    finally
        SrcStream.Free;
    end;
    end;
    end.
    我的测试代码,直接用版主的代码,如果测试txt没问题,可以正常压缩,但解压缩出现问题,即解出来的txt内容少一些所以,我分解出来,结果和上面说的一样,还是指向哪句报错?NewSize := Dst.CopyFrom(DecompStream,NewSize);
      

  6.   

    最好能将源代码发到我邮箱中:[email protected]
      

  7.   

    指向哪句报错?NewSize := Dst.CopyFrom(DecompStream,NewSize);
    为什么这条语句出错呀...............