var
  Stream:TMemoryStream;
  Stream1:TStream;
begin
  with form1.ClientDataSet1 do
  begin
    Edit;
    Stream:=TMemoryStream.Create;
    Stream.Position:=0;
    form1.Memo1.Lines.SaveToStream(Stream);
    Stream1:=CreateBlobStream(FieldByName('BlobField'),bmReadWrite);
    try
      Stream1.CopyFrom(Stream,Stream.Size);//这里出错"Stream Read Error"
      Post;
    finally
      Stream1.Free;
    end;
    Stream.Free;
  end;
为什么呢?

解决方案 »

  1.   

    如此改写:
          ...
          Stream1:=CreateBlobStream(FieldByName('BlobField') as TBlobField,bmWrite);
         try
           Stream1.Assign(Stream);
          ....
    我是这么写的,一切正常
      

  2.   

    Stream1.CopyFrom(Stream,Stream.Size);//这里出错"Stream Read Error"
    依旧!!!!!!!!
    高手,在哪里;高手,在闪烁!
      

  3.   

    var
      Stream:TMemoryStream;
      Stream1:TStream;
    begin
      with form1.ClientDataSet1 do
      begin
        Edit;
        Stream:=TMemoryStream.Create;
       // Stream.Position:=0;(原先)
        form1.Memo1.Lines.SaveToStream(Stream);
        Stream.Position:=0;驱 //(现在)
        Stream1:=CreateBlobStream(FieldByName('BlobField'),bmReadWrite);
        try
          Stream1.CopyFrom(Stream,Stream.Size);//不出错"Stream Read Error"
          Post;
        finally
          Stream1.Free;
        end;
        Stream.Free;
      end;
    但是没有保存到记录中!????
      

  4.   

    老兄:
       问题出在以下位置:
       1。Stream.Position:=0;
         form1.Memo1.Lines.SaveToStream(Stream);
      改为:
         form1.Memo1.Lines.SaveToStream(Stream);
          Stream.Position:=0;
      2,Post;
         把Post去掉即可,否则会重复保存,所以报错     
      

  5.   

    var
      Stream:TMemoryStream;
      Stream1:TStream;
    begin
      with form1.ClientDataSet1 do
      begin
        Edit;
        Stream:=TMemoryStream.Create;
        form1.Memo1.Lines.SaveToStream(Stream);
        Stream.Position:=0;
        Stream1:=CreateBlobStream(FieldByName('BlobField'),bmReadWrite);
        try
          Stream1.CopyFrom(Stream,Stream.Size);
          Post;
        finally
          Stream1.Free;
        end;
        Stream.Free;
      end;
     已经在 AfterPost 里写了 applyupdate
    但是仍没有保存到记录中!????
      

  6.   

    var
      Stream:TMemoryStream;
    begin
      with form1.ClientDataSet1 do
      begin
        Edit;
        Stream:=TMemoryStream.Create;
        form1.Memo1.Lines.SaveToStream(Stream);
        Stream.Position:=0;
        try
          TBlobField(FieldByName('BlobField')).LoadFromStream(Stream);
          Post;
        finally
          Stream.Free;
        end;
      end;
     已经在 AfterPost 里写了 applyupdate
    但是
    ORA-01465 : 无效的十六进制数字
    快疯了!