var
  ns:Tstream;
  i:integer;
begin
  table1.filter:='SId='''+edit1.text+'''';
  table1.filtered:=true;
  table1.open;
with Table1 do  NS:=CreateBlobStream(Fieldbyname('SFchar'),bmread);
  NS.ReadBuffer(fpTemplate2^,ns.size);
  showmessage(inttostr(strlen(fpTemplate2)));
  showmessage(inttostr(ns.Size));
其中fpTemplate2是pchar类型,我想把SFchar的数据放到fpTemplate2指向的内存中,怎么办啊?在这里其中两个showmessage显示的数据大小不一样啊,为什么啊?

解决方案 »

  1.   

    var
      Stream: TBlobStream;
      fptemplate2:pchar;
      stream:=Tblobstream(table.CreateBlobStream(table.FieldByName(fieldname),bmread));
      memsize:=stream.Size;
      inc(memsize);
      fptemplate2:=allocmem(memsize);
      Stream.Seek(0, soFromBeginning);
      stream.Read(buffer^,memsize);
      

  2.   

    写错了,buffer^ 改成 fptemplate2^
      

  3.   

    用TBlobStream类型来记录
    用其read ,write,seek等方法。
      

  4.   

    请问minercxy(Codewhy) 
           soFromBeginning指的是什么阿?
      

  5.   

    不行阿,我用showmessage(intostr(strlen(fptemplate2)));
               showmessage(intostr(memsize));
    得到的结果不一样阿?