|
You are not interested in money, I have a big money-making business to find someone to co-operation, preferably a six-man team, the language proficiency need to compile C + + VB and reverse compile, add my MSN ootp2010@hotmai.com interested
|
|
|
|
|
Hello
I should make a computer shop with c++ using classes. Please help me anyway you can.
|
|
|
|
|
Start by reading some books and learning C++. There are also lots of articles here on CodeProject with ideas for almost anything you want to do; take a look at some of them, you will find it a rewarding experience.
Just say 'NO' to evaluated arguments for diadic functions! Ash
|
|
|
|
|
I have the problem tasking get file using sftp in MFC.Can you help me?You can give me a demo code about this problem.I thank you very much.
|
|
|
|
|
Well just look[^] what Google turned up!
Just say 'NO' to evaluated arguments for diadic functions! Ash
|
|
|
|
|
Hey Friends
I need to know in an application whether the OS is 32 or 64 Bit.
My Code is compiled in 32 bit and is running on a 64 bit pc.
Tried
if(sizeof(void *)==8)
{
//64 Bit
}
else
{
//32 Bit
}
Does not Works
Regards
|
|
|
|
|
there is at least one Tip/Trick on this subject, with some alternates; none of them I consider satisfactory though, and I haven't found the right approach yet.
There are three levels to the problem:
- what is my application doing?
- what is my operating system capable of?
- if running on a virtual machine, what is my physical machine capable of?
First make sure which question you need answered.
FWIW: Are you sure you want a managed code (i.e. .NET) solution, or are you a native C++ speaker, simply lost in the wrong forum? (the C/C++/MFC forum is for native code!).
|
|
|
|
|
Luc Pattyn wrote: I haven't found the right approach yet.
Nor me. You would think that a simple API call somewhere could do this.
Just say 'NO' to evaluated arguments for diadic functions! Ash
|
|
|
|
|
This will never work because sizeof() is evaluated by the compiler so it will tell you the size of a void* on the system that it is compiled on. I just tried a Google on this and there does not seem to be an obvious answer to do it programatically; maybe one of the other geeks here knows the answer.
Just say 'NO' to evaluated arguments for diadic functions! Ash
|
|
|
|
|
What i understand is that you want to know that is OS is 32 bit or 64 bit...
BOOL XYZ::Is64BitOS()
{
SYSTEM_INFO sysInfo;
GetSystemInfo(&sysInfo);
if((sysInfo.wProcessorArchitecture == PROCESSOR_ARCHITECTURE_AMD64) || (sysInfo.wProcessorArchitecture == PROCESSOR_ARCHITECTURE_IA64))
return TRUE;
return FALSE;
}
Yes U Can ...If U Can ,Dream it , U can do it ...ICAN
|
|
|
|
|
Hey thanks, you got it correct but somehow the code did not worked, but i googled with your input and found an alternative which worked.
BOOL Is64BitWindows()
{
#if defined(_WIN64)
return TRUE; // 64-bit programs run only on Win64
#elif defined(_WIN32)
// 32-bit programs run on both 32-bit and 64-bit Windows
// so must sniff
BOOL f64 = FALSE;
return IsWow64Process(GetCurrentProcess(), &f64) && f64;
#else
return FALSE; // Win64 does not support Win16
#endif
}
Thanks a lot.
|
|
|
|
|
Most Welcome
Yes U Can ...If U Can ,Dream it , U can do it ...ICAN
|
|
|
|
|
This is still wrong! If you compile this code on a system where _WIN64 is defined then the generated code will return TRUE from the Is64BitWindows() function. However if you then run that same code on a 32 bit system it will still return TRUE and your program will most likely fail. You need to understand the difference between compile time and run time tests.
Just say 'NO' to evaluated arguments for diadic functions! Ash
|
|
|
|
|
<blockquote class="FQ"><div class="FQA">Richard MacCutchan wrote:</div>This is still wrong! If you compile this code on a system where _WIN64 is defined then the generated code will return TRUE from the Is64BitWindows() function</blockquote>
The _WIN64 macro is a Microsoft compiler option that indicates that the code is being compiled for 64 bits.
The following link says that is what it is.
http://msdn.microsoft.com/en-us/library/b0084kay.aspx[^]
So excluding someone using that macro incorrectly (if even possible) the compiled code would then be compiled to run on 64 bits.
And a 64 bit application won't run on a 32 bit machine - right?
So what would be the situation where it returns an incorrect result?
|
|
|
|
|
jschell wrote: And a 64 bit application won't run on a 32 bit machine - right?
Correct.
jschell wrote: So what would be the situation where it returns an incorrect result?
I'm not sure that I understand your question fully. However in the case above that I commented on, if the code is compiled on a system with _WIN64 defined, and then run on a 32 bit system, it wil return TRUE from that function thus thinking that it is on a 64-bit system. I have no idea what the outcome would be but I would expect it to fail at some point.
Just say 'NO' to evaluated arguments for diadic functions! Ash
|
|
|
|
|
Richard MacCutchan wrote: However in the case above that I commented on, if the code is compiled on a system with _WIN64 defined, and then run on a 32 bit system, it wil return TRUE from that function thus thinking that it is on a 64-bit system.
The _WIN64 is a VS compiler macro that is only defined when VS is set up to compile to a 64 bit binary.
A 64 bit binary will not run on a 32 bit platform.
If both of those are true then the result of the method is irrelevant.
Do you believe that one of those is false?
If so why?
|
|
|
|
|
jschell wrote: If both of those are true then the result of the method is irrelevant.
Quite possibly, but the thinking behind the code is still flawed.
Just say 'NO' to evaluated arguments for diadic functions! Ash
|
|
|
|
|
I have been reflecting on this point and your answer. I think the reason for my comments was based on a situation I had when working on a multi-platform system some years ago. We had a similar situation where our manager insisted the code by written with #ifdef 's, even though we had explained to him that it needed to be execution time tests. After releasing the code we were proved right and the manager's career did not last much longer. As you pointed out, this situation is somewhat different.
Just say 'NO' to evaluated arguments for diadic functions! Ash
|
|
|
|
|
Richard MacCutchan wrote: We had a similar situation where our manager insisted the code by written with #ifdef's, even though we had explained to him that it needed to be execution time tests.
I don't understand that comment.
If I am targetting a 32 bit platform and a 64 bit platform then I would really expect that I must run two complete set of tests, one on the 32 and one the 64 bit.
And if the functionality was different at a minimum I would loudly and repeatedly state that I would expect it to fail if it wasn't tested on a specific target. I would be nervous even if it was exactly the same. Especially with C++ (or C.)
|
|
|
|
|
jschell wrote: I don't understand that comment.
I can't make it any clearer.
Just say 'NO' to evaluated arguments for diadic functions! Ash
|
|
|
|
|
Essential, if you are compiling a 64 bit application, the compiler would define _WIN64 and since that application would not run on a 32 bit OS, then in that case, it is essentially pointless to actually check the OS. If the OS would have been 32 bits, the application would have fail to load.
Identifier starting with underscore are supposed to be reserved to the compiler so if someone use them anyway the result might be undefined.
Thus only when the application is compiled in 32 bits, it is necessary to do the test.
Philippe Mori
|
|
|
|
|
|
hi
i finally figuered out how to use the binding source commponent of visual c++/cli and i find it really usefull.
i created my own class and assigned it to the bindingsource:
form1BindingSource->Add(gcnew class_constructor_here(textBox1->Text, var1));
now my problem is that the "data" is only stored temporary, so if i close my form program the data is lost.
how can i save the form1BindingSource to a sql database?
i already figuered out how to mke an connection to the database...:
String^ connectString = "Data Source=.\SQLEXPRESS;AttachDbFilename=\"database.mdf\";Integrated Security=True;Connect Timeout=30;User Instance=True";
using (SqlConnection connection = gcnew SqlConnection(connectString))
{
}
now can someone please givve me some hints or tutorials how to save my form1BindingSource to the database?
please... i can't find any usefull stuff in google
thx
sam
|
|
|
|
|
Hi,
I need to program PIC 16F876A to control MCP2515 CAN controller? Anyone got any experience or example to shared? I having trouble in understanding the example code i found.
unsigned char Can_Init_Flags, Can_Send_Flags, Can_Rcv_Flags;
unsigned char Rx_Data_Len;
char RxTx_Data[8];
char Msg_Rcvd;
const long ID_1st = 12111, ID_2nd = 3;
long Rx_ID;
void main() {
PORTC = 0;
TRISC = 0;
Can_Init_Flags = 0;
Can_Send_Flags = 0;
Can_Rcv_Flags = 0;
Can_Send_Flags = _CAN_TX_PRIORITY_0 &
_CAN_TX_XTD_FRAME &
_CAN_TX_NO_RTR_FRAME;
Can_Init_Flags = _CAN_CONFIG_SAMPLE_THRICE &
_CAN_CONFIG_PHSEG2_PRG_ON &
_CAN_CONFIG_XTD_MSG &
_CAN_CONFIG_DBL_BUFFER_ON &
_CAN_CONFIG_VALID_XTD_MSG;
CANInitialize(1,3,3,3,1,Can_Init_Flags);
CANSetOperationMode(_CAN_MODE_CONFIG,0xFF);
CANSetMask(_CAN_MASK_B1,-1,_CAN_CONFIG_XTD_MSG);
CANSetMask(_CAN_MASK_B2,-1,_CAN_CONFIG_XTD_MSG);
CANSetFilter(_CAN_FILTER_B2_F4,ID_2nd,_CAN_CONFIG_XTD_MSG);
CANSetOperationMode(_CAN_MODE_NORMAL,0xFF);
RxTx_Data[0] = 9;
CANWrite(ID_1st, RxTx_Data, 1, Can_Send_Flags);
while(1) {
Msg_Rcvd = CANRead(&Rx_ID , RxTx_Data , &Rx_Data_Len, &Can_Rcv_Flags);
if ((Rx_ID == ID_2nd) && Msg_Rcvd) {
PORTC = RxTx_Data[0];
RxTx_Data[0]++ ;
Delay_ms(10);
CANWrite(ID_1st, RxTx_Data, 1, Can_Send_Flags);
}
}
}
unsigned char Can_Init_Flags, Can_Send_Flags, Can_Rcv_Flags;
unsigned char Rx_Data_Len;
char RxTx_Data[8];
char Msg_Rcvd;
const long ID_1st = 12111, ID_2nd = 3;
long Rx_ID;
void main() {
PORTC = 0;
TRISC = 0;
Can_Init_Flags = 0;
Can_Send_Flags = 0;
Can_Rcv_Flags = 0;
Can_Send_Flags = _CAN_TX_PRIORITY_0 &
_CAN_TX_XTD_FRAME &
_CAN_TX_NO_RTR_FRAME;
Can_Init_Flags = _CAN_CONFIG_SAMPLE_THRICE &
_CAN_CONFIG_PHSEG2_PRG_ON &
_CAN_CONFIG_XTD_MSG &
_CAN_CONFIG_DBL_BUFFER_ON &
_CAN_CONFIG_VALID_XTD_MSG &
_CAN_CONFIG_LINE_FILTER_OFF;
CANInitialize(1,3,3,3,1,Can_Init_Flags);
CANSetOperationMode(_CAN_MODE_CONFIG,0xFF);
CANSetMask(_CAN_MASK_B1,-1,_CAN_CONFIG_XTD_MSG);
CANSetMask(_CAN_MASK_B2,-1,_CAN_CONFIG_XTD_MSG);
CANSetFilter(_CAN_FILTER_B2_F3,ID_1st,_CAN_CONFIG_XTD_MSG);
CANSetOperationMode(_CAN_MODE_NORMAL,0xFF);
while (1) {
Msg_Rcvd = CANRead(&Rx_ID , RxTx_Data , &Rx_Data_Len, &Can_Rcv_Flags);
if ((Rx_ID == ID_1st) && Msg_Rcvd) {
PORTC = RxTx_Data[0];
RxTx_Data[0]++ ;
CANWrite(ID_2nd, RxTx_Data, 1, Can_Send_Flags);
}
}
}
|
|
|
|
|
Hi,
1.
you're asking in the wrong forum: C++/CLI is the .Net version of C++, not the PIC version! I will not proceed here beyond this single reply.
2.
I have done lots of CAN applications, and I have used several PIC models, however I never did real CAN on PIC (I have a CAN-like protocol running on a tiny PIC, all in software though). So all I can offer is a set of advice:
3.
make sure you read all you can get about CAN in general, and thoroughly read your PIC's documentation. Peripherals need a lot of initialization (see the start of your Main functions), and a single error or omission there may cause total failure.
4.
Your test set-up is sending basically the same message back and forth from one PIC to the other, it does not offer any observability: it could be running fine without you noticing anything, or it could fail completely, how can you tell? I suggest you connect a few LEDs (or any other output device) and set their value inside the while loop; displaying a few bits of RxTx_Data[0] should generate an incrementing binary pattern. Observability is key in all debugging, and often is even more important on embedded systems; take care of it from the start, the payback will be immediate.
5.
For any serious application you would need interrupts, and probably also CAN message filtering (assuming multiple PIC nodes and a rather busy CAN bus). Your test has neither. So it may become much more complex.
|
|
|
|
|