BCB中两个ansistring字符串的比较问题。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了BCB中两个ansistring字符串的比较问题。相关的知识,希望对你有一定的参考价值。

意图为:比较两个二维数组中同列的字符串,记录数据相同的个数。

int a,b;
for (a=4;a<=row1;a++)

if(incar[a][chexing]=="") continue;
for(b=4;b<=row2;b++)

if(outcar1[b][chexing]==""||outcar1[b][chexing]=="11111") continue;
if(CompareText(incar[a][chexing],outcar1[b][chexing])==0) //两个ANSISTRING类型的字符串比较

result[1][chexing]++;
outcar1[b][chexing]="11111";
break;



两个数组皆为ansistring类型,比较过程为,先获得incar[4][3]与outcar1数组中第3列的数逐个比较,若两者相等,则计数+1,且令outcar1中此项为11111,同时跳出本循环,进行[5][3]与outcar1数组第三列逐个比较。。。如此循环。
问题是:CompareText(incar[a][chexing],outcar1[b][chexing])==0语句无法正确判断两者是否相等。尝试过其他很多ansistring比较的语句,也都无法正确判断,转换成char后再比较也不正确,求解。。。
补充:数组数据来源于EXCEL表,其实就是想实现车牌号匹配。

1. finished 在这里是形容词,作表语。如果用动词finish,不能用过去时而应该用一般现在时:when she finishes。

2. at work 是介词短语,在这里作状语,意思是在班上。类似的例子:

You can call me at work. at work作状语
I am at work right now. at work作表语
Are you bored at work? at work作状语

at work有另一个意思,就是”正在工作中”。例如:
GE is imagination at work.
通用电器是梦想启动未来 (通用电器的广告,直译是通用电器是不停工作的想象力)
This highway is your tax dollar at work.
这条公路是你的纳税美元造出来的。
参考技术A 字符串比较直接这样就可以,没必要用函数
outcar1[b][chexing]=="11111")
参考技术B 如果常用的比较函数都不能得到正确结果,楼主就要考虑是否是数据自身原因导致比较函数出错。
比如二位数组在加载EXCAL数据时中读取错误,多读了一些其他的字符,或者包含了空格,再或者数字有全角表示和半角表示。

建议楼组用调试模式自己仔细对比原始数据。

如何在BCB6中实现选择一个文件目录?

在c++builder6.0中
可以用opendialog选择一个文件夹吗?
还有其他方法可以实现打开一个对话框,然后选择一个文件夹,最后返回文件夹的路径吗?

参考技术A AnsiString Dir = "C:";
SelectDirectory(AnsiString("选择文件夹"), L"", Dir);
if(Dir != "")ShowMessage(Dir);

你看看行不行,忘了是不是要包含什么头本回答被提问者采纳

以上是关于BCB中两个ansistring字符串的比较问题。的主要内容,如果未能解决你的问题,请参考以下文章

从 10.3 项目调用 c++ 函数(bcb6 dll/lib)函数

如何在BCB6中实现选择一个文件目录?

使用 ansistring 时 FPC 退出代码 201。字符串不这样做

bcb中,怎么用数组获取SQL语句执行的结果?

C#:DbType.String 与 DbType.AnsiString

AnsiString