用s :array of char试试

解决方案 »

  1.   

    首先,如果 oThead.ps 是Public的,能供多个线程同时访问的(如主线程和oThead线程同时访问),则此变量要作同步处理的.其次, 如果oThead.ps只是PPhar型,而不是数组也没用什么内存人配函数为其分配内存,则oThead.ps = Pchar(s)是让Ps指向了s,而如果s是个局部变量,当s超过生存期后,oThead.ps取出的值将是不确定的, 但如果是oThead.ps := 'ok';因为后面的字符串是常量,所以不存在生存期问题我觉得你最好为oThead.ps分配空间,可用动态如GetMem或StrAlloc等,或用静态,如定义成ps : Array[0..255] of Char; 然后用StrPCopy(oThead.ps, s); 和StrPas(oThead.ps)方式来读写它,当然,要做同步的!!你的问题可能在于s超过了生存期!