Valhalla Legends Forums Archive | Assembly Language (any cpu) | lstrcmp [masm32]

AuthorMessageTime
Metis
I am trying to get the following program to work, I need this option for a program I am writing, but it only works when I use the following line to read into the buffer:
[code]

invoke StdIn,addr buffer,4
[/code]

as soon as I change the '4' into a longer value it won't work anymore...

is there a workaround for this?

Program code:
[code]
.386
.model flat,stdcall
option casemap:none

include \masm32\include\windows.inc
include \masm32\include\kernel32.inc
include \masm32\include\user32.inc
include \masm32\include\masm32.inc

includelib \masm32\lib\kernel32.lib
includelib \masm32\lib\user32.lib
includelib \masm32\lib\masm32.lib

.data

string1 db "Enter: ",0
string2 db 13,10,"equal",0
string3 db 13,10,"not equal",0
teststring db "exit",0
test2 db "exit",0
buffer db 50 dup (?)
vier db "4",0
.code

start:

invoke StdOut,addr string1
invoke StdIn,addr buffer,6
invoke lstrcmpA,addr test2,addr buffer
.if eax==0
invoke StdOut,addr string2
invoke ExitProcess,0
.endif
invoke StdOut,addr string3
invoke ExitProcess,0

end start
[/code]


I've tried adding the ending [color=blue 13 and 10 (CR and LF)[/color] to the buffer and then it works. But this will not work for my program since I need to compare the userinput with the strings generated by the Process32Next API...

Piece of my real program code:
Code:
[code]
invoke Process32Next,[Snap],offset proc32

;if we have finished the last process listing
;------------------------------------------------------
.if eax!=TRUE
jmp again
.endif
;------------------------------------------------------

invoke lstrcmpA, addr ProcToKill,addr proc32.szExeFile
.if eax == 0
jmp contin
.endif
[/code]
April 7, 2005, 7:55 AM
JoeTheOdd
[quote]I've tried adding the ending [color=blue 13 and 10 (CR and LF)[/color] to the buffer and then it works. But this will not work for my program since I need to compare the userinput with the strings generated by the Process32Next API...[/quote]

Can't you do something like this, except not in Java?..
[code]if(userinput + "\n\r" == process32nextret)
{
  //stuff
}[/code]
May 5, 2005, 9:22 PM
Myndfyr
[quote author=Joe[x86] link=topic=11209.msg111190#msg111190 date=1115328175]
[quote]I've tried adding the ending [color=blue 13 and 10 (CR and LF)[/color] to the buffer and then it works. But this will not work for my program since I need to compare the userinput with the strings generated by the Process32Next API...[/quote]

Can't you do something like this, except not in Java?..
[code]if(userinput + "\n\r" == process32nextret)
{
  //stuff
}[/code]
[/quote]
Joe, he wasn't talking about appending a newline to a string.  The strings returned from Process32Next are going to be inside of a structure and null-terminated.  And the lovely string concatenation you use in Java is much more memory-intensive that it seems because you have to generally have to reallocate the string somewhere else in memory.

I'm not familiar with StdIn.  Could you maybe use something like getchar()?
May 6, 2005, 12:07 AM
Metis
It has been about a month since I posted my problem and since then I've fixed the error, thank you anyway.
May 6, 2005, 11:32 PM

Search