1。str[1]实际上是存放字串数据的首地址
而str只是一个变量,他指向了这个字串
其实类似c中的指针
2。delphi有个编译开关,{$H+(-)},打开之后,字串的长度可以达到数G,否则自由256个字节

解决方案 »

  1.   

    帮助上还写得比较明白.
    ShortString 255 characters 2 to 256 bytes backward compatibility
    AnsiString ~2^31 characters 4 bytes to 2GB 8-bit (ANSI) characters
    WideString ~2^30 characters 4 bytes to 2GB Unicode characters; 我想没有必要用WideString吧?另外,TWinSocketStream每次发出的长度也是有限制的..
    你可以把长串一部分一部分发,因为是流方式,接收端可以不管发送方怎么发的.
      

  2.   

    还有.同意上面说的.不过
    >WinSocketStream.Write(Str[1], Length(Str)+1)
                                        ~~~~~~~~~\为什么要加1呢?也可以写成WinSocketStream.Write(Pchar(str)^,...
    似乎这样更好.
      

  3.   

    那编译开关默认是string 为Huge string的,即是打开的,应该不用管吧!
      

  4.   

    var str:ansistring看如何!
    str[1]实际上是存放字串数据的首地址
    而str只是一个变量,他指向了这个字串。
      

  5.   

    //原形应该是:WinSocketStream.Write(pchar,integer);
    WinSocketStream.Write(pchar(Str), Length(Str)+1);
      

  6.   

    用WinSocketStream.Write(PChar(Str)^, Length(Str));  
      

  7.   

    str是一个字符串
    str[1]是这个字符串中的第一个字符
      

  8.   

    你提的问题是指针与数组变换的问题.
    STR=>*STR\\STR[0]..STR[X]
    而STR[0]为这个数组的第一个元素
    学过C吗???C的后几章节中有,看看吧!!!
    你的第二个问题好象得有一点...(你一定在学校时没学好,也可能老师没讲好吧!!)
    为认为你买一本C语言大全学学(很厚的那一本)什么问题都可以搞定了!!!
    有空跟我联系:[email protected]
    你是学生吗????
      

  9.   

    上面写的我要改一下:
    STR=>*STR\\STR[0]..STR[N-1]
      

  10.   

    默认的string是有长度限制的。
      

  11.   

    http://www.csdn.net/Develop/article/11/11562.shtm
    看看吧,正符合你的问题!
      

  12.   

    http://www.csdn.net/Develop/article/11/11562.shtm
    看看吧,正符合你的问题!