首页
社区
课程
招聘
汇编中如何把一个字符串连接到另一个字符串的前面?
发表于: 2010-1-24 02:10 5424

汇编中如何把一个字符串连接到另一个字符串的前面?

2010-1-24 02:10
5424
汇编中如何把一个字符串连接到另一个字符串的前面?
像lstrcat只能把字符串附加到后面,但是有没有附加到字符串到另一个字符串后面的函数呢?
百度Google未果,所以上来求助。话说这几天感觉baidu google打开都很慢,难道是心理作用

.data?
szListName        db        32        dup(?)
szDirPath        db        256        dup(?)
stTvitem        TV_ITEM <>
.code
…………
invoke        RtlZeroMemory,addr szDirPath,sizeof szDirPath
invoke        SendMessage,hWndTreeView,TVM_GETNEXTITEM,TVGN_CARET,0                        ;返回选中节点的句柄
.while        ( eax != 0 )       
mov        stTvitem.hItem,eax
mov        stTvitem._mask,TVIF_TEXT
mov        stTvitem.pszText,offset szListName                                        ;用来保存选中节点的名称
mov        stTvitem.cchTextMax,sizeof szListName
invoke        SendMessage,hWndTreeView,TVM_GETITEM,0,addr stTvitem
invoke        lstrcat,addr szDirPath,addr szListName                                        ;连接字符串
invoke        SendMessage,hWndTreeView,TVM_GETNEXTITEM,TVGN_PARENT,stTvitem.hItem        ;返回选中节点的父句柄
.endw
invoke        SendDlgItemMessage,hWinMain,IDC_TEXT,LB_INSERTSTRING,0,addr szDirPath
…………

+小学
.....+理科
..........+物理
...............第一章

本来想用汇编返回选中TreeView视图中节点的全路径。
如上图,"第一章" 是选中的节点,"小学"是根节点。
点击"第一章",上面的代码循环只能返回 "第一章物理理科小学"。
但是我想实现的是点击"第一章",循环后返回"小学理科物理第一章"。该如何实现?用变通的方法实现也可以。

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (8)
雪    币: 452
活跃值: (72)
能力值: ( LV9,RANK:330 )
在线值:
发帖
回帖
粉丝
2
你把两个字符串顺序交换一下,不就行了吗
要AB还是BA,就取决于A+B还是B+A了
2010-1-24 02:20
0
雪    币: 0
活跃值: (135)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
lstrcat  4.31.22 lstrcat
  函数功能:该函数将一个字符串附加在另一个字符串后面。
  函数原型:LPTSTR lstrcat(LPTSTR lpString1,LPCTSTR lpString2);
  参数:
  lpString1:一个以NULL为终止符字符串指针。这个缓冲区必须足够大能包含两个字符串。
  lpString2:一个以NULL为终止符字符串指针,它将追加在由lpString1中指定。这个缓冲区必须足够大能包含两个字符串。
  返回值:若函数运行成功,返回值指向缓冲区;若失败,则返回值为NULL。若想获得更多错误信息,请调用GetLastError函数。
  速查:Windows NT 3.1、Windows 95以上,头文件:winbase.h;库文件:kernel32.lib;Unicode;在Windows NT上实现为Unicode和ANSI两种版本。
2010-1-24 11:00
0
雪    币: 145
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
弱弱的问一下,汇编里如何交换字符串顺序?
2010-1-24 13:31
0
雪    币: 2067
活跃值: (82)
能力值: ( LV9,RANK:180 )
在线值:
发帖
回帖
粉丝
5
因为是汇编
所以要自己写程序
2010-1-24 13:33
0
雪    币: 1981
活跃值: (771)
能力值: ( LV13,RANK:420 )
在线值:
发帖
回帖
粉丝
6
……-_-………
2010-1-24 14:20
0
雪    币: 145
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
.data?
szListName	db	32	dup(?)
szDirPath	db	256	dup(?)
stTvitem	TV_ITEM <>
.code
…………
invoke	RtlZeroMemory,addr szDirPath,sizeof szDirPath
invoke	SendMessage,hWndTreeView,TVM_GETNEXTITEM,TVGN_CARET,0			;返回选中节点的句柄
.while	( eax != 0 )	
mov	stTvitem.hItem,eax
mov	stTvitem._mask,TVIF_TEXT
mov	stTvitem.pszText,offset szListName					;用来保存选中节点的名称
mov	stTvitem.cchTextMax,sizeof szListName
invoke	SendMessage,hWndTreeView,TVM_GETITEM,0,addr stTvitem
invoke	lstrcat,addr szDirPath,addr szListName					;连接字符串
invoke	SendMessage,hWndTreeView,TVM_GETNEXTITEM,TVGN_PARENT,stTvitem.hItem	;返回选中节点的父句柄
.endw
invoke	SendDlgItemMessage,hWinMain,IDC_TEXT,LB_INSERTSTRING,0,addr szDirPath


+小学
.....+理科
..........+物理
...............第一章

本来想用汇编返回选中TreeView视图中节点的全路径。
如上图,"第一章" 是选中的节点,"小学"是根节点。
点击"第一章",上面的代码循环只能返回 "第一章物理理科小学"。
但是我想实现的是点击"第一章",循环后返回"小学理科物理第一章"。该如何实现?用变通的方法实现也可以。
2010-1-24 15:03
0
雪    币: 145
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
倒过来连接后
    invoke        lstrcat,addr szListName,addr szDirPath
再把连接后的内容copy到szDirPath里,注意内存大小分配。
   invoke        lstrcpy,addr szDirPath,addr szListName

已解决,结贴。
2010-1-24 16:52
0
雪    币: 65
活跃值: (12)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
其实在调用这个函数的时候,就是将两个参数入贱嘛,
、不是有2个参数吗?

吧这个的顺序调换一下不就行了吗?
2010-1-24 22:25
0
游客
登录 | 注册 方可回帖
返回
//