cannot convert parameter 1 from 'char' to 'const char *'

sntnknd's Avatar, Join Date: Oct 2007
Newbie Member
Dear Experts,

I am stuck up with a piece of code, which I am not able to break. Could you kindly help me out.

Situation:
I am trying to perform a string comparison between 2 variables, one defined as const TCHAR * and other defined as CS_CHAR, inside an Embedded SQL program in C++. My relevant code snippet is as below:

Code:
short CSQLBox::fnTest(const TCHAR *varInput)
{
  CS_CHAR szExtract;
  
  //szExtract variable is populated by Embedded SQL query
  ....

  //Do string comparison
  if(strcmp(szExtract, varInput)==0)
  {
    ...
  }
}
When I try to compile this code, the strcmp step is throwing an error "cannot convert parameter 1 from 'char' to 'const char *'".

I have tried typecasting parameter 1 as:
Code:
if(strcmp((const char*)szExtract, varInput)==0)
This way, the code compiles, but fails in runtime with unhandled exception error. I am unable to understand how to solve this issue.

Could anyone kindly offer me some suggestions.

cheers,
sanK
DaWei's Avatar, Join Date: Dec 2006
Team Leader
Perhaps you should tell us what a CS_CHAR is. I'm not up to Googling it. Since you're using it, you should know.
sntnknd's Avatar, Join Date: Oct 2007
Newbie Member
Hello DaWei,

My code snippet belongs to an Embedded SQL file in C++. CS_CHAR is a character datatype used in Embedded SQL with Sybase and is declared within a EXEC SQL block. The actual code goes like this:

Code:
short CSQLBox::fnTest(const TCHAR *varInput)
{
  exec sql begin declare section;
  CS_CHAR szExtract[10];
  exec sql end declare section;
    
  szExtract[0] = _T('\0');

  //szExtract array is populated by Embedded SQL query
  ....

  //Do string comparison
  for( int j=0; j<5; j++)
  {
      if(strcmp(szExtract, varInput)==0)
      {
         ...
      }
  }
}
cheers,
sanK
DaWei's Avatar, Join Date: Dec 2006
Team Leader
Your first example has "CS_CHAR szExtract;"

Your second example has "CS_CHAR szExtract [10];"

That's a fundamental difference. The first is a char, the second is a char*. You cannot reconcile that with a cast. Make sure you declare an array of char, not just one char.