Absturz
-
hallo,
ich möchte eine Id aus einem gerät auslesen.diese Id ist binär.
hier der code:CListBox * pdaten; pdaten = (CListBox *) GetDlgItem(IDC_LIST_Listenfeld); int iIndex=0; int iK=0; long ret = 0; char cDeviceId[8]; CString Strhelp = ""; FILE * Dest; Dest = fopen("daten.txt","a+"); csp2Init(combo->GetCurSel()); ret = csp2GetDeviceId(cDeviceId,9); if(ret>0) { while(iK<=ret) { Strhelp.Format("%s %X",Strhelp,cDeviceId[iK]); //hier stürzt er ab pdaten->InsertString(iIndex,Strhelp); iK++; } } csp2PowerDown(); fputs(Strhelp,Dest); fclose(Dest);fehlermeldung in der strex.cpp
VERIFY(_vstprintf(m_pchData, lpszFormat, argListSave) <= GetAllocLength());kann mir jemand helfen
mfg
fevernova
-
warum benutzt du %X ?
Strhelp.Format("%s %X",Strhelp,cDeviceId[iK]);
wenn cDev... ein char is? nimm mal aus wie bei Strhelp %s
-
naj, das ist ein hex-integer.

-
Ne, an dem %X kann das nich liegen. Ich glaub eher dass Du über die Array-Grenzen hinaus liest. Bist Du sicher dass da nich
while( iK < ret )stehen muss?
-
jup cosmic hat recht, und ich steh neben mir wenn ich mir meinen ausdruck oben anschau ...
-
funktioniert auch nicht mir der while-schleife !
schade
-
Nicht gleich verzagen!

Wie groß kann denn dieses ret werden?
Schreib mal zur Sicherheit bei der if-Abfrageif( ( ret > 0 ) && ( ret < 8 ) )hin.
Und schau Dir mit dem Debugger die Schleifendurchläufe genau an, falls Du das noch nicht gemacht hast.
-
also ret ist nach dem fkt.aufruf gleich 8.
beim 2.schleifendurchlauf hängt er sich auf,
bzw. im debugmodus wechselt er dann in die disassemblierung.
-
ich denk mal die übergabe in den String haut nicht hin.
wie kann ich das umändern ?

mfg
fevernova
-
Also die Ausgabe von cDeviceId[ 8 ] führt auf jeden Fall zu einem Fehler. Und dann versuch mal Deinen Strhelp nach dem ik++ in der Schleife wieder auf Strhelp = ""; zu setzen.
-
nun funktioniert die sache auch.
hing an dem strhelp="";
mfg
fevernova