n00b frage: concatenieren?

METATR0N

Grünschnabel
Hallo,

eigentlich ists ja fast schon peinlich, aber ich habe immer wieder (in mehr oder weniger abgewandelter form) folgendes problem:
Code:
bool CBot::SendSearch(LPTSTR szSearchstring, LPTSTR szSearchtype)
{
  if(m_bInstalled)
  {
    ::SendMessage(m_hwndConsoleEdit, WM_SETTEXT, NULL, (LPARAM) "search "+ *szSearchstring +" "+ *szSearchtype );
    ::SendMessage(m_hwndConsoleEdit, WM_KEYDOWN, VK_RETURN, NULL);
    ::SendMessage(m_hwndConsoleEdit, WM_KEYUP, VK_RETURN, NULL);
    return true;
  }
  else
  {
    TRACE("call InstallBot() first");
    return false;
  }
}

beim compilieren bekomme ich einen konvertierungsfehler beim ersten sendmessage.

FRAGE:
wie erhalte ich einen LPTSTR auf "search "+ *szSearchstring + " " + *szSearchtype???

bitte helft mir... ich verzweifel noch... jedes tutorial ist mir sehr willkommen.

Vielen DANK,

Metatron
 
also im normalen ansi-c++ würd ich das einfach mit "strcat" machen. aber unter visual c++ gibt's auch sicher irgendwas besseres dafür. vielleicht eine methode innerhalb der string-klasse oder sowas...

ich würd's halt einfach so machen:
Code:
#include <string.h>

// ...

strcat("search ", szSearchString);
strcat(" ", szSearchType);
strcat(szSearchString, szSearchType);

geht aber sicher auch eleganter mit vc++. ich weiss nur gerade nicht wie...
 
also, ich habe vergessen ich benutze VC++.

Code:
char szSearch[255];

strcpy(szSearch, "s ");
strcat(szSearch, szSearchstring);
strcat(szSearch, " ");
strcat(szSearch, szSearchtype);
::SendMessage(m_hwndConsoleEdit, WM_SETTEXT, NULL, (LPARAM) szSearch);

OK, Prima soweit so gut, aber sobald ich z.B. als szSearchtype NULL übergebe, brichts mit einer access violation ab. Daher meine Fragen:
Kann ich in VC++ ähnlich wie in PHP einen defaultwert für einen funktionsparameter angeben? Muss ich erst abfragen, ob ein sinnvoller Stringpointer empfangen wurde? Ist die elegantere Lösung, einfach meine Funktion zu überladen?

mfg

metatron
 

Neue Beiträge

Zurück