我自定义一个record类型,里面有4个属性都是pchar类型,可以是我在一个函数里面赋值后 在其他函数使用中发现记录里面的pchar变量的值都莫名其妙的改变了.郁闷中...期待高人来解答!

解决方案 »

  1.   

       TgetRM = packed record   
            str1:pchar;
            str2:pchar;
            str3:pchar;
            str4:pchar;
            rm:pchar;
       End;
      

  2.   

    pchar;是什么?
    是指针
      

  3.   

    关键得看你怎么赋值的,
    pchar 得先开辟内存再赋值
      

  4.   

    谢谢各位的解答,我的赋值是这样
             glgetRM.str1:=pchar(str1);
            glgetRM.str2:=pchar(Str2);
            glgetRM.str3:=pchar(StrMD5(gtr[1]));
            glgetRM.str4:=pchar(StrMD5(gtr[2]));
            glgetRM.rm:=pchar(gtr[3]);
    str1和str2 是函数形式参数
    gtr是一个TStringList,是在函数里面定义的.
    是一个全局变量 我需要在其他函数用到
      

  5.   

    我观察了几次都是glgetRM.str1和glgetRM.rm 的值莫名其妙的改变了其他的没有问题,奇怪了啊
      

  6.   


    曾经有个人创造了一个词叫:"野指针", 你这个也挺野.PChar 就是一个指针, 你不分配内存.  只是指向一个字符串的地址,会出问题的.
      

  7.   

    感谢您的回复,问题是分配内存的都是需要point类型啊,我的是记录类型啊.这个记录类型是要传进dll的,如果在声明一个记录指针,那不合我的要求啊!