string[255] 而无法再大,我想到定长的并且大于 255 的,怎么办呢?因为在 tcp 中传输,必须定长

解决方案 »

  1.   

    我要的是定长的,用  widestring 在 tcp 中无法传输
      

  2.   

    var
    cs: array[0..1024] of char
    或者用二进制流
      

  3.   

    为什么要什么这么做呢?
    array[0..1023] of char不好吗??
      

  4.   

    to: hj007((初学者))
    字符串数组还是字符数组?偶们都在讨论后面的,并且array[0..1023] of char一点都不浪费内存,还不用自己析构。
      

  5.   

    pchar肯定不行,pchar其实就是一指向char的指针,可以用它来分配不定长度的内存
    楼主是要定长,那为何要使用pchar?除了要自己分配内存之外,还要在适当的时候自己释放
      

  6.   

    var p: PChar;
    begin
      GetMem(p, 5000);
      Zeromemory(p, 5000);
      // Input Your Code 
      FreeMem(p);
    end;
      

  7.   

    var p: PChar;
    begin
      GetMem(p, 5000);
      try
        ZeroMemory(p, 5000);
        StrCopy(p, PChar(SomeString));
        // Input Your Code 
      finally
        FreeMem(p);
      end;
    end;
      

  8.   

    SetLength(A, 300);
    设置字符串长度~
      

  9.   

    劝你还是用char数组,原因如下:
    string是系统动态维护的。即使你定义成定长的,在有赋值操作时,除非你赋的长度和你定义
    的一样长,否则string的长度是会变的,如果你赋值的长度超过你定义的长度,多余的信息还
    会丢失。
    如:
    var
      str:string[200];
    begin
      str := 'abcd';
      ShowMessage(IntToStr(Length(str))); //你看这时的长度是多少?(4啊,而不是255)
    end;
    所以你要是想在传输中使用,还是自己来定义管理缓冲区好。
      

  10.   

    刚才打错了 ShowMessage(IntToStr(Length(str))); //你看这时的长度是多少?(4啊,而不是200)
      

  11.   

    你可以用AnsiString,用SetLength函数设置长度,或者重复使用string[255],重复次数由你控制