Show/Hide Toolbars

XSharp

 

String2Psz() 和 Cast2Psz() 只能在局部变量作用域内使用:

 

String2Psz() 或 Cast2Psz() 的结果不能持久存在非局部变量作用域的内存位置中。

当分配 PSZ 值的作用域结束时,该值将被销毁。

您必须使用 StringAlloc() 代替它,并在代码中管理 PSZ 的生命周期。

 

示例

在下面的代码中,p2 字段使用 String2Psz() 内联初始化。

在构造函数中,我们也尝试用 String2Psz() 为 p1 赋值。这也是不允许的。

 
CLASS TestClass
  EXPORT p1 AS PSZ
  EXPORT p2 := String2Psz("psz2") AS PSZ // Error here
 
  CONSTRUCTOR()
     p1 := String2Psz("psz1") // Error here
  RETURN
END CLASS

 

解决办法是这样的:

CLASS TestClass
  EXPORT p1 AS PSZ
  EXPORT p2 AS PSZ
 
  CONSTRUCTOR()
     p1 := StringAlloc("psz1")
     p2 := StringAlloc("psz2")
  DESTRUCTOR()
     MemFree(p1)
     MemFree(p2)
 
 
  RETURN
END CLASS