irgend ein s**dummer Fehler
-
irgendwie hab ich in einer Routine totalen Müll gebaut, aber ich guck da immer drauf und denke: "is doch alles richtig"
Irgendwie bin ich an dieser Stelle wohl betriebsblind *g*Compiliert und gelink wird alles ohne Fehler, aber zur Laufzeit
funzt CreateFile() (Zeile 21) manchmal und manchmal nicht ??? und er springt immer von Zeile 26 nach Zeile 21 zurück. Irgendwie alles merkwürdig.Ich poste hier mal die Routine.
void KWizz::readInSol() { 1 char theFtmFName[_MAX_PATH]; 2 char theFtmPathName[_MAX_PATH]; 3 char buffer[256]; 4 char * subStr; 5 bool ret; 6 int z; 7 DWORD readBytes; 8 HANDLE hFindFtmFile,hFtmFile; 9 WIN32_FIND_DATA fd; 10 SolutionStruc theSol; 11 12 memset(&theSol,'\0',sizeof(theSol)); 13 getMyPath(theFtmPathName); 14 wsprintf(theFtmFName,"%s..\\ftf\\*.ftm",theFtmPathName); 15 16 if(INVALID_HANDLE_VALUE == (hFindFtmFile = FindFirstFil(theFtmFName,&fd)) ) 17 return; 18 19 do{ 20 wsprintf(theFtmFName,"%s..\\ftf\\%s",theFtmPathName,fd.cFileName); 21 hFtmFile = CreateFile(theFtmFName,GENERIC_READ,FILE_SHARE_READ 22 ,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL); 23 if(hFtmFile == INVALID_HANDLE_VALUE) 24 break; 25 ret = ReadFile(hFtmFile,buffer,255,&readBytes,NULL); 26 CloseHandle(hFtmFile); 27 if(ret == false) 28 break; 29 if( (subStr = strstr(buffer,"#Description:")) ) 30 { 31 for(z=13;(subStr[z] != '\r') 32 && (subStr[z] != '\n') 33 && (z < 45) 34 && (subStr[z] != '\0') ; z++) 35 theSol.theSolName[z-13] = subStr[z]; 36 if( (z < 45) && (z > 18) ) 37 { 38 theSol.theSolName[z-13] = '\0'; 39 lstrcpy(theSol.theSolFile,theFtmFName); 40 tsol->add(&theSol); 41 } 42 } 43 }while( FindNextFile(hFindFtmFile,&fd) ); 44 FindClose(hFindFtmFile); 45 }
-
Hier ist das Standard C++ Forum, dein code ist WinApi, ich verscheibe den Thread mal ins Wohin mit meiner Frage?
-
...so was dummes:
FindFirstFile() (Zeile 16) nutzt theFtmFName für den Dateinamen. In Zeile 20 wird dieser Speicher für den Dateinamen für CreateFile() benutzt, obwohl noch mit FindNextFile() (Zeile 43) weitergemacht werden soll.
Seit CreateFile() für den Dateinamen einen anderen Speicherbereich nutzt und theFtmFName unangetastet bleibt, funzt es.
War's das nun der Fehler??
-
Also wenn ihr keine Ahnung von C++ habt, verpisst euch aus diesem Forum!!!
p.s.: Pentium is besser als ATX
-
hä???
schlecht geträumt?!