K
KIG
Добрый день.
Пишу информацию в файлы (33 файла) периодически (интервал 10 минут). Запись выполняю в теле дополнительного потока следующим образом (остальные файлы пишутся аналогично):
При этом через некоторое время начинают создаваться пустые файлы, форма программы начинает просвечивать (комп подвисает). Подскажите, пожалуйста, что я делаю не так?
Пишу информацию в файлы (33 файла) периодически (интервал 10 минут). Запись выполняю в теле дополнительного потока следующим образом (остальные файлы пишутся аналогично):
C++:
void __fastcall dataprocessing::LogDPMtk(AnsiString LMtk)
{
FileRename(LogDPP,LogDP_Vlm);
LogDP.open(LogDPP.c_str(),ios::app);//--- Добавил
LogDP<<endl<<DateToStr(Time).c_str();
LogDP<<endl<<TimeToStr(Time).c_str();
LogDP<<endl<<LMtk.c_str()<<endl;
LogDP.close();
}
//---------------------------------------------------------------------------
void __fastcall dataprocessing::Logi(char g[], int*Log_mas, int Len_mas)
{
int Log_ind;
CurrentFile_log=ExtractFilePath(Application->ExeName)+"Архив №"+Form1->Table1->FieldByName("ID")->AsString+"\\Logs\\Log №"+g+".txt";;
FileRename(CurrentFile_log,1000000);
LogDP.open(CurrentFile_log.c_str(),ios::app);
LogDP<<DateToStr(Time).c_str()<<endl;
LogDP<<TimeToStr(Time).c_str()<<endl;
for (Log_ind=0; Log_ind<Len_mas; Log_ind++)
LogDP<<IntToStr(Log_mas[Log_ind]).c_str()<<endl;
LogDP<<endl<<endl;
LogDP.close();
LogDPMtk(" Logi ");
}
void __fastcall dataprocessing::FileRename(AnsiString FileName1, long FileVolume1) //FileVolume1 - в байтах задается
{
if (FileExists(FileName1.c_str()))
{
AnsiString CFileNew=FileName1;
long FileLen = 0; struct _finddata_t fData;
int res = _findfirst(CFileNew.c_str(), &fData);
if (res > 0) FileLen = fData.size;
if(FileLen>FileVolume1)
{
CFileNew.Insert("_"+DateToStr(Time)+"_"+TimeToStr(Time),CFileNew.Length()-3);
CFileNew=StringReplace(CFileNew,":",".",TReplaceFlags()<<rfReplaceAll);
CFileNew[CFileNew.Pos(".")]=':';
RenameFile( FileName1.c_str(),CFileNew.c_str() );
}
}
}
void __fastcall dataprocessing::Execute()
{
do {
if(Control)
{
FileRename(CurrentFile_Co,1000000);
fileOsc.open (CurrentFile_Co.c_str(),ios::app);
fileOsc<<DateToStr(Time).c_str()<<";";
fileOsc<<TimeToStr(Time).c_str()<<";";
for(doz_ind=0; doz_ind<55; doz_ind++)
{
if(GPS_K_st[doz_ind]==0)
{ fileOsc<<"0"; GPS_K_st[doz_ind]='!'; LogDPMtk(" K1 ");}
else fileOsc<<(char)GPS_K_st[doz_ind];
}
fileOsc<<endl<<endl;
fileOsc.close();
Logi("12",&GPS_K_st[0],70);
Control=0;
}
sleep(5);
}
while(!Terminated)
}