#include #pragma hdrstop #include #include #include #include "UnitMain.h"//---------------------------------------------------------------------------#pragma package(smart_init)#pragma resource "*.dfm"TForm1 *Form1;std::mapString, String> IniContent;//---------------------------------------------------------------------------__fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner){}//---------------------------------------------------------------------------void __fastcall TForm1::FormCreate(TObject *Sender){ String path = ExtractFilePath(Application->ExeName) + L"\\files.ini"; if(FileExists(path)) { std::auto_ptrTIniFile> FileINI(new TIniFile(path)); std::auto_ptrTStringList> AlliniSection(new TStringList()); FileINI->ReadSections(AlliniSection.get()); for (int i = 0; i AlliniSection->Count; i++) { IniContent[FileINI->ReadString(AlliniSection->Strings[i], "time", "")] = FileINI->ReadString(AlliniSection->Strings[i], "name", ""); } //проверка std::mapString, String>::iterator It = IniContent.begin(); while (It != IniContent.end()) { Memo1->Lines->Add((*It).first + "=" + (*It).second); It++; } //попытка поиска нужного диапазона времени c помощью алгоритма TDateTime T(Now()); std::pairstd::mapString, String>::iterator,std::mapString, String>::iterator> ret; ret = IniContent.equal_range(T.TimeString()); Memo1->Lines->Add("***"); Memo1->Lines->Add(ret.first->first + "=" + ret.first->second); //ОШИБКА AV Memo1->Lines->Add(ret.first->second + "=" + ret.second->second); } else { ShowMessage(L"Не найден файл files.ini"); Application->Terminate(); } }//---------------------------------------------------------------------------
#include #pragma hdrstop #include #include #include #include "UnitMain.h"//---------------------------------------------------------------------------#pragma package(smart_init)#pragma resource "*.dfm"TForm1 *Form1; std::mapString, String> IniContent; //контейнер "время->имя файла"String VideoFileName; //имя запущенного файлаstd::mapString, String>::iterator ItTEMPSeach; //итератор для поиска по контейнеру map//---------------------------------------------------------------------------__fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner){} //---------------------------------------------------------------------------void Control(){ String path = ExtractFilePath(Application->ExeName) + L"\\files.ini"; if(FileExists(path)) { std::auto_ptrTIniFile> FileINI(new TIniFile(path)); std::auto_ptrTStringList> AlliniSection(new TStringList()); FileINI->ReadSections(AlliniSection.get()); if(AlliniSection->Count == 0) { ShowMessage(L"Не найдено записей в файле настройки. Программа будет закрыта."); Application->Terminate(); return; } IniContent.clear(); for (int i = 0; i AlliniSection->Count; i++) { IniContent[FileINI->ReadString(AlliniSection->Strings[i], L"time", "")] = FileINI->ReadString(AlliniSection->Strings[i], L"name", ""); } TDateTime T(Now()); String temptime = T.TimeString(); //вставляем в map временное значение. Поскольку map сортирует автоматом время //будет вставлено в правильную позицию IniContent[temptime] = L"TEMP"; //устанавливаем итератор на временное значение ItTEMPSeach = IniContent.find(temptime); //проверим что временное значение не попало на самое первое место std::mapString, String>::iterator It = IniContent.begin(); if((*It).second == L"TEMP") //тогда поднинемся на первое реальное значение в контейнере map ItTEMPSeach++; else //иначе спустимся на один итератор вниз и встанем на реальное время в контейнере map ItTEMPSeach--; IniContent.erase(temptime); //теперь удаляем времнное значение из map } else { ShowMessage(L"Не найден файл files.ini. Программа будет закрыта."); Application->Terminate(); }} //---------------------------------------------------------------------------//СТАРТvoid __fastcall TForm1::BitBtn1Click(TObject *Sender){ Control(); if(ItTEMPSeach == NULL) { ShowMessage(L"Не найден видео файл в файле настройки. Программа будет закрыта."); Application->Terminate(); return; } VideoFileName = ExtractFilePath(Application->ExeName) + (*ItTEMPSeach).second; if(FileExists(VideoFileName)) { ShellExecute(Handle, String(L"open").c_str(), VideoFileName.c_str(), NULL, NULL, SW_MAXIMIZE); } else { ShowMessage(L"Не найден видео файл " + VideoFileName + ". Программа будет закрыта."); Application->Terminate(); return; } //тут запустим таймер анализа времени и мониторинга INI Timer1->Enabled = true; //период 10 секунд. Сколько тут поставить? Может 59 секунд? Panel1->Caption = "Сервер запущен!"; //картинка выглядит уродиливо когда BitBtn1->Enabled = false; поэтому: BitBtn1->Glyph = NULL; BitBtn1->Enabled = false;} //---------------------------------------------------------------------------void __fastcall TForm1::Timer1Timer(TObject *Sender){ Control(); if(ItTEMPSeach == NULL) { ShowMessage(L"Не найден видео файл в файле настройки. Программа будет закрыта."); Application->Terminate(); return; } String name = ExtractFilePath(Application->ExeName) + (*ItTEMPSeach).second; if(FileExists(name)) { if(FileExists(VideoFileName) && (VideoFileName != name)) { ShellExecute(Handle, String(L"open").c_str(), name.c_str(), NULL, NULL, SW_MAXIMIZE); VideoFileName = name; } HWND wnd = FindWindow(NULL, L"Проигрыватель Windows Media"); if(wnd == NULL) { ShowMessage(L"Проигрыватель Windows Media был закрыт. Программа также будет закрыта."); Application->Terminate(); } } else { ShowMessage(L"Не найден видео файл " + (*ItTEMPSeach).second + ". Программа будет закрыта."); Application->Terminate(); } }//--------------------------------------------------------------------------- void __fastcall TForm1::BitBtn2Click(TObject *Sender){ Close();}//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender){ ShowMessage(L"Привет");}
//--------------------------------------------------------------------------- #include #pragma hdrstop #include #include #include #include #include #include "MobUnit1.h"//---------------------------------------------------------------------------#pragma package(smart_init)#pragma resource "*.fmx"TForm1 *Form1; std::mapString, String> IniContent; //контейнер "время->имя файла"String VideoFileName; //имя запущенного файлаstd::mapString, String>::iterator ItTEMPSeach; //итератор для поиска по контейнеру map//---------------------------------------------------------------------------__fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner){}//---------------------------------------------------------------------------void Control(){ String path = System::Ioutils::TPath::Combine(System::Ioutils::TPath::GetHomePath(), "files.ini"); if(FileExists(path)) { std::auto_ptrTIniFile> FileINI(new TIniFile(path)); std::auto_ptrTStringList> AlliniSection(new TStringList()); FileINI->ReadSections(AlliniSection.get()); if(AlliniSection->Count == 0) { ShowMessage(L"Не найдено записей в файле настройки. Программа будет закрыта."); Application->Terminate(); return; } IniContent.clear(); for (int i = 0; i AlliniSection->Count; i++) { IniContent[FileINI->ReadString(AlliniSection->Strings[i], L"time", "")] = FileINI->ReadString(AlliniSection->Strings[i], L"name", ""); } TDateTime T(Now()); String temptime = T.TimeString(); //вставляем в map временное значение. Поскольку map сортирует автоматом время //будет вставлено в правильную позицию IniContent[temptime] = L"TEMP"; //устанавливаем итератор на временное значение ItTEMPSeach = IniContent.find(temptime); //проверим что временное значение не попало на самое первое место std::mapString, String>::iterator It = IniContent.begin(); if((*It).second == L"TEMP") //тогда поднинемся на первое реальное значение в контейнере map ItTEMPSeach++; else //иначе спустимся на один итератор вниз и встанем на реальное время в контейнере map ItTEMPSeach--; IniContent.erase(temptime); //теперь удаляем времнное значение из map } else { ShowMessage(L"Не найден файл files.ini. Программа будет закрыта."); Application->Terminate(); }} //--------------------------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender){ Control(); if(&ItTEMPSeach == NULL) { ShowMessage(L"Не найден видео файл в файле настройки. Программа будет закрыта."); Application->Terminate(); return; } VideoFileName = System::Ioutils::TPath::Combine(System::Ioutils::TPath::GetHomePath(), (*ItTEMPSeach).second); if(FileExists(VideoFileName)) { system(("open " + AnsiString(VideoFileName)).c_str()); } else { ShowMessage(L"Не найден видео файл " + VideoFileName + ". Программа будет закрыта."); Application->Terminate(); return; } //тут запустим таймер анализа времени и мониторинга INI Timer1->Enabled = true; //период 10 секунд Button1->Enabled = false;}//--------------------------------------------------------------------------- void __fastcall TForm1::Timer1Timer(TObject *Sender){ Control(); if(&ItTEMPSeach == NULL) { ShowMessage(L"Не найден видео файл в файле настройки. Программа будет закрыта."); Application->Terminate(); return; } String name = System::Ioutils::TPath::Combine(System::Ioutils::TPath::GetHomePath(), (*ItTEMPSeach).second); if(FileExists(name)) { if(FileExists(VideoFileName) && (VideoFileName != name)) { system(("open " + AnsiString(name)).c_str()); VideoFileName = name; } } else { ShowMessage(L"Не найден видео файл " + (*ItTEMPSeach).second + ". Программа будет закрыта."); Application->Terminate(); } }//---------------------------------------------------------------------------//МОЖНО ЛИ ЗАКРЫВАТЬ ГЛАВНУЮ ФОРМУ В АНДРОИД ПРОЕКТЕ?void __fastcall TForm1::Button2Click(TObject *Sender){ Timer1->Enabled = false; Close();}
//--------------------------------------------------------------------------- #include #pragma hdrstop #include #include #include #include "UnitMain.h"//---------------------------------------------------------------------------#pragma package(smart_init)#pragma resource "*.dfm"TForm1 *Form1; std::mapString, String> IniContent; //контейнер "время->имя файла"String VideoFileName; //имя запущенного файлаstd::mapString, String>::iterator ItTEMPSeach; //итератор для поиска по контейнеру map//---------------------------------------------------------------------------__fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner){} //---------------------------------------------------------------------------bool Control(){ String path = ExtractFilePath(Application->ExeName) + L"\\files.ini"; if(FileExists(path)) { std::auto_ptrTIniFile> FileINI(new TIniFile(path)); std::auto_ptrTStringList> AlliniSection(new TStringList()); FileINI->ReadSections(AlliniSection.get()); if(AlliniSection->Count == 0) { ShowMessage(L"Не найдено записей в файле настройки files.ini. Программа будет закрыта."); return false; } IniContent.clear(); String TIME = ""; String NAME = ""; for (int i = 0; i AlliniSection->Count; i++) { TIME = FileINI->ReadString(AlliniSection->Strings[i], L"time", ""); NAME = FileINI->ReadString(AlliniSection->Strings[i], L"name", ""); //если некоторые секции не заполнены if(TIME == "" || NAME == "") continue; IniContent[FileINI->ReadString(AlliniSection->Strings[i], L"time", "")] = FileINI->ReadString(AlliniSection->Strings[i], L"name", ""); } if(IniContent.empty())//все секции не заполнены { ShowMessage(L"Нет даннных в файле files.ini. Программа будет закрыта."); return false; } TDateTime T(Now()); String temptime = T.TimeString(); //вставляем в map временное значение. Поскольку map сортирует автоматом время //будет вставлено в правильную позицию IniContent[temptime] = L"TEMP"; //устанавливаем итератор на временное значение ItTEMPSeach = IniContent.find(temptime); //проверим что временное значение не попало на самое первое место std::mapString, String>::iterator It = IniContent.begin(); if((*It).second == L"TEMP") //тогда поднинемся на первое реальное значение в контейнере map ItTEMPSeach++; else //иначе спустимся на один итератор вниз и встанем на реальное время в контейнере map ItTEMPSeach--; IniContent.erase(temptime); //теперь удаляем времнное значение из map } else { ShowMessage(L"Не найден файл files.ini. Программа будет закрыта."); return false; } return true;} //---------------------------------------------------------------------------//СТАРТvoid __fastcall TForm1::BitBtn1Click(TObject *Sender){ if(!Control()) { Application->Terminate(); return; } VideoFileName = ExtractFilePath(Application->ExeName) + (*ItTEMPSeach).second; if(FileExists(VideoFileName)) { ShellExecute(Handle, String(L"open").c_str(), VideoFileName.c_str(), NULL, NULL, SW_MAXIMIZE); } else { ShowMessage(L"Не найден видео файл " + VideoFileName + ". Программа будет закрыта."); Application->Terminate(); return; } //тут запустим таймер анализа времени и мониторинга INI Timer1->Enabled = true; //период 30 секунд Panel1->Caption = "Сервер запущен!"; //моя картинка выглядит уродиливо когда BitBtn1->Enabled = false; поэтому: BitBtn1->Glyph = NULL; BitBtn1->Enabled = false;} //---------------------------------------------------------------------------void __fastcall TForm1::Timer1Timer(TObject *Sender){ if(!Control()) { Application->Terminate(); return; } String name = ExtractFilePath(Application->ExeName) + (*ItTEMPSeach).second; if(FileExists(name)) { if(FileExists(VideoFileName) && (VideoFileName != name)) { ShellExecute(Handle, String(L"open").c_str(), name.c_str(), NULL, NULL, SW_MAXIMIZE); VideoFileName = name; } } else { ShowMessage(L"Не найден видео файл " + (*ItTEMPSeach).second + ". Программа будет закрыта."); Application->Terminate(); }}//--------------------------------------------------------------------------- void __fastcall TForm1::BitBtn2Click(TObject *Sender){ Close();}//---------------------------------------------------------------------------