首页
社区
课程
招聘
请问有没有判断字符串相等的api函数
发表于: 2006-12-14 12:26 7051

请问有没有判断字符串相等的api函数

2006-12-14 12:26
7051
收藏
免费 0
支持
分享
最新回复 (18)
雪    币: 846
活跃值: (221)
能力值: (RANK:570 )
在线值:
发帖
回帖
粉丝
2
自己用汇编写
2006-12-14 12:30
0
雪    币: 209
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
我想做一个验证语句,想在edit文本框里输入12345如果与比较值12345相同就跳出。请问该怎么写汇编语句?
2006-12-14 12:35
0
雪    币: 209
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
是这样的,我想把一个edit文本值如12345与我预定的12345比较,如果相同就跳出来,请问怎么写这个汇编语句?
2006-12-14 12:37
0
雪    币: 209
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
想走捷径,又找不到API函数是哪个^_^
2006-12-14 12:38
0
雪    币: 209
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
想走捷径,又找不到API函数是哪个?
2006-12-14 12:43
0
雪    币: 846
活跃值: (221)
能力值: (RANK:570 )
在线值:
发帖
回帖
粉丝
7
用汇编实现超简单啊。。。5位数字也没必要用优化算法。。直接一个BYTE减另外一个BYTE就OK了。。不等于0就调试循环。。
2006-12-14 17:33
0
雪    币: 2384
活跃值: (766)
能力值: (RANK:410 )
在线值:
发帖
回帖
粉丝
8
if(lstrcmp(str1,str2))
....
else
....
2006-12-14 21:02
0
雪    币: 209
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
谢谢,这个函数在kernel32.dll里面有,可是我想用lstrcmp读edit.text的值来与s123比较,比如lstrcmp('edit1.text','s123')=0 这样的语句括号里写'edit1.text'却不不是edit1.text的值,去掉''又不执行,。。。该怎么办?
2006-12-14 22:36
0
雪    币: 209
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
终于搞好了,括号里的写法改为:(pchar(edit1.text),'s123')就好了!
即 if lstrcmp(pchar(edit1.text),'s123')=0 then .....但不知这个 lstrcmp(pchar(edit1.text),'s123')=0 在汇编语句里怎么表述的?
2006-12-14 22:43
0
雪    币: 209
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
004414FC  /. 55             PUSH EBP
004414FD  |. 8BEC           MOV EBP,ESP
004414FF  |. 6A 00          PUSH 0
00441501  |. 53             PUSH EBX
00441502  |. 8BD8           MOV EBX,EAX
00441504  |. 33C0           XOR EAX,EAX
00441506  |. 55             PUSH EBP
00441507  |. 68 64154400    PUSH Project1.00441564
0044150C  |. 64:FF30        PUSH DWORD PTR FS:[EAX]
0044150F  |. 64:8920        MOV DWORD PTR FS:[EAX],ESP
00441512  |. 68 70154400    PUSH Project1.00441570     ;  ASCII "s123"
00441517  |. 8D55 FC        LEA EDX,DWORD PTR SS:[EBP-4]
0044151A  |. 8B83 D0020000  MOV EAX,DWORD PTR DS:[EBX+2D0]
00441520  |. E8 170DFEFF    CALL Project1.0042223C
00441525  |. 8B45 FC        MOV EAX,DWORD PTR SS:[EBP-4]
00441528  |. E8 DF27FCFF    CALL Project1.00403D0C
0044152D  |. 50             PUSH EAX                      ; |String1
0044152E  |. E8 C94BFCFF    CALL <JMP.&kernel32.lstrcmpA> ; \lstrcmpA
00441533  |. 85C0           TEST EAX,EAX
00441535  |. 75 07          JNZ SHORT Project1.0044153E
00441537  |. 8BC3           MOV EAX,EBX
00441539  |. E8 2AB6FFFF    CALL Project1.0043CB68
0044153E  |> BA 80154400    MOV EDX,Project1.00441580   ;ASCII "error"
00441543  |. 8B83 D8020000  MOV EAX,DWORD PTR DS:[EBX+2D8]
00441549  |. E8 1E0DFEFF    CALL Project1.0042226C
0044154E  |. 33C0           XOR EAX,EAX
00441550  |. 5A             POP EDX
00441551  |. 59             POP ECX
00441552  |. 59             POP ECX
00441553  |. 64:8910        MOV DWORD PTR FS:[EAX],EDX
00441556  |. 68 6B154400    PUSH Project1.0044156B
0044155B  |> 8D45 FC        LEA EAX,DWORD PTR SS:[EBP-4]
0044155E  |. E8 6523FCFF    CALL Project1.004038C8
00441563  \. C3             RETN
2006-12-14 23:17
0
雪    币: 209
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
00403D0C  /$ 85C0           TEST EAX,EAX
00403D0E  |. 74 02          JE SHORT Project1.00403D12
00403D10  |. C3             RETN
00403D11  |  00             DB 00
00403D12  |> B8 113D4000    MOV EAX,Project1.00403D11
00403D17  \. C3             RETN
2006-12-14 23:18
0
雪    币: 209
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
用了这个lstrcmp函数,汇编语句少多了^_^
再次谢谢『Win32/Win64编程』版主帮我找到了可用的API函数^_^
2006-12-14 23:21
0
雪    币: 846
活跃值: (221)
能力值: (RANK:570 )
在线值:
发帖
回帖
粉丝
14
VC真麻烦,搞这么多函数,搞这么多规则。。。
用汇编写,早写好了。。。

参考新兵训练场第一期第一题那个NATIVE API的反汇编代码。。。

程序小了,是以运行效率为代价的。。。而且有时编译器也未必会用API。。
2006-12-14 23:39
0
雪    币: 258
活跃值: (230)
能力值: ( LV12,RANK:770 )
在线值:
发帖
回帖
粉丝
15
int     __cdecl memcmp(const void *, const void *, size_t);
        
int     __cdecl strcmp(const char *, const char *);
2006-12-15 14:17
0
雪    币: 201
活跃值: (32)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
最初由 笨笨雄 发布
VC真麻烦,搞这么多函数,搞这么多规则。。。
用汇编写,早写好了。。。

参考新兵训练场第一期第一题那个NATIVE API的反汇编代码。。。

........


楼主那个是delphi的
2006-12-15 14:55
0
雪    币: 209
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
还有更好的吗?
目标为:找到edit1.text框里面的字符值,去与预定的字符如s123比较,
如果相同就转出到retn,如果不同就显示“error”
如果有很精练的反汇编语句,请贴出来用用^_^
2006-12-15 15:37
0
雪    币: 234
活跃值: (25)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
18
我本人是不太习惯用汇编写程序了,主要是效率不高。不过我可以给你一点小建议。
对于不太熟悉又比较复杂的过程。你可以先用自己熟悉的语言写出来,然后再用OD或W32DASM反汇编察看他的ASM的写法
2006-12-16 23:15
0
雪    币: 367
活跃值: (20)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
19
TCHAR szBuff[21];
GetDlgItemText(WinhWnd,IDC_EDIT1,szBuff,20);
if (lstrcmp(szBuff,TEXT("12456"))==0)//same
{
  //okay,do things you want

}
else//diff
{
//error,do things you want

}

自己写的汇编码,未必一定快过API,API的函数在调用之前,已在内存,和调用自己的函数速度是一样的

如果程序高度追求快速,且对文件大小非常敏感,当然首选汇编,否则,用高级语言吧,便于以后维护(对自己阅读方便,对接班人门槛比较低),便于迁移到64位平台,....
2006-12-17 21:19
0
游客
登录 | 注册 方可回帖
返回
//