Author | Message | Time |
---|---|---|
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 |