我在程序中定义一string变量,通过一个循环赋值!
长度到达一定程度后,变量显示出现乱码!出现容量不足的错误提示!
但objectpascal中string是2G的大小,(我赋值远没有那么大)。
小弟一直困扰多时!望大侠指点一二!!

解决方案 »

  1.   

    如果指定了 String 长度 ,则默认为 ShortString ; 这时有容量限制(255) ,否则可以说没有容量限制 (2G)
      

  2.   

    你用AnsiString吧!
    要不你把你的代码贴出来,看看是不是辅值的时候有问题
      

  3.   

    刚试了好像在memo中能显示完全!但我现在遇到的问题:通过一过滤取出所以符合条件的id,累加后。
    再付给一个table的filter属性!
    进行过滤处理!就出现了以上错误信息!是不是和bde中的设置关系!
    还有在运行期中获取字符串,显示由乱码?(好像和delphi的先显示器有关。大家可以试试)
      

  4.   

    是否是编译开关设置的不对?我忘记了是哪个开关,默认情况下定义的String类型是AnsiString,如果改变那个开关的话String类型被认为是ShortString;把你的源码贴出来看看
      

  5.   

    Query.filter :=str;
    Query.filter :=true;str很长!就会报错!!
      

  6.   

    sql是可以!但目前程序模板中是这么写的,我想寻求解决方法??
    是不是dataset的filter就存在的这个bug!!
      

  7.   

    拆开str
    Query.filtered :=false;
    Query.filter :=str;
    Query.filtered :=true;
    Query.filtered :=false;
    Query.filter :=str1;
    Query.filtered :=true;
    Query.filtered :=false;
    Query.filter :=str2;
    Query.filtered :=true;
      

  8.   

    和虚拟内存大小有关.delphi的内存管理首先会检测剩余的空间.
    我的机器可以分配500MB左右的字符串赋值操作.大概是SetLength()的问题吧.
      

  9.   

    回  chenquan(嘉威王子) :
    偶就是简单过滤!
    str :=... 一个长串!
    然后
    Query.filtered :=false;
    Query.filter :=str;
    Query.filtered :=true;
    当str比较短时,ok!
    超过一定长度,,出错。。
    我觉得和filter有关但不知怎么改进。。?
      

  10.   

    tulippopo(小笨) ( 说:“
    肯定开关受了限制!
    什么开关?
      

  11.   

    好象你的算法有问题吧,用的着这样赋指给FILTER吗?
    要查询直接用SELECT好了
    select * from t1 where id in select t2 where yourcondition
      

  12.   

    to:XACZ(带头大哥)
     你说的的确是一个解决方法。
    但现在小弟已这么做了,
    既然出现了这个问题,我想大家讨论讨论,有没有解决方法!
    还望大侠们相助!!!
      

  13.   

    对,string 默认的是shortstring,它并没有2G