Avatar billede woodgnome Nybegynder
13. maj 2006 - 14:46 Der er 6 kommentarer og
1 løsning

char to LPTSTR konvertering?

Jeg har lavet en funktion som opretter forbindelse til COM porten via CreateFile. Det første argument i CreateFile er en LPCTSTR, som jeg erklærer på følgende måde:

LPCTSTR szComPort=L"\\\\.\\COM10";

Dette virker helt fint og opretter forbindelse til COM port, som jeg så kan skrive og læse fra. Jeg ønsker imidlertidigt at kunne indtaste COM porten i programmet, frem for at skulle indtaste den i koden. Hertil har jeg brugt scanf og lidt string manipulering til at ændre indholdet af en string (char array) til indholdet \\\\.\\COM10 (det eneste jeg indtaster i scanf er 10).

Problemet er, at jeg ikke kan bruge et char array i CreateFile, da det ikke er en LPCTSTR og jeg ved ikke hvordan jeg skal konvertere et char array til en LPCTSTR. Har prøvet at sætte LPCTSTR lig mit char array og forsøgt at bruge mbstowcs(), men uden held.

Det er i øvrigt ligegyldigt om jeg bruge LPCTSTR eller LPTSTR som argument i CreateFile, men LPCTSTR skal være en konstant string, så denne bruger jeg af åbenlyse grunde ikke :)

Forslag?
Avatar billede arne_v Ekspert
13. maj 2006 - 17:48 #1
Windows og Unicode kan godt drille lidt !

:-)

her er mit bud:

#include <stdio.h>

#include <windows.h>
#include <tchar.h>
#include <crtdbg.h>
#include <atlconv.h>

void dummy(LPCTSTR s)
{
    _tprintf("%s\n",s);
}

int main()
{
    // the easy way
    LPCTSTR s1 = _T("ABC123");
    dummy(s1);
    // the workaround using ATL
    char s2[10];
    sprintf(s2,"ABC%d",123);
    dummy(A2T(s2));
    // the rigth way
    TCHAR s3[10];
    _stprintf(s3,_T("ABC%d"),123);
    dummy(s3);
    return 0;
}
Avatar billede arne_v Ekspert
13. maj 2006 - 17:49 #2
min anbefaling er at bruge _stprintf fremfor sprintf til at konstruere
en TCHAR* fremfor en char*
Avatar billede arne_v Ekspert
13. maj 2006 - 17:49 #3
og hold dig langt væk fra ATL !
Avatar billede woodgnome Nybegynder
14. maj 2006 - 02:05 #4
Fik det til at virke med "the right way". Endelig =)
Avatar billede arne_v Ekspert
14. maj 2006 - 02:12 #5
så ligger jeg et svar
Avatar billede woodgnome Nybegynder
14. maj 2006 - 16:50 #6
Så får du lige nogle point den anden vej :)
Avatar billede woodgnome Nybegynder
14. maj 2006 - 16:52 #7
Tak for kaffe!
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester