|
Being slightly cynical addition sounds like the operator you neeed... With your statements val is going to end up containing 1004 as there's a large overlap in the bits set between the bit pattern for 1000 (1111101000b) and the bit pattern for 100 (1100100b).
If you're trying to fiddle individual bits (i.e. turn bits with OR 1, turn them off with AND 0) then perhaps encode your numbers as powers of two and/or use hex:
if( a == 5 )
val |= 0x1000;
if( b == 20 )
val |= 0x100;
Cheers,
Ash
PS: Another way of setting and resetting individual bits is to use bit fields. Perhaps they might be more in tune with what you want?
|
|
|
|
|
int blo=0;
for(int i=0; i< New.GetLength(); i++ )
{
if(isalpha(New.GetAt(i)))
{
blo |=0x1000;
if(isupper(New.GetAt(i)))
blo |= 0x100;
else
blo |=0x10;
}
}
if i try it with Blood what will give me is 4352 or what i need is 1100 (1000 for being an alpha and 100 for being uppercase¨.
"The Ultimate Limit Is Only Your Imagination."
|
|
|
|
|
Blood_HaZaRd wrote: if i try it with Blood what will give me is 4352 or what i need is 1100...
You are confusing base-10 with base-16.
"One man's wage rise is another man's price increase." - Harold Wilson
"Fireproof doesn't mean the fire will never come. It means when the fire comes that you will be able to withstand it." - Michael Simmons
"Man who follows car will be exhausted." - Confucius
|
|
|
|
|
So are you trying to get a count of the number of alpha characters, the number of uppercase and the number of lowercase and encode them into a set of decimal digits?
|
|
|
|
|
i dont need to count them but what i need is
if the user typed all uppercases the res will be 1000. if he typed only locases it ll be 100 if he typed both it will 1100.
i need sth like this coz i have more checking to do for numbers, dots. so let's say if he typed one upper, 5 low, 3 digits and zero dot the result ll be 1101
"The Ultimate Limit Is Only Your Imagination."
|
|
|
|
|
const DWORD TypeUpper = 0x00001000;
const DWORD TypeLower = 0x00000100;
const DWORD TypeDot = 0x00000001;
...
DWORD characterTypes = 0;
loop
{
if (isupper(...))
characterTypes |= TypeUpper;
else if (isdot(...))
characterTypes |= TypeDot;
else if (...)
...
}
if (characterTypes == TypeUpper)
cout << "contains only uppercase letters\n";
else if (characterTypes & TypeUpper)
cout << "contains at least one uppercase letter\n";
if (characterTypes == TypeLower)
cout << "contains only lowercase letters\n";
else if (characterTypes & TypeLower)
cout << "contains at least one lowercase letter\n";
...
cout.flush();
|
|
|
|
|
In that case I'd use a union of bit fields and an integer. Then you can set bits to your hearts content and read it as a number, something like:
union
{
struct
{
unsigned has_upper_case_ : 1;
unsigned has_lower_case_ : 1;
unsigned has_a_digit_ : 1;
unsigned has_dot_ : 1;
} bits_;
unsigned as_number_;
}
text_flags;
Then you can use it like:
text_flags.as_number_ = 0;
text_flags.bits_.has_a_digit_ = 1;
std::cout << text_flags.as_number_ << std::endl;
That'll print 2 on any compiler that arranges the bit fields from lowest significance to highest. I can't remember if the standard says anything about the ordering of bits - it's not the sort of thing I play with that often - so check that the ordering is what you'd expect.
IF you do use something like this you can add a constructor and members to your union. That might be an idea to save fannying about remembering to zero the thing and you could have set and reset methods.
Cheers,
Ash
PS: There's a good description of bit fields in "The C++ Programming Language" 3rd edition if you get stuck and want help from the great man himself. I think he uses the page tables of a RISC processor as somewhere you could use bit fields like this.
PPS: Corrected a typo in the code, bits in the declaration of the union didn't have the trailing underscore I gave it in use.
modified on Thursday, June 10, 2010 4:02 AM
|
|
|
|
|
Thank you soo much the first one runs great the secondm francly i didn't undestand it so i ll try it later anyway thank you again for your great help
"The Ultimate Limit Is Only Your Imagination."
|
|
|
|
|
may be i need some var type instead of the int .... what kind of var should i use to hold the 11101110 (byte
"The Ultimate Limit Is Only Your Imagination."
|
|
|
|
|
Hello All.,
How can i make my service to run before log in? .. Following is my code to create the service...
BOOL InstallService()
{
char strDir[1024];
SC_HANDLE schSCManager,schService;
GetCurrentDirectory(1024,strDir);
strcat(strDir,"\\Session_Service.exe");
schSCManager = OpenSCManager(NULL,NULL,SC_MANAGER_ALL_ACCESS);
if (schSCManager == NULL)
return false;
LPCTSTR lpszBinaryPathName = strDir;
schService = CreateService(schSCManager,
szServiceName,
szServiceName,
SERVICE_ALL_ACCESS,
SERVICE_WIN32_OWN_PROCESS,
SERVICE_AUTO_START,
SERVICE_ERROR_NORMAL,
lpszBinaryPathName,
"Base",
NULL,
NULL,
NULL,
NULL);
if (schService == NULL)
return false;
CloseServiceHandle(schService);
return true;
}
|
|
|
|
|
If the CreateService returns success, this is all you need for the service to start before log in.
What is the problem here?
Does it not start?
|
|
|
|
|
Yes it return success, I'm sure about this, I'm actually handling session change notifications including Logon, Logoff, Lock and Unlock... When i restart my machine then it didn't catch the logon notofication, But when i logoff and then logon again it catches and write log to support that user has logged on..
|
|
|
|
|
You could try without defining a load order group.
|
|
|
|
|
I was doing that initially, But then i saw This thread which makes me to change the CreateService...
|
|
|
|
|
Hi all.
I need to get non-persistent cookie from IE8 process.
I use ReadProcessMemory API.
Since the key never changes there is no problem to locate it in the memory using simple scaning.
But it appears that coockie's value doesn't comes after the key in the memory.
Is there any way to locate the cookie's value while only the key known?
thatnks.
|
|
|
|
|
Have you considered writing a BHO for IE?
Your BHO would be loaded into the IE address space, and would have access to the cookie object model.
|
|
|
|
|
Using ReadPRocessMemory .... I give you points for determination.
Steve
|
|
|
|
|
I have a program which, among other things, is deleting completed-tasks file(s). I am using the SHFileOperation with FOF_ALLOWUNDO. I am displaying a warning "are you sure..." to the user before deleting.
Apparently, there are cases where files are not moved to the recycle bin but are deleted permanently even if the flag ALLOWUNDO is set (if they reside on network drives, removable drives or if they are too large). In this case I want the warning message to tell the user that the files are going to be deleted permanently and not be sent to the recycle bin (as explorer does).
How do I know if a file is going to be deleted permanently or is going to be send to the recycle bin?
thanks,
|
|
|
|
|
|
Niklas, this message comes -after- my own delete message confirmation (i'm running the SHFileOperation command in silent mode using FOF_SILENT). I'm displaying the user my own confirmation details which is different than explorer's, it contains some details about a task that was ended, and there's no need for an extra confirmation.
Is there a way I can know in advance wherever a file is going to the recycle bin or not? how does explore does that?
I've tried querying the folder with GetAttributesOf, but I can't find a flag to indicate this.
thanks,
|
|
|
|
|
elie002 wrote: ...if they reside on network drives, removable drives or if they are too large).
The first two can easily be checked beforehand.
For the last, can you check if SHFileOperation() returns DE_FILE_TOO_LARGE ? As has already been mentioned, I think FOF_WANTNUKEWARNING is a better choice.
"One man's wage rise is another man's price increase." - Harold Wilson
"Fireproof doesn't mean the fire will never come. It means when the fire comes that you will be able to withstand it." - Michael Simmons
"Man who follows car will be exhausted." - Confucius
|
|
|
|
|
David, maybe it's better for me to check if the file is too large (so I'll know if it goes to the recycle bin or not) - as I need this information before calling SHFileOperation.
I'm doing some tests to verify the size which, above it, explorer deletes the files permanently.
thanks-
|
|
|
|
|
Hi,
If we close a window application in task manager using end process method, the applcation should get some message to close the window. Can anyone please tell me what message that window applcation will get from task manager?
Thanks,
|
|
|
|
|
|
i put breakpoint in close and destroy windows message while debugging and closed the applcation via task manager,but control is not coming to that function. The applcation closes suddenly.
|
|
|
|