TIdTcpCCient.readbuffer,我想用S :Array of Char来接收
可是接不着东西,应为事先知道字符串长度.所以用
SetLength(s,长度),
而用定长的字符数组就没事,如果字符串太长就要写循环来接收,
大家能告我为何,并有何好方法呢

解决方案 »

  1.   

    楼主是写错了.如果是动态数组
    S :Array of Char;//动态数组pchar(s)才是分配出来的那块内存.setlength(s,长度);
    readbuffer(pchar(s)^,length(s));如果是静态数组
    s :array[0..1000] of char;// 静态数组@s就是分配出来的内存.
    readbuffer(s,length(s));
      

  2.   

    哦..不好意思,这儿错了,如果是静态数组,length函数就不能用.
    readbuffer(s,length(s));
    改为
    readbuffer(s,长度);
      

  3.   

    哈欠:能用Pchar来收吗,您是得了那本秘籍才修炼这高得境界,
    给我指点指点,
    S :Array of Char;
    S 不也是指向动态数据的指针吗,
    Pchar 是指向字符的指针,
    那么S^ ,为何不行呢?感谢!
      

  4.   

    都是基础.传址与传值的语法.如果S是PCHAR,你总得给它分配内存啊.
    var
      s:pchar;GetMem(s,长度);  readbuffer(s^,长度);FreeMem(s);
      

  5.   

    感谢,halfdream(哈欠) 
     师者,传业授道解惑也.
    你可是我老师了.