Witam.
Od dwóch dni próbuję rozwiązać pewien problem, jednak bezskutecznie. W programie pobieram dane od użytkownika i zapisuję do pliku. Następnie sprawdzam rozmiar pliku, powiedzmy jeśli jest większy niż 200 b, rozpoczynam transmisję danych przez FTP. Operacja ta jest w pętli. Wygląda to mniej więcej tak:
....
FILE * file;
std::string path;
path = "C:\\Program Files\\MyApp\\usage.txt";
file = fopen(path.c_str(),"a+");
fputs(data,file);
fclose(file);
TCHAR *param=new TCHAR[path.size()+1];
param[path.size()]=0;
std::copy(path.begin(),path.end(),param);
UploadFTP upload;
if (upload.GetFileSize(param) > 200)
if (!upload.SubmitFile(path.c_str()))
remove(path.c_str());
break;
....
Jak dla mnie kod wydaje się logiczny, ale działa w ten sposób: po podaniu pierwszych danych, zostaje utworzony plik usage.txt. Dane są zapisywane po kilka/kilkanaście bajtów. Gdy rozmiar pliku przekroczy 200 b, zgodnie z kodem, plik zostaje wysłany na FTP i usunięty z dysku, od razu przy próbie wprowadzenia kolejnych danych, tworzy się kolejny plik. Również dochodzi on do 200 b, zostaje wysłany, z dysku plik zostaje usunięty i na tym koniec - dalej użytkownik wprowadza dane, które nigdzie już nie są zapisywane, plik z danymi się już nie tworzy. Jaka może być tego przyczyna? Dzięki za wskazówki :)
Dodam, że pod Windows XP wszystko działa prawidłowo. Problem występuje na Windows 7.