AnsiString是否有长度的限制?

sdyqingdao 2004-05-05 11:08:28
我的一段代码,莫名其妙的出现问题。由于这一段是重复执行的,只有一种情况出问题,这种情况唯一特别的地方是字多,约300个汉字,没有特殊字符。代码中使用了AnsiString.c_str()。

...全文
315 14 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
robbyzi 2004-05-11
  • 打赏
  • 举报
回复
用WideString不行吗??试试
agtian 2004-05-11
  • 打赏
  • 举报
回复
如果不行,请和我联系
agtian 2004-05-11
  • 打赏
  • 举报
回复
为什么非得用.c_str,好的方法多呢,char * buf[1024],然后sprintf(buf,“%s”,MyString);
不是很好吗?
czliuxi 2004-05-11
  • 打赏
  • 举报
回复
不知道你代码怎么样子,如果你要用substring的话,需要判断当前的substring的截断处是不是汉字的双字的头码,不是可以截断,是的话截断处要加一或退一,这样可以解决乱码问题, 这个是我写过的代码,其中的函数ByteType就是判断是不是头码的,再不清楚可以在bc的帮助中查看关于bytetype函数的说明 其返回数值1为是双字节的头码,2为尾码,0为其为单字
if(Value.Length()>=26)
{TMbcsByteType efg=ByteType(Value,26);
if( efg==1)
QRLabel41->Caption=Value=Value.SubString(1,27)+' '+Value.SubString(28,Value.Length()) ;
else QRLabel41->Caption=Value=Value.SubString(1,26)+' '+Value.SubString(27,Value.Length()) ;
}
sdyqingdao 2004-05-11
  • 打赏
  • 举报
回复
我日!
JackLucifer 2004-05-11
  • 打赏
  • 举报
回复
ByteType是BCB的函数,还是C/C++中就有的?
sdyqingdao 2004-05-08
  • 打赏
  • 举报
回复
up
xiaoshi0 2004-05-08
  • 打赏
  • 举报
回复
长度2G
sdyqingdao 2004-05-08
  • 打赏
  • 举报
回复
很急啊,没人回答吗
叶子哟 2004-05-05
  • 打赏
  • 举报
回复
char *你分配内存了吗把详细代码贴出来
sdyqingdao 2004-05-05
  • 打赏
  • 举报
回复
问题出在AnsiString.c_str(),我用代码试过了,好像char*最多只能255。

我实在这样解决的,用AnsiString.SubString()分解为多个子字符串,但问题又出来了!!
出现乱码,就是大家经常遇到的中文的问题!不知道怎么解决呢?
耙子 2004-05-05
  • 打赏
  • 举报
回复
AnsiString 的理论长度限制是2G字节,足够了吧?

贴出你的代码。
ch_builder 2004-05-05
  • 打赏
  • 举报
回复
他的长度应该足够我们用了,用不着关心这个:)
sdyqingdao 2004-05-05
  • 打赏
  • 举报
回复
matq2008(叶子.net) , pazee(耙子)(灵感点亮生活) 你们好!
代码分为两部分,函数ReplaceText是发这个帖子以前的样子,程序中它被多次调用,只有下面这次替换有问题。
1:

TempString = qr->FieldByName("WGH")->AsString;
ReplaceText("#HazardGoodNO#",TempString, WordRange);

2:函数ReplaceText部分:
bool TMainForm::ReplaceText(AnsiString FindTexts, AnsiString ReplaceTexts, Variant WrdRang)
{
TVariant RepPara=wdReplaceAll;
TVariant EmptyPara=EmptyParam;

WrdRang.OlePropertyGet("Find").OlePropertySet("Text",FindTexts.c_str());
WrdRang.OlePropertyGet("Find").OlePropertyGet("Replacement").OlePropertySet("Text",ReplaceTexts.c_str());
WrdRang.OlePropertyGet("Find").OlePropertySet("Forward", true);
WrdRang.OlePropertyGet("Find").OlePropertyGet("Replacement").OleFunction("ClearFormatting");
WrdRang.OlePropertyGet("Find").OleFunction("Execute",&EmptyPara,&EmptyPara,&EmptyPara,&EmptyPara,&EmptyPara,&EmptyPara,&EmptyPara,&EmptyPara,&EmptyPara,&EmptyPara,&RepPara,&EmptyPara,&EmptyPara,&EmptyPara,&EmptyPara);

return true;
}

13,870

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧