Hallo, ich ärgere mich das zweite Wochenende mit einem für mich absolut nicht nachvollziehbarem Problem. Ich programmiere mit embedded Visual C++ 4.0 für den Pocket PC und teste meine Applikation mit dem Emulator/Debugger. Ich habe die folgende Routine:
1 | BOOL TSerial::InitComm( int nPort,int nBaud,int nParity,int nData,int nStop ) |
2 | {
|
3 | |
4 | char s[100]; |
5 | LPCTSTR lpsz = (LPCTSTR) &s; |
6 | |
7 | sprintf(s,"COM%d:", nPort); |
8 | m_hFile = CreateFile( |
9 | lpsz, |
10 | //_T("COM1:"),
|
11 | GENERIC_READ|GENERIC_WRITE, |
12 | 0, NULL, |
13 | OPEN_EXISTING, |
14 | FILE_ATTRIBUTE_NORMAL, |
15 | NULL ); |
Createfile braucht einen Pointer auf den ASCIIZ-String. Also füge ich mir per "sprintf" den String zusammen um die serielle schnittstelle zu öffnen und mit "lpsz" hab ich den Zeiger. Im Debugger sieht das auch alles einigermasse passabel aus, d.h. ich würde meinen das beide dieselbe Adresse haben: Name Value lpsz 0x1c0cf028 "??:" s 0x1c0cf028 "COM1:" Der String dann allerdings hat einen anderen Inhalt???? Ich habe schon häufig genug C Programmiert, da hat der "&" operator immer anstandslos gewerkt, nur hier will er einfach nicht (Auch &s[0] funzt nicht) Wenn ich die "lpsz,"-Zeile auskommentiere und stattdessen durch den auskommentierten string "_T("COM1:")" ersetze funzt alles super. Grübel,Grübel! Hat da jemand eine Idee was da schief läuft? Dank Euch Mario