007
13.03.2006, 17:17 Uhr
FloSoft
Medialer Over-Flow (Administrator)
|
Dein einziges Problem ist eigentlich das "sizeof(buffer)" das liefert dir 4, weil bei dir sizeof(char*) 4 ist (int)
C++: |
String strGGA = "$GPGGA," + strHour + strMinute + strSec + "," + strLat + "," + strLatDirection + "," + strLon + "," + strLonDirection + ",1," + strNoSat + ",," + strHei + "M,,,,\n"; char *buffer = (char*)strGGA.c_str();
WriteFile(hCom, buffer, strGGA.length(), &dwBytesWritten, NULL);
|
sollte eigentlich gehen.
Wichtig ist jedoch: Wenn strGGA z.b eine lokale Variable irgendwo ist, und dein Writefile irgendwo anders ist, dann ist dein obiger "buffer" pointer nicht gültig!
Also z.b so:
C++: |
const char *foo() { String a = "muh"; return strGGA.c_str(); }
void bar(const char *p) { WriteFile(... p ...); // <-- p ist hier ungültig, da string in "a" auf das er zeigt schon nach verlassen von foo nicht mehr existiert }
int main() { const char *p = foo(); bar(p); }
|
-- class God : public ChuckNorris { }; |