Avatar billede krukken Juniormester
02. august 2006 - 20:12 Der er 7 kommentarer og
1 løsning

Cannot convert parameter 1 from 'char [5]' to 'LPCWSTR'

Følgende kode giver nedenstående fejl:
char portstr[5] = "COM ";

    portstr[3] = 48 + port ;


    HComdev = CreateFile(L(portstr),
                        GENERIC_READ | GENERIC_WRITE,
                        NULL,
                        0,
                        OPEN_EXISTING,
                        0,
                        0);
***************
Fejl:
error C2664: 'CreateFileW' : cannot convert parameter 1 from 'char [5]' to 'LPCWSTR'

Hvordan retter jeg det?
Avatar billede bertelbrander Novice
02. august 2006 - 20:15 #1
Hvis du bruger unicode (som W på CreateFile indikerer) skal portstr nok være wchar_t eller WSTR?
Avatar billede arne_v Ekspert
02. august 2006 - 20:17 #2
proev:

wchar_t portstr[5] = L"COM ";

    portstr[3] = 48 + port ;


    HComdev = CreateFile(portstr,
                        GENERIC_READ | GENERIC_WRITE,
                        NULL,
                        0,
                        OPEN_EXISTING,
                        0,
                        0);
Avatar billede bertelbrander Novice
02. august 2006 - 20:18 #3
Det kunne f.ex være:

#define UNICODE
#include <windows.h>

int main()
{
  WCHAR portstr[5] = L"COM ";
  WCHAR port = 1;
  portstr[3] = 48 + port;


  HANDLE HComdev = CreateFile(portstr,
                        GENERIC_READ | GENERIC_WRITE,
                        NULL,
                        0,
                        OPEN_EXISTING,
                        0,
                        0);
}

Bemærk at jeg har flyttet L(...)
Avatar billede krukken Juniormester
02. august 2006 - 20:19 #4
Det var meget bedre;-) Tak for hjælpen - ligger du et svar?
Avatar billede bertelbrander Novice
02. august 2006 - 20:20 #5
Nå, det var vi næsten enige om.

Gcc er i øvrigt lidt emsig, den bryder sig ikke om at du bruger NULL som tredie parameter, det er ikke en pointer.
Avatar billede arne_v Ekspert
02. august 2006 - 20:23 #6
jeg vil nok ioevrigt mene at:

TCHAR portstr[5] = _T("COM ");

    portstr[3] = 48 + port ;


    HComdev = CreateFile(portstr,
                        GENERIC_READ | GENERIC_WRITE,
                        NULL,
                        0,
                        OPEN_EXISTING,
                        0,
                        0);

nok var paenere fordi argumentet faktisk er LPCTSTR som dog altid er en
LPCWSTR paa NT/2000/2003
Avatar billede bertelbrander Novice
02. august 2006 - 20:32 #7
Point må gå til Arne, jeg samler ikke.
Avatar billede arne_v Ekspert
04. august 2006 - 01:32 #8
det skal da så kun være p.g.a. min sidste T post
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