【求助】火山文本转LPCSTR应该怎么做?
<火山程序 类型 = "通常" 版本 = 1 />包 火山.程序
# //定义一个结构体
# @ typedef struct testmu{
# @ LPCSTR name;
# @ }Mytestmu;
类 启动类 <公开 基础类 = 程序类>
{
方法 启动方法 <公开 类型 = 整数>
{
// 在此处填入自己的代码
变量 局部变量 <类型 = 文本数组类>
局部变量.加入成员 ("成员1")
局部变量.加入成员 ("成员2")
局部变量.加入成员 ("成员3")
方法_处理首页 (局部变量)
返回 (1)
}
方法 方法_处理首页
参数 参数名称 <类型 = 文本数组类>
{
@ Mytestmu wenben ;
参数名称.枚举循环 ()
{
变量 jb_临时文本 <类型 = 文本型>
变量 jb_索引 <类型 = 整数>
jb_临时文本 = 参数名称.取枚举值 ()
jb_索引 = 参数名称.取枚举索引 ()
@ wenben[@<jb_索引>].name =(LPCSTR) GetMbsText (@<jb_临时文本>.GetText (), CVolMem (), NULL) ;
// @ wenben[@<jb_索引>].name =GetMbsText (@<jb_临时文本>.GetText (), CVolMem (), NULL) ;
// @ wenben[@<jb_索引>].name =(LPCSTR) @<jb_临时文本>.GetText () ;
// @ wenben[@<jb_索引>].name =@<jb_临时文本>.GetText () ;
// 上面的方式赋值,到下面还原出来都是乱码。
}
//【只有这里手动赋值才能还原出原始文本】
// @ wenben.name = "111" ;
// @ wenben.name = "222" ;
// @ wenben.name = "333" ;
计次循环 (3)
{
变量 jb_临时文本 <类型 = 文本型>
变量 jb_索引 <类型 = 整数>
jb_索引 = 取循环索引 ()
@ @<jb_临时文本> = CVolString (GetWideText (wenben[@<jb_索引>].name, CVolMem (), NULL));
可跳转调试输出 (jb_临时文本)
}
}
}
本帖最后由 aixunsoft 于 2026-6-13 01:10 编辑
建议用字节集数组,先转多字节保存起来,你那样直接转,转完执行到下一行就释放掉了 LPCSTR 本身不存储文本数据,所以你要注意字节集的变量不能提前被释放。
你中间的代码可以改成这样
<火山程序 类型 = "通常" 版本 = 1 />
方法 方法_处理首页
参数 参数名称 <类型 = 文本数组类>
{
@ Mytestmu wenben;
@ CVolMem data;
@ for (int i = 0; i < @<参数名称>.data().GetCount(); i++ )
@ {
@ wenben.name = GetMbsText(@<参数名称>.data().GetAt(i), data, NULL);
@ }
}
页:
[1]