get_int.asm

来自「一个十六进制编辑器源代码,cool!」· 汇编 代码 · 共 34 行

ASM
34
字号
_GetInt proto:DWORD ,:DWORD 
.code
;++++++++++取得一个EDIT控件的值,并自动判断是10进制,还是16进制+++++++++++++
_GetInt proc uses esi edx ecx @hDlg,nID
Local @szBuf[100]:BYTE
	lea esi,@szBuf
	invoke SendDlgItemMessage,@hDlg,nID,WM_GETTEXT ,100,esi
	mov dl,[esi]
	mov dh,[esi+1]
	mov cl,[esi+eax-1]
	mov ch,dl
	.if dx=='x0' || dx=='X0' || dx=="H&" || dx=="h&" ;是否为16进制
		lea eax,[esi+2]
		invoke h2dw,eax
	.elseif cl=='h' || cl=='H' ;是否为16进制
		mov BYTE ptr [esi+eax-1],0;去掉最后的h或H
		invoke H2DW,esi
	.else ;没有0x开头,也没有h结尾,则看是否包含a-f(A-F),如果包含,则是16进制,否则是十进制数值
		mov edx,esi
		lodsb
		.while al
			.if (al>='a' && al<='f') || (al>='A' && al<='F')
				invoke H2DW,edx
				ret
			.endif
			lodsb
		.endw			
		invoke GetDlgItemInt,@hDlg,nID,0,0
	.endif
	ret		
_GetInt endp
;---------------------------

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?