ммм, все какие то скрытные - пришлось самому писать тесты с помощью проверки стороних програм через командную строку:
void __fastcall TTestFNS_PFR::FormCreate(TObject *Sender)
{
// Директория для Tester
if (FileExists(ExtractFilePath(Application->ExeName)+"\\ConfigTest.cft")){
ConfigTestFNS->LoadFromFile(ExtractFilePath(Application->ExeName)+"\\ConfigTest.cft");
for (int i = 0; i < ConfigTestFNS->Count; i++) {
String s = ConfigTestFNS->Strings[i];
bool Flag = false;
String FNSPath;
String FNS = (String) s[1]+(String) s[2]+(String) s[3];
if (FNS == "FNS") {
for (int j = 1; j < s.Length()+1; j++) {
if (Flag == true){
FNSPath = FNSPath+s[j];
}
String fs = s[j];
if (fs == "="){
Flag = true;
}
}
if (FileExists(FNSPath+"\\tester.exe")) {
sEdit1->Text = FNSPath;
}
ConfigTestFNS->SaveToFile(ExtractFilePath(Application->ExeName)+"\\ConfigTest.cft");
ConfigTestFNS->Clear();
}
}
}
// Директория для CheckUFA
if (FileExists(ExtractFilePath(Application->ExeName)+"\\ConfigTest.cft")){
ConfigTestPFR->LoadFromFile(ExtractFilePath(Application->ExeName)+"\\ConfigTest.cft");
for (int i = 0; i < ConfigTestPFR->Count; i++) {
String s = ConfigTestPFR->Strings[i];
bool Flag = false;
String PFRPath;
String PFR = (String) s[1]+(String) s[2]+(String) s[3];
if (PFR == "PFR") {
for (int j = 1; j < s.Length()+1; j++) {
if (Flag == true){
PFRPath = PFRPath+s[j];
}
String fs = s[j];
if (fs == "="){
Flag = true;
}
}
if (FileExists(PFRPath+"\\Check.exe")) {
sEdit2->Text = PFRPath;
}
ConfigTestPFR->SaveToFile(ExtractFilePath(Application->ExeName)+"\\ConfigTest.cft");
ConfigTestPFR->Clear();
}
}
//Создали обьект класса TRegistry
TRegistry *reg=new TRegistry();
reg->RootKey=HKEY_LOCAL_MACHINE;
//Строка в которую мы занесем значение параметра из реестра Firebird
reg->OpenKeyReadOnly("SOFTWARE\\Microsoft\\Windows\\Cu rrentVersion\\Uninstall\\FBDBServer_2_0_is1");
FirebirdPath=reg->ReadString("InstallLocation");
reg->CloseKey();
delete reg;
if (FirebirdPath< " ") {
sStBar1->Panels->Items[0]->Text = "Не установленна программа: \"Firebird\" для \"CheckUFA\".";
}
}
// Поиск директорий в Registry установленных Tester и CheckUFA
if (!FileExists(ExtractFilePath(Application->ExeName)+"\\ConfigTest.cft")||(sEdit1->Text<=" ")||(sEdit2->Text<=" ")){
//Создали обьект класса TRegistry
TRegistry *reg=new TRegistry();
reg->RootKey=HKEY_LOCAL_MACHINE;
//Строка в которую мы занесем значение параметра из реестра Tester
reg->OpenKeyReadOnly("SOFTWARE\\Microsoft\\Windows\\Cu rrentVersion\\Uninstall\\Tester_is1");
AnsiString PathTester=reg->ReadString("Inno Setup: App Path");
reg->CloseKey();
//Строка в которую мы занесем значение параметра из реестра CheckUFA
reg->OpenKeyReadOnly("SOFTWARE\\CheckXmlUfa");
AnsiString PathUfa=reg->ReadString("InstallPath");
reg->CloseKey();
//Строка в которую мы занесем значение параметра из реестра Firebird
reg->OpenKeyReadOnly("SOFTWARE\\Microsoft\\Windows\\Cu rrentVersion\\Uninstall\\FBDBServer_2_0_is1");
FirebirdPath=reg->ReadString("InstallLocation");
reg->CloseKey();
delete reg;
String PoNoPath;
PoNoPath = "";
if ((PathTester>" ")||(PathUfa>" ")||(FirebirdPath>" ")) {
if (PathTester>" ") {
ConfigTestFNS->Add("FNS Path="+PathTester);
sEdit1->Text = PathTester;
}
else {
PoNoPath = "\"Tester\"";
}
if (PathUfa>" ") {
ConfigTestFNS->Add("PFR Path="+PathUfa);
sEdit2->Text = PathUfa;
}
else {
if (PoNoPath >" ") {
PoNoPath = PoNoPath + ", \"CheckUFA\"";
}
else {
PoNoPath = "\"CheckUFA\"";
}
}
if (FirebirdPath< " ") {
if (PoNoPath >" ") {
PoNoPath = PoNoPath + ", \"Firebird\"";
}
else {
PoNoPath = "\"Firebird\"";
}
}
if (PoNoPath>" ") {
sStBar1->Panels->Items[0]->Text = "Не установленна программа(ы): "+PoNoPath+".";
}
ConfigTestFNS->SaveToFile(ExtractFilePath(Application->ExeName)+"\\ConfigTest.cft");
ConfigTestFNS->Clear();
}
}
}
//---------------------------------------------------------------------------
void __fastcall TTestFNS_PFR::sButton2Click(TObject *Sender)
{
if (sListBox1->Count>0) {
sProgressBar1->Position = 0;
sProgressBar1->Max = sListBox1->Count;
bool OtchPFRClear = true;
bool OtchFNSClear = true;
String TestCheck = "0";
int ChetFilePFR = 0;
String DirFile;
sStBar1->Panels->Items[0]->Text = "";
for (int i = 0; i < sListBox1->Count; i++) {
String FileTest = sListBox1->Items->Strings[i];
// тест ФНС Tester
if ((sEdit1->Text>" ")&&(sListBox2->Items->Strings[i] == "ФНС")) {
String DirTest = sEdit1->Text+"\\tester.exe";
String FileTestTemp = ExtractFilePath(Application->ExeName)+"\\Temp";
String FileT = ExtractFileName(FileTest);
FileTestTemp = FileTestTemp+"\\FNS_TEST_"+DateToStr(Date());
if (OtchFNSClear == true) {
OtchFNSClear = false;
if (!DirectoryExists(FileTestTemp)){
MkDir(FileTestTemp);
}
else {
FileListBox1->Directory = FileTestTemp;
for (int g = 0; g < FileListBox1->Count; g++) {
DeleteFileA(FileListBox1->Directory +"\\" + FileListBox1->Items->Strings[g]);
}
}
}
FileTestTemp = FileTestTemp+"\\"+FileT;
CopyFileA(FileTest.c_str(), FileTestTemp.c_str(), 0);
ShellExecute(NULL, "open", DirTest.c_str(), FileTestTemp.c_str(), NULL, SW_RESTORE);
TestCheck = "1";
}
// тест ПФР CheckUFA
if ((sEdit2->Text>" ")&&(sListBox2->Items->Strings[i] == "ПФР")&&(FirebirdPath > " ")) {
String DirTest = sEdit2->Text+"\\Check.exe";
ChetFilePFR = ChetFilePFR+1;
// для Теста (куда складывать отчеты)
//DirFile = ExtractFilePath(FileTest)+"ОТЧЕТ_"+DateToStr(Date( ));
String DirFile = ExtractFilePath(Application->ExeName)+"Temp\\ПФР_ОТЧЕТ_"+DateToStr(Date());
FileTest = FileTest + " " + DirFile + "\\";
if (OtchPFRClear == true) {
if (DirectoryExists(DirFile)) {
FileListBox1->Directory = DirFile;
if (FileListBox1->Count>0) {
for (int j = 0; j < FileListBox1->Count; j++) {
DeleteFileA(FileListBox1->Directory +"\\" + FileListBox1->Items->Strings[j]);
}
FileListBox1->Update();
}
}
else {
MkDir(DirFile);
}
OtchPFRClear = false;
}
ShellExecute(NULL, "open", DirTest.c_str(), FileTest.c_str(), NULL, SW_RESTORE);
TestCheck = "1";
}
sProgressBar1->Position = i+1;
}
ChetFilePFR = ChetFilePFR*2;
// показ отчетов ПФР
if (OtchPFRClear==false) {
int RefreshChet = 0;
// метка для перезапуска проверки количества ожидаемых файлов
RefreshFileList:
FileListBox1->Update();
if (FileListBox1->Count == ChetFilePFR) {
String OthFile="";
String Oth="";
for (int f = FileListBox1->Count-1; f >= 0 ; f--) {
OthFile = FileListBox1->Directory +"\\" +FileListBox1->Items->Strings[f];
ShellExecute(NULL, "open",OthFile.c_str(), NULL, NULL, SW_RESTORE);
Sleep(2000);
}
}
else {
// если не дождались ожидаемое количество отчетов, то выходим из ожидания и показываем
// отчеты какие успели сформироваться
if (RefreshChet>ChetFilePFR*10) {
String OthFile2="";
for (int f2 = FileListBox1->Count-1; f2 >= 0; f2--) {
OthFile2 = FileListBox1->Directory +"\\" +FileListBox1->Items->Strings[f2];
ShellExecute(NULL, "open", OthFile2.c_str(), NULL, NULL, SW_RESTORE);
Sleep(2000);
}
sStBar1->Panels->Items[0]->Text = "Не все ПФР отчеты были созданы. Ожидалось="+IntToStr(ChetFilePFR*2) + ", создалось="+IntToStr(FileListBox1->Count)+".";
goto EndFileList;
}
// считаем и ждем когда создадутся отчеты ПФР
RefreshChet = RefreshChet+1;
Sleep(2000);
goto RefreshFileList;
}
}
// метка выхода из ожидания количества файлов (если не дождались количество файлов)
EndFileList:
if (TestCheck == "0") {
if (FirebirdPath< " ") {
sStBar1->Panels->Items[0]->Text = "Не установленна программа: \"Firebird\" для \"CheckUFA\".";
sProgressBar1->Position = 0;
}
else {
sStBar1->Panels->Items[0]->Text = "Не установленны программы для тестирования.";
sProgressBar1->Position = 0;
}
}
else {
sStBar1->Panels->Items[0]->Text = "Тестирование файла(ов) закончено.";
}
}
else {
sStBar1->Panels->Items[0]->Text = "Не выбран(ы) файл(ы) для тестирования.";
sProgressBar1->Position = 0;
}
}
//---------------------------------------------------------------------------
void __fastcall TTestFNS_PFR::FormCreate(TObject *Sender)
{
// Директория для Tester
if (FileExists(ExtractFilePath(Application->ExeName)+"\\ConfigTest.cft")){
ConfigTestFNS->LoadFromFile(ExtractFilePath(Application->ExeName)+"\\ConfigTest.cft");
for (int i = 0; i < ConfigTestFNS->Count; i++) {
String s = ConfigTestFNS->Strings[i];
bool Flag = false;
String FNSPath;
String FNS = (String) s[1]+(String) s[2]+(String) s[3];
if (FNS == "FNS") {
for (int j = 1; j < s.Length()+1; j++) {
if (Flag == true){
FNSPath = FNSPath+s[j];
}
String fs = s[j];
if (fs == "="){
Flag = true;
}
}
if (FileExists(FNSPath+"\\tester.exe")) {
sEdit1->Text = FNSPath;
}
ConfigTestFNS->SaveToFile(ExtractFilePath(Application->ExeName)+"\\ConfigTest.cft");
ConfigTestFNS->Clear();
}
}
}
// Директория для CheckUFA
if (FileExists(ExtractFilePath(Application->ExeName)+"\\ConfigTest.cft")){
ConfigTestPFR->LoadFromFile(ExtractFilePath(Application->ExeName)+"\\ConfigTest.cft");
for (int i = 0; i < ConfigTestPFR->Count; i++) {
String s = ConfigTestPFR->Strings[i];
bool Flag = false;
String PFRPath;
String PFR = (String) s[1]+(String) s[2]+(String) s[3];
if (PFR == "PFR") {
for (int j = 1; j < s.Length()+1; j++) {
if (Flag == true){
PFRPath = PFRPath+s[j];
}
String fs = s[j];
if (fs == "="){
Flag = true;
}
}
if (FileExists(PFRPath+"\\Check.exe")) {
sEdit2->Text = PFRPath;
}
ConfigTestPFR->SaveToFile(ExtractFilePath(Application->ExeName)+"\\ConfigTest.cft");
ConfigTestPFR->Clear();
}
}
//Создали обьект класса TRegistry
TRegistry *reg=new TRegistry();
reg->RootKey=HKEY_LOCAL_MACHINE;
//Строка в которую мы занесем значение параметра из реестра Firebird
reg->OpenKeyReadOnly("SOFTWARE\\Microsoft\\Windows\\Cu rrentVersion\\Uninstall\\FBDBServer_2_0_is1");
FirebirdPath=reg->ReadString("InstallLocation");
reg->CloseKey();
delete reg;
if (FirebirdPath< " ") {
sStBar1->Panels->Items[0]->Text = "Не установленна программа: \"Firebird\" для \"CheckUFA\".";
}
}
// Поиск директорий в Registry установленных Tester и CheckUFA
if (!FileExists(ExtractFilePath(Application->ExeName)+"\\ConfigTest.cft")||(sEdit1->Text<=" ")||(sEdit2->Text<=" ")){
//Создали обьект класса TRegistry
TRegistry *reg=new TRegistry();
reg->RootKey=HKEY_LOCAL_MACHINE;
//Строка в которую мы занесем значение параметра из реестра Tester
reg->OpenKeyReadOnly("SOFTWARE\\Microsoft\\Windows\\Cu rrentVersion\\Uninstall\\Tester_is1");
AnsiString PathTester=reg->ReadString("Inno Setup: App Path");
reg->CloseKey();
//Строка в которую мы занесем значение параметра из реестра CheckUFA
reg->OpenKeyReadOnly("SOFTWARE\\CheckXmlUfa");
AnsiString PathUfa=reg->ReadString("InstallPath");
reg->CloseKey();
//Строка в которую мы занесем значение параметра из реестра Firebird
reg->OpenKeyReadOnly("SOFTWARE\\Microsoft\\Windows\\Cu rrentVersion\\Uninstall\\FBDBServer_2_0_is1");
FirebirdPath=reg->ReadString("InstallLocation");
reg->CloseKey();
delete reg;
String PoNoPath;
PoNoPath = "";
if ((PathTester>" ")||(PathUfa>" ")||(FirebirdPath>" ")) {
if (PathTester>" ") {
ConfigTestFNS->Add("FNS Path="+PathTester);
sEdit1->Text = PathTester;
}
else {
PoNoPath = "\"Tester\"";
}
if (PathUfa>" ") {
ConfigTestFNS->Add("PFR Path="+PathUfa);
sEdit2->Text = PathUfa;
}
else {
if (PoNoPath >" ") {
PoNoPath = PoNoPath + ", \"CheckUFA\"";
}
else {
PoNoPath = "\"CheckUFA\"";
}
}
if (FirebirdPath< " ") {
if (PoNoPath >" ") {
PoNoPath = PoNoPath + ", \"Firebird\"";
}
else {
PoNoPath = "\"Firebird\"";
}
}
if (PoNoPath>" ") {
sStBar1->Panels->Items[0]->Text = "Не установленна программа(ы): "+PoNoPath+".";
}
ConfigTestFNS->SaveToFile(ExtractFilePath(Application->ExeName)+"\\ConfigTest.cft");
ConfigTestFNS->Clear();
}
}
}
//---------------------------------------------------------------------------
void __fastcall TTestFNS_PFR::sButton2Click(TObject *Sender)
{
if (sListBox1->Count>0) {
sProgressBar1->Position = 0;
sProgressBar1->Max = sListBox1->Count;
bool OtchPFRClear = true;
bool OtchFNSClear = true;
String TestCheck = "0";
int ChetFilePFR = 0;
String DirFile;
sStBar1->Panels->Items[0]->Text = "";
for (int i = 0; i < sListBox1->Count; i++) {
String FileTest = sListBox1->Items->Strings[i];
// тест ФНС Tester
if ((sEdit1->Text>" ")&&(sListBox2->Items->Strings[i] == "ФНС")) {
String DirTest = sEdit1->Text+"\\tester.exe";
String FileTestTemp = ExtractFilePath(Application->ExeName)+"\\Temp";
String FileT = ExtractFileName(FileTest);
FileTestTemp = FileTestTemp+"\\FNS_TEST_"+DateToStr(Date());
if (OtchFNSClear == true) {
OtchFNSClear = false;
if (!DirectoryExists(FileTestTemp)){
MkDir(FileTestTemp);
}
else {
FileListBox1->Directory = FileTestTemp;
for (int g = 0; g < FileListBox1->Count; g++) {
DeleteFileA(FileListBox1->Directory +"\\" + FileListBox1->Items->Strings[g]);
}
}
}
FileTestTemp = FileTestTemp+"\\"+FileT;
CopyFileA(FileTest.c_str(), FileTestTemp.c_str(), 0);
ShellExecute(NULL, "open", DirTest.c_str(), FileTestTemp.c_str(), NULL, SW_RESTORE);
TestCheck = "1";
}
// тест ПФР CheckUFA
if ((sEdit2->Text>" ")&&(sListBox2->Items->Strings[i] == "ПФР")&&(FirebirdPath > " ")) {
String DirTest = sEdit2->Text+"\\Check.exe";
ChetFilePFR = ChetFilePFR+1;
// для Теста (куда складывать отчеты)
//DirFile = ExtractFilePath(FileTest)+"ОТЧЕТ_"+DateToStr(Date( ));
String DirFile = ExtractFilePath(Application->ExeName)+"Temp\\ПФР_ОТЧЕТ_"+DateToStr(Date());
FileTest = FileTest + " " + DirFile + "\\";
if (OtchPFRClear == true) {
if (DirectoryExists(DirFile)) {
FileListBox1->Directory = DirFile;
if (FileListBox1->Count>0) {
for (int j = 0; j < FileListBox1->Count; j++) {
DeleteFileA(FileListBox1->Directory +"\\" + FileListBox1->Items->Strings[j]);
}
FileListBox1->Update();
}
}
else {
MkDir(DirFile);
}
OtchPFRClear = false;
}
ShellExecute(NULL, "open", DirTest.c_str(), FileTest.c_str(), NULL, SW_RESTORE);
TestCheck = "1";
}
sProgressBar1->Position = i+1;
}
ChetFilePFR = ChetFilePFR*2;
// показ отчетов ПФР
if (OtchPFRClear==false) {
int RefreshChet = 0;
// метка для перезапуска проверки количества ожидаемых файлов
RefreshFileList:
FileListBox1->Update();
if (FileListBox1->Count == ChetFilePFR) {
String OthFile="";
String Oth="";
for (int f = FileListBox1->Count-1; f >= 0 ; f--) {
OthFile = FileListBox1->Directory +"\\" +FileListBox1->Items->Strings[f];
ShellExecute(NULL, "open",OthFile.c_str(), NULL, NULL, SW_RESTORE);
Sleep(2000);
}
}
else {
// если не дождались ожидаемое количество отчетов, то выходим из ожидания и показываем
// отчеты какие успели сформироваться
if (RefreshChet>ChetFilePFR*10) {
String OthFile2="";
for (int f2 = FileListBox1->Count-1; f2 >= 0; f2--) {
OthFile2 = FileListBox1->Directory +"\\" +FileListBox1->Items->Strings[f2];
ShellExecute(NULL, "open", OthFile2.c_str(), NULL, NULL, SW_RESTORE);
Sleep(2000);
}
sStBar1->Panels->Items[0]->Text = "Не все ПФР отчеты были созданы. Ожидалось="+IntToStr(ChetFilePFR*2) + ", создалось="+IntToStr(FileListBox1->Count)+".";
goto EndFileList;
}
// считаем и ждем когда создадутся отчеты ПФР
RefreshChet = RefreshChet+1;
Sleep(2000);
goto RefreshFileList;
}
}
// метка выхода из ожидания количества файлов (если не дождались количество файлов)
EndFileList:
if (TestCheck == "0") {
if (FirebirdPath< " ") {
sStBar1->Panels->Items[0]->Text = "Не установленна программа: \"Firebird\" для \"CheckUFA\".";
sProgressBar1->Position = 0;
}
else {
sStBar1->Panels->Items[0]->Text = "Не установленны программы для тестирования.";
sProgressBar1->Position = 0;
}
}
else {
sStBar1->Panels->Items[0]->Text = "Тестирование файла(ов) закончено.";
}
}
else {
sStBar1->Panels->Items[0]->Text = "Не выбран(ы) файл(ы) для тестирования.";
sProgressBar1->Position = 0;
}
}
//---------------------------------------------------------------------------
Комментарий