The MASM Forum Archive 2004 to 2012

General Forums => The Campus => Topic started by: ChillyWilly on September 17, 2010, 06:27:56 AM

Title: incrementing numbers to get ini key names
Post by: ChillyWilly on September 17, 2010, 06:27:56 AM
I have an .ini file that is setup like this

[User000]
name=bob
[User001]
name=sara
[User002]
name=mike
[User003]
name=fred
[Accounts]
number=4


I use GetPrivateProfileString to get the number of accounts which is ascii "4"
I need to loop through the user names(key names) by incrementing USER000 to User001 and calling GetPrivateProfileString with the key name as user000,user001, etc...

i need a quick and dirty way to loop using the returned ascii account number, which in this case would be 4 loops

then append a 0,1,2,3,etc... to the end of "User00" and call GetPrivateProfileString for each user000,user001,user002,etc...
Title: Re: incrementing numbers to get ini key names
Post by: ChillyWilly on September 20, 2010, 12:53:44 AM
 :boohoo: ended up figuring it out so ill post it here just in case someone else has this issue  :cheekygreen:


GetINISections PROC
    local IniSectionNames[1024]

    invoke GetPrivateProfileSectionNames,addr IniSectionNames, sizeof IniSectionNames,CTEXT(".\accounts.ini")
    add eax,2
    push ebx
      lea ebx,IniSectionNames
.while byte ptr [ebx] != 0
        push ebx
invoke GetPrivateProfileString, ebx,CTEXT("name"),CTEXT("No Name Saved"), ADDR account, 128,CTEXT(".\accounts.ini")
invoke RtlZeroMemory,addr account,sizeof account
invoke MessageBox,0,ADDR account,CTEXT("Account Name"),0
        pop ebx
        invoke lstrlen, ebx
        inc eax
        add ebx,eax
.endw
ret
GetINISections EndP


Title: Re: incrementing numbers to get ini key names
Post by: ragdog on September 20, 2010, 05:33:21 AM
For increment the number of this string user000
use Wsprintf and a loop


push edi
mov edi,0
@@:

.while edi<5
   invoke wsprintf, addr hBuff , CTEXT ("User%03u"), edi
   invoke MessageBox,hWnd,addr hBuff,0,MB_OK
   inc edi
    .endw
   pop edi


Is only a quick example!

I hope it help.

Greets,