Re: pointer, reference problem with a DLL and MFC
This is pretty hard to follow since your variable names do not match up.
But I think this is the line that is supposed to produce the result:
strcpy(p_value, "0701");
but in your test program this is the variable you are trying to fill:
char Out_RepairLayout;
Problem is that Out_RepairLayout can hold only one character. You can't
copy a string into it. So it needs to be something like
char Out_RepairLayout[256];
But it's really hard to know how big to make the array. So it would be much
better if you can pass CString instead of char*. If you can't do that then
at least pass the size of the array as an additional parameter so the DLL
can make sure the array is big enough.
"Claudia Maier" <cm@NewsMicro.com> wrote in message
news:OMYUtd2xJHA.3460@TK2MSFTNGP03.phx.gbl...
Hello,
I should simulate a customer DLL with dummy data.
DLL
------------------------------------------
int RegRead(
char * p_InPath,
char * p_InConfig,
char * p_OutValue)
{
// ***** maybe I need here the new operator ?
// char cBuffer = new char[1024];
// p_OutValue = &cBuffer;
// ???
if ( p_InPath ==NULL )
return -1;
CString systemPath = p_InPath;
if ( systemPath == "labeler" )
{
CString objectID = p_InConfig;
if ( objectID == "Repair 1D" )
strcpy(p_value, "0701");
else if ( objectID == "Repair 2D" )
strcpy(p_value, "0702");
else if ( objectID == "Repair Text" )
strcpy(p_value, "0703");
else
strcpy(p_value, "notD");
}
return 0;
}
----------------------------------
Application
bool CRTestApp::PlantRegRead(CString Product, char& In_ObjectName, char&
Out_RepairLayout )
{
CString objectName = "Repair 1D";
char* pOutput= new char[1024];
memset( &pOutput, 0, sizeof(pOutput) );
int result=this->m_pCM_PlantRegRead(
"labeler",
(LPSTR)(LPCSTR)objectName,
pOutput); // ########
/*or with reference ?!?!?
int result=this->m_pCM_PlantRegRead(
"Laser labeler",
(LPSTR)(LPCSTR)objectName,
&Out_RepairLayout);
*/
if ( result != 0)
{
//throw error message
this->ThrowError(result);
return false;
}
return true;
}
Call in my test application
char In_ObjectName;
char Out_RepairLayout;
bool rA = m_Conn.PlantRegRead("Test", In_ObjectName,
Out_RepairLayout);
Problem:
The Output parameter.
The value "0701" is not inside the pOutput. please see ########
or I need a reference here?
Can somebody help me. Thanks a lot.
Greet
Claudia
--
Scott McPhillips [VC++ MVP]