benners Posted November 11, 2007 Share Posted November 11, 2007 I am trying to write a simple program where the person enters their MSN Passport ID ( the e-mail with which they registered on MSN) and is given a hash calculated from the addy.It is going to be used in an installer for Windows Live Messenger as some of the tweaks I am adding are only added to a registry key under the users hash. For testing purposes I am using an input box to return the hash, although the returned number is way off base.Here is the code I am trying to imitateint getUserId(LPTSTR user) { unsigned int x = 0; for (int i = 0; i < strlen(user); i++) { x = x * 101; x = x + towlower(user[i];); } return x; }Info can be found Here and Here adn an online convertor can be found Here.This is my code which is totally wrong but I cannot get it to work$string = InputBox('Passport ID', 'Please enter your MSN Passport e-mail', '', '', '', 120) Dim $x = 0 For $i = 1 To StringLen($string) $x = $x * 101 $x = $x + Asc(StringMid($string, $i, 1)) Next InputBox('Passport ID', 'Your MSN Used ID is :', $x, '', '', 120)Hopefully someone can point out the obvious Thank You Link to comment Share on other sites More sharing options...
Moderators SmOke_N Posted November 11, 2007 Moderators Share Posted November 11, 2007 Asc(StringLower(StringMid($string, $i, 1))) ? Common sense plays a role in the basics of understanding AutoIt... If you're lacking in that, do us all a favor, and step away from the computer. Link to comment Share on other sites More sharing options...
benners Posted November 11, 2007 Author Share Posted November 11, 2007 Asc(StringLower(StringMid($string, $i, 1)))?Nah! I already tried that before, the installer will use an edit box that converts the text to lower case, but whilst struggling to get the code to work I switched to an input box and only use lower case. Link to comment Share on other sites More sharing options...
Moderators SmOke_N Posted November 11, 2007 Moderators Share Posted November 11, 2007 (edited) Nah! I already tried that before, the installer will use an edit box that converts the text to lower case, but whilst struggling to get the code to work I switched to an input box and only use lower case.Well, I checked the output of the online thing, to what I just put up there, and it was the same.Edit:I only put in 3 chars... now that I've put in more, the result is not the same. Edited November 11, 2007 by SmOke_N Common sense plays a role in the basics of understanding AutoIt... If you're lacking in that, do us all a favor, and step away from the computer. Link to comment Share on other sites More sharing options...
benners Posted November 11, 2007 Author Share Posted November 11, 2007 Well, I checked the output of the online thing, to what I just put up there, and it was the same.Thanks for the replies, We must be doing something different If I use me@hotmail.com as the e-mail addy I get different numbers, 1. Online checker = 2408776353 correct2. My code = -2470479917988248927 The stringlower isn't doing anything as the e-mail is already lower case. What steps did you follow?. Link to comment Share on other sites More sharing options...
Moderators SmOke_N Posted November 11, 2007 Moderators Share Posted November 11, 2007 I think the issue you are having is reaching AutoIts max for integer numbers... Although off the top of my head, i can't recall what that is. Common sense plays a role in the basics of understanding AutoIt... If you're lacking in that, do us all a favor, and step away from the computer. Link to comment Share on other sites More sharing options...
Moderators SmOke_N Posted November 11, 2007 Moderators Share Posted November 11, 2007 Here, try this:$string = "me@hotmail.com";InputBox('Passport ID', 'Please enter your MSN Passport e-mail', '', '', '', 120) Dim $tStruct = DllStructCreate("uint") For $i = 1 To StringLen($string) DllStructSetData($tStruct, 1, DllStructGetData($tStruct, 1) * 101) DllStructSetData($tStruct, 1, DllStructGetData($tStruct, 1) + Asc(StringLower(StringMid($string, $i, 1)))) Next InputBox('Passport ID', 'Your MSN Used ID is :', DllStructGetData($tStruct, 1), '', '', 120) Common sense plays a role in the basics of understanding AutoIt... If you're lacking in that, do us all a favor, and step away from the computer. Link to comment Share on other sites More sharing options...
benners Posted November 11, 2007 Author Share Posted November 11, 2007 I think the issue you are having is reaching AutoIts max for integer numbers... Although off the top of my head, i can't recall what that is.I was just browsing the help file and looking at stringformat to see if anything there would help, I think the limit is 65535. Link to comment Share on other sites More sharing options...
benners Posted November 11, 2007 Author Share Posted November 11, 2007 Here, try this:$string = "me@hotmail.com";InputBox('Passport ID', 'Please enter your MSN Passport e-mail', '', '', '', 120) Dim $tStruct = DllStructCreate("uint") For $i = 1 To StringLen($string) DllStructSetData($tStruct, 1, DllStructGetData($tStruct, 1) * 101) DllStructSetData($tStruct, 1, DllStructGetData($tStruct, 1) + Asc(StringLower(StringMid($string, $i, 1)))) Next InputBox('Passport ID', 'Your MSN Used ID is :', DllStructGetData($tStruct, 1), '', '', 120)Nice 1 Sm0ke, it works now I just need to read through the help file and understand the code, Thanks Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now