Exemple #1
0
/*=============================================================================
*NAME		:main
			:
*MODULE		:Test.cpp
			:
*FUNCTION	:メイン処理関数です
			:
*PROGRAMMED	:Y.Sasai
*HISTORY	:
*ID -- DATE ------- NOTE ------------------------------------------------------
*00 03.02.13 Y.Sasai Ver.0.00 初期作成
*/
int main( int argc, char* argv[] )
{
	TStringList slist;																			// 2003.02.13 Y.Sasai Ver.0.00 StringList.cpp読み込み用
	TStringList ysini;																			// 2003.02.13 Y.Sasai Ver.0.00 YSIniFiles.cpp読み込み用
	TYSIniFile ifile( "test.ini" );																// 2003.02.13 Y.Sasai Ver.0.00 Iniファイルクラス

	slist.LoadFromFile( "q:\\VCTest\\StringList.cpp" );											// 2003.02.13 Y.Sasai Ver.0.00 読み込み
	ysini.LoadFromFile( "q:\\VCTest\\YSIniFiles.cpp" );											// 2003.02.13 Y.Sasai Ver.0.00 読み込み
	ifile.WriteStringList( "StringList.cpp", "Source", slist );									// 2003.02.13 Y.Sasai Ver.0.00 書き込みだ
	ifile.WriteStringList( "YSIniFiles.cpp", "Source", ysini );									// 2003.02.13 Y.Sasai Ver.0.00 書き込みだ
	ifile.UpdateFile();

	return 0;
}
void __fastcall TfrmMain::LoadTimer(TObject *Sender)
{
	LoadSetting();
	if (FileExists(String(LoginerPath) +"\\Data\\"+ GameAccount + "\\Items.dat"))
	{
		TStringList *list = new TStringList();
		list->LoadFromFile(String(LoginerPath) +"\\Data\\"+ GameAccount + "\\Items.dat");
		for (int i = 0; i < list->Count; i++)
		{
			unsigned int ItemID;
			ItemID = _wtoi(list->Strings[i].w_str());
			AnsiString name = String(GetItemName(ItemID));
			if (name.IsEmpty())
			{
				name.sprintf(TEXT("未知物品(編號:%d)"), ItemID);
			}
			int index = list_drop->Items->IndexOfObject((TObject *)ItemID);
			if (index > -1)
				list_drop->Items->Delete(index);
			index = list_filter->Items->IndexOfObject((TObject *)ItemID);
			if (index < 0)
				list_filter->Items->AddObject(name, (TObject *)ItemID);
		}

		delete list;
	}
	Load->Enabled = false;

}
Exemple #3
0
//---------------------------------------------------------------------------
static TStringList * TVPGetConfigFileOptions(AnsiString filename)
{
	// load .cf file
	AnsiString errmsg;
	if(!FileExists(filename))
		errmsg = "file not found.";

	TStringList * ret = new TStringList();
	if(errmsg == "")
	{
		try
		{
			ret->LoadFromFile(filename);
		}
		catch(Exception & e)
		{
			errmsg = e.Message;
		}
		catch(...)
		{
			delete ret;
			throw;
		}
	}

	if(errmsg != "")
		TVPAddImportantLog(ttstr("(info) Loading configuration file \"") + filename.c_str() +
			"\" failed (ignoring) : " + errmsg.c_str());
	else
		TVPAddImportantLog(ttstr("(info) Loading configuration file \"") + filename.c_str() +
			"\" succeeded.");

	return ret;
}
Exemple #4
0
/*=============================================================================
*NAME		:TYSIniFile::Read
			:
*MODULE		:YSIniFiles.cpp
			:
*FUNCTION	:読み込み処理関数です
			:
*PROCESS	:・Iniファイル読み込みです。
			:
*RETURN		: true = 正常終了
			:false = エラー終了
			:
*PROGRAMMED	:Y.Sasai
*HISTORY	:
*ID -- DATE ------- NOTE ------------------------------------------------------
*00 03.02.10 Y.Sasai Ver.0.90 初期作成
*/
bool TYSIniFile::Read( void )
{
	TStringList slist;																			// 2003.02.10 Y.Sasai Ver.0.90 文字列リスト
	int tempi;
	TYSIniSection* ysection;																	// 2003.02.10 Y.Sasai Ver.0.90 セクションクラス
	CString sitem;

	if ( FileName == "" ) {																		// 2003.02.10 Y.Sasai Ver.0.90 ファイル名未設定なら…
		return ( false );																		// 2003.02.10 Y.Sasai Ver.0.90 おわる
	} else if ( FileExists( FileName ) == false ) {												// 2003.02.10 Y.Sasai Ver.0.90 そのファイルがなかったら…
		return ( false );																		// 2003.02.10 Y.Sasai Ver.0.90 おわりだ
	}

	ysection = NULL;																			// 2003.02.10 Y.Sasai Ver.0.90 セクションクラス初期化だ
	if ( slist.LoadFromFile( FileName ) == false ) {											// 2003.02.10 Y.Sasai Ver.0.90 ファイル読み込みエラーなら…
		return ( false );																		// 2003.02.10 Y.Sasai Ver.0.90 エラーだ
	}
	for ( tempi = 0; tempi < slist.Count; tempi++ ) {
		sitem = slist[tempi];
		if ( sitem == "" ) {																	// 2003.02.10 Y.Sasai Ver.0.90 空行なら…
			continue;																			// 2003.02.10 Y.Sasai Ver.0.90 つぎだ
		}
		if ( SectionCheck( sitem ) == true ) {													// 2003.02.10 Y.Sasai Ver.0.90 セクション名なら…
			ysection = Add();																	// 2003.02.10 Y.Sasai Ver.0.90 セクション追加
			ysection->Name = SectionNameGet( sitem );											// 2003.02.10 Y.Sasai Ver.0.90 セクション名設定
		} else if ( ysection != NULL ) {														// 2003.02.10 Y.Sasai Ver.0.90 セクション設定されているなら…
			ysection->Add( sitem );																// 2003.02.10 Y.Sasai Ver.0.90 セクションに追加
		}
	}

	return ( true );																			// 2003.02.10 Y.Sasai Ver.0.90 まあいいでしょ
}
void __fastcall TForm1::FileOpen1Accept(TObject *Sender)
{
String a = FileOpen1->Dialog->FileName;
if (a!=""){
// Öffnen
if (ExtractFileExt(a).UpperCase()!=".AD")a=a.SubString(1,a.Length()-ExtractFileExt(a).Length())+".ad";
TStringList *Liste = new TStringList();
Liste->LoadFromFile(a);

Max = StrToInt(Liste->Strings[0]);
Edit1->Text=Liste->Strings[1];
ListBox1->Clear();
Liste->Delete(0);
Liste->Delete(0);
for (int i=0;i<Max;i++){
ListBox1->Items->Add(Liste->Strings[i*67]);

for (int b=0;b<66;b++){
Data[i][b] = StrToInt(Liste->Strings[i*67 + b + 1]);
}
}
ListBox1->ItemIndex=0;
Selected = ListBox1->ItemIndex;
Load_Dat(Selected);
}
}
//---------------------------------------------------------------------------
void TRsyncConfigAdapter::ReadConfig(){

    if(!FileExists(CONFIG_FILE)){
        ShowMessage("Config " CONFIG_FILE " file not found");
        return;
    }


    TStringList* lines = new TStringList();
    lines->LoadFromFile(CONFIG_FILE);


    TModuleHolder* currentModule = new TModuleHolder();
    currentModule->moduleName = GLOBAL_MODULE;
    modules->Add(currentModule);

    for(int i = 0; i < lines->Count; i++){
        AnsiString moduleName = FetchModuleLine(lines->Strings[i]);

        if(moduleName.Length() > 0){
            currentModule = new TModuleHolder();
            modules->Add(currentModule);
            currentModule->moduleName = moduleName;
            continue;
        }

        currentModule->nvp->Add(lines->Strings[i]);
    }

    delete lines;
}
Exemple #7
0
void __fastcall TfMain::FormShow(TObject *Sender)
{
	TStringList* sl = new(TStringList);
	sl->NameValueSeparator = '=';

	TFile f;

	if(f.Exists(ExtractFileDir(Application->ExeName) + "\\Library.lb")){
		sl->LoadFromFile(GetCurrentDir() + "\\Library.lb");

		for(int i = 0; i < sl->Count; i++){
			TListItem* Item = lvLib->Items->Add();
			Item->Caption = ExtractFileName(sl->Names[i]);
			Item->GroupID = 0;
			Item->SubItems->Add(sl->Names[i]); //path [0]

			TStringList* ss = new(TStringList);
			ss->NameValueSeparator = '/';
			ss->Add(sl->ValueFromIndex[i]);

			Item->SubItems->Add(ss->Names[0]); //bookmark [1]
			Item->SubItems->Add(ss->ValueFromIndex[0]); //size [2]

			ss->~TStringList();
		}
	}

	sl->Clear();

	if(f.Exists(ExtractFileDir(Application->ExeName) + "\\Settings.ini")){
		sl->LoadFromFile(GetCurrentDir() + "\\Settings.ini");

		leLogin->Text = sl->ValueFromIndex[0];
		lePass->Text = sl->ValueFromIndex[1];
		if(sl->ValueFromIndex[2] == "1")
			cbRememberPass->Checked = true;
		else
            cbRememberPass->Checked = false;
		leServer->Text = sl->ValueFromIndex[3];
	}

	sl->~TStringList();
}
void HTMLDocument::OpenFile(const String &filename)
{
	TStringList *sl = new TStringList;
	FileName = filename;
	sl->LoadFromFile(filename);
	browser->OpenFile(filename);
	rcedit->Lines->Clear();
	html = sl->Text;
	rcedit->Text = html;
	setchanged(false);
	delete sl;
}
Exemple #9
0
void __fastcall TForm1::FormCreate(TObject *Sender)
{
   AnsiString ip;
   AnsiString hostname;
   int ok;
   int time;
   TPing pi;
   int aa=50;
   grLista= new TList;
   int pos;

   h= new THostList();
   TStringList *TempList = new TStringList;
   TempList->LoadFromFile("pingowaniet.txt");
   for (int i = 0; i < TempList->Count; i++)
   {
     hostname="";
     pos=TempList->Strings[i].AnsiPos(";");
     if(pos>0)
     {
        ip=TempList->Strings[i].SubString(0,pos-1);
        hostname=TempList->Strings[i].SubString(pos+1,TempList->Strings[i].Length()-pos);
     } else
       ip=TempList->Strings[i];
     h->AddHost(ip,hostname);
     // kreowanie wykresu
     gr1=Creategraph(aa);
     grLista->Add(gr1);
     this->InsertControl(gr1);
     aa=aa+127;
   };
   delete TempList;
   incre=0;
   pi.Create();
   for (int i = 0; i < h->Count(); i++)
   {
     ip=h->GetHost(i);
     pi.Ping(ip,ok,time);
     gr1=(TPerformanceGraph *)grLista->Items[i];
     if(ok==0)
     {
       time=9999;
       gr1->DataPoint(clRed,150);
     } else  gr1->DataPoint(clLime,time);
     gr1->Update();
     h->AddHostPingTime(i,time);
   };
   if(h->AnyOutTime())
      TrayIcon1->IconIndex=1;
   else
     TrayIcon1->IconIndex=0;
}
Exemple #10
0
TFastIni::TFastIni(AnsiString FN) :
    m_LastSectionIndex(-1)
{
    m_Sections = new TList();

    TStringList *SL = new TStringList();
    if (FileExists(FN)){
        SL->LoadFromFile(FN);
    }

    LoadFromString(SL);

    delete SL;
}
void ShowAboutDemoForm()
{
  if (FForm == NULL){
	FForm = new TformAboutDemo(Application);
	TStringList *ADescription = new TStringList();
	try{
	  ADescription->LoadFromFile(ExtractFilePath(Application->ExeName) + "About.txt");
	  FForm->Show();
	  FForm->redDescription->Lines->Text = ADescription->Text;
	}
	__finally{
	  delete ADescription;
	}
  }
Exemple #12
0
//---------------------------------------------------------------------------
__fastcall TEnumWinForm::TEnumWinForm(TComponent* Owner)
  : TForm(Owner)
{
  TStringList *list = new TStringList();
  list->LoadFromFile("winmsgs.txt");
  AnsiString str;
  int k;
  for(int i = 0; i < list->Count; i++)
    {
    str.SetLength(100);
    sscanf(list->Strings[i].c_str(),"%s %X\n",str.c_str(),&k);
    MsgComboBox->Items->AddObject(str,(TObject *)k);
    }
  delete list;
  MsgComboBox->ItemIndex = 0;
}
Exemple #13
0
void __fastcall TfmLauncher::ProcessConfigFile()
{
  if (FileExists(ConfigFileName)){
    TStringList *ConfigFile = new TStringList();
    __try{
      ConfigFile->LoadFromFile(ConfigFileName);

      RootDirectory = ConfigFile->Values[cRootDirectory];
      FileName = ConfigFile->Values[cFileName];

      FileName = RemoveTrailingSlash(RootDirectory) + '\\' + RemoveLeadingSlash(FileName);
    }
    __finally{
      delete ConfigFile;
    }
  }
}
Exemple #14
0
void ScanAndPrint(seakgOutput *pOutput, UnicodeString fullname) {
  TStringList *list = new TStringList();  
  list->LoadFromFile(fullname);
  int nCount = list->Count;
  for (int i = 0; i < nCount; i++)
  {
    UnicodeString str = list->Strings[i];
	  if (str.Pos(L"class") > 0 && str.Pos("__declspec") > 0) {
      UnicodeString code = str + "\r\n";
      str = str.Trim();

      UnicodeString uuid = "none";
      if (str.Pos("\"") > 0)
        uuid = str.SubString(str.Pos("\"") + 1, 36);

      UnicodeString interfacename = str.SubString(str.Pos("I"), str.Length() - str.Pos("I") + 1);
      UnicodeString interfacename2 = getName(str);
      bool bStop = false;
      int nIncr = 0;
      while (bStop == false && i < nCount) {
        i++;
        str = list->Strings[i];
        if (str.Pos("{") > 0) {
          nIncr++;
        };

        if (str.Pos("}") > 0) {
          nIncr--;
          if(nIncr == 0) bStop = true;
        };

        code += str + "\n";
      };

	  PrintDoc(pOutput, fullname, interfacename2, uuid, code);
//      std::wcout << str.c_str();
    };
  };



  /*std::wcout << "createuuidprojectname: " <<  << "\r\n";
  std::wcout << "projectname: " << projectName.c_str() << "\r\n";
  std::wcout << "fullname: " << fullname.c_str() << "\r\n";*/
};
Exemple #15
0
String GetServerIP()
{
	TStringList *list = new TStringList;

	if (FileExists(ExtractFilePath(Application->ExeName) + "\\ip.txt")) {
		try {
			list->LoadFromFile(ExtractFilePath(Application->ExeName) + "\\ip.txt");
			return list->Strings[0];
		} catch (...) {
			ShowMessage("Ошибка! Не верный ip-адрес сервера.");
			delete list;
			return "localhost";
		}
	}
	else
		return "localhost";

}
Exemple #16
0
int _tmain(int argc, _TCHAR* argv[])
{
  if( argc == 2 || argc == 3)
  {
    UnicodeString filename(argv[1]);
    TStringList *list = new TStringList();
    list->LoadFromFile(filename);
    g_pCore = new brainfuck::core();

    if(argc == 3)
    {
      UnicodeString debug(argv[2]);
      if(debug == "debug") g_pCore->Debug = true;
      else g_pCore->Debug = false;
    }

    CharReader *pReader = new CharReader();
   	pReader->setString( list->Text );
    CharParser *pParserLayerFirst = new CharParser(pReader);
	  init_layer_first( pParserLayerFirst );

    while( ! pParserLayerFirst->Eof() )
    {
      wchar_t chResult;
      int err;
      if( pParserLayerFirst->GetNextElement( chResult, err ) )
      {
        if(chResult != 0)
          std::wcout << chResult;
      }
      else
      {
        std::cout << "\r\n[err=" << (int)err << "]\n";
        break;
      };
    };
  }
  else
  {
    wcout << "Useage: brainfuck <filename> - for release\r\nor brainfuck <filename> debug - for debug\r\n";
  };
  return 0;
}
Exemple #17
0
void __fastcall TMainForm::N6Click(TObject *Sender) {
	TStringList *opentable = new TStringList;
	String buftable2;
	if (Open->Execute())

	{
		opentable->LoadFromFile(Open->FileName);
		Grid1->RowCount = opentable->Count;
		Console->Lines->Add("Открыт файл " + Open->FileName);
		for (int i = 0; i < Grid1->RowCount; i++) {
			Grid1->Rows[i]->DelimitedText = opentable->Strings[i];
		}
		delete opentable;
		Series1->Clear();
		chart *Thr = new chart(false);
		Console->Lines->Add("График построен из файла " + Open->FileName);

	}
}
Exemple #18
0
void ReceiveServerMatrix(void *Sender)
{
	String FileName = "ExpMtr\\mtr.xml";
	TStringList *list = new TStringList;
	TSendThread *Client;
	int mr;
	String err, s;
	char c[512];


	Client = new TSendThread(true);
	if (LoginForm->ShowModal() != mrOk)
		return;

	Client->User = LoginForm->UserEdit->Text;
	Client->Password = LoginForm->PasswordEdit->Text;
	Client->ms = new TMemoryStream;
	s = "SchoolCode=" + Client->User.SubString(3, 6);
	Client->ms->Write(s.c_str(), 512);
//	Client->ms->Write('\0', 1);
//    Client->ms->Position = 0;
//	Client->ms->Read(c, 512);

	Client->CommandID = "4";
	if (FileExists(ExtractFilePath(Application->ExeName) + "\\ip.txt")) {
		try {
			list->LoadFromFile(ExtractFilePath(Application->ExeName) + "\\ip.txt");
			Client->srv = list->Strings[0];
		} catch (...) {
			ShowMessage("Ошибка! Не верный ip-адрес сервера.");
			return;
		}
	}
	else
		Client->srv = "localhost";
	delete list;

	Client->FreeOnTerminate = true;
	SendForm->Show();
	SendForm->Memo1->Lines->Append("Соединение с сервером.");
	Client->Resume();
}
Exemple #19
0
/*=============================================================================
*NAME		:main
			:
*MODULE		:Test.cpp
			:
*FUNCTION	:メイン処理関数です
			:
*PROGRAMMED	:Y.Sasai
*HISTORY	:
*ID -- DATE ------- NOTE ------------------------------------------------------
*00 03.02.13 Y.Sasai Ver.0.00 初期作成
*/
int main( int argc, char* argv[] )
{
	TStringList slist;																			// 2003.02.13 Y.Sasai Ver.0.00 文字列リストクラス作成
	TStringList dlist;																			// 2003.02.13 Y.Sasai Ver.0.00 もひとつ作成
	int tempi;

	slist.LoadFromFile( "q:\\VCTest\\ReadMe.txt" );												// 2003.02.13 Y.Sasai Ver.0.00 読み込み
	printf( "行数:%d\n", slist.Count );															// 2003.02.13 Y.Sasai Ver.0.00 行数表示
	if ( slist.Count >= 12 ) {
		puts( slist[11] );
	}
	if ( slist.Count >= 21 ) {
		puts( slist[20] );
	}
	dlist.Text = slist.Text;																	// 2003.02.13 Y.Sasai Ver.0.00 文字列全体をコピー
	for ( tempi = 0; tempi < dlist.Count; tempi++ ) {
		puts( dlist[tempi] );																	// 2003.02.13 Y.Sasai Ver.0.00 全行表示
	}

	return 0;
}
Exemple #20
0
void HellPalette::Load(AnsiString NomeFile)
{
   if(FileExists(NomeFile))
   {
      if(ExtractFileExt(NomeFile)==".pal")
      {
        TStringList *TextFile = new TStringList;
        TextFile->LoadFromFile(NomeFile);
        for(int t=0;t<256;t++)
        {
           int red,green,blue;
           sscanf(TextFile->Strings[t].c_str(),"%d %d %d",&red,&green,&blue);
           Colore[t] = (TColor) (blue*0x010000 + green*0x000100 + red*0x000001);
        }
        delete TextFile;
      }
      else if(ExtractFileExt(NomeFile)==".act")
      {
         int fh = FileOpen(NomeFile,fmOpenRead);
         unsigned char *buf = new unsigned char[768];
         FileRead(fh,buf,768);
         FileClose(fh);
         for(int t=0;t<256;t++)
         {
           int red,green,blue;
           red   = buf[t*3+0];
           green = buf[t*3+1];
           blue  = buf[t*3+2];
           Colore[255-t] = (TColor) (blue*0x010000 + green*0x000100 + red*0x000001);
        }
        delete [] buf;
      }
   }
   else
   {
      MakeSeedPalette(1);
   }
}
Exemple #21
0
//---------------------------------------------------------------------------
void __fastcall TMainForm::SpeedButtonTxtLoadClick(TObject *Sender){
	if (ComboBoxTxtTerminal->Text =="") {
		ShowMessage("请先选好出票终端,请确认文件游戏玩法数据此终端可以出票。");
		return;
	}
	//打开彩票号码的文本文件,简单的校验一下,导入表格中
	if (OpenDialogTxt->Execute()){
		TStringList *lines =new TStringList();
		lines->LoadFromFile(OpenDialogTxt->FileName);
		if (lines->Count >=999) {
			ShowMessage("每次文本出票张数不能超过1000张,请分次导入出票!");
			delete lines;
			return;
		}
		for (int i =0, lineIdx=1; i <lines->Count; i++) {
			AnsiString line =lines->operator [](i);
			if (line[1] =='#') continue;        //忽略注释行
			char *lineChars =line.c_str();
			char *delim ="\t";
			char *item;
			int itemIndex =1;
			item =strtok(lineChars, delim);
			StringGridTxt->Cells[itemIndex++][lineIdx] =item;
			while(item =strtok(NULL, delim)){
				StringGridTxt->Cells[itemIndex++][lineIdx] =item;
				if (itemIndex >7) break;
			}
			lineIdx ++;
		}
		if (lines->Count >0) {
			ComboBoxTxtTerminal->Enabled =false;
            SpeedButtonTxtPrint->Enabled =true;
		}
		delete lines;
	}
}
//---------------------------------------------------------------------------
void TfrmMainFormServer::FillModuleValues(){

    if(lstModules->ItemIndex < 1){
        txtPath->Text = "";
        txtComment->Text = "";
        chkReadonly->Checked = false;
        txtPath->Enabled = false;
        txtComment->Enabled = false;
        lblPath->Enabled = false;
        lblComment->Enabled = false;
        btnBrowse->Enabled = false;
		chkReadonly->Enabled = false;
		chkUseAuth->Checked = false;
		chkUseAuth->Enabled = false;
		txtUID->Enabled = false;
		lblUID->Enabled = false;
		lblTIP->Enabled = false;
		txtPWD->Enabled = false;
		lblPWD->Enabled = false;

        return;
    }

    txtPath->Enabled = true;
    txtComment->Enabled = true;
    lblPath->Enabled = true;
    lblComment->Enabled = true;
    btnBrowse->Enabled = true;
    chkReadonly->Enabled = true;
    chkUseAuth->Enabled = true;

    AnsiString selectedModule = lstModules->Items->Strings[lstModules->ItemIndex];

	txtPath->Text = GenericUtils::ConvertPathCygwinToWindows(adapter.GetParamValue(selectedModule, "path"));
	txtComment->Text = adapter.GetParamValue(selectedModule, "comment");
	txtUID->Text = adapter.GetParamValue(selectedModule, "auth users");
    txtPWD->Text = "";


	if(txtUID->Text.Trim().Length() > 0){
		//The value for secrets file is actually a file, not the password. Therefore, I have to read the
		//value from that file.
		AnsiString secretFile = adapter.GetParamValue(selectedModule, "secrets file");

		if(secretFile.Trim().Length() == 0){
			txtPWD->Text = "";
		}else{

			txtPWD->Text = "";  //Assume there was an error reading the password.
			secretFile = GenericUtils::ConvertPathCygwinToWindows(secretFile);

			if(FileExists(secretFile)){
				TStringList* sList = new TStringList();
				sList->LoadFromFile(secretFile);

				for(int i = 0; i < sList->Count; i++){
					AnsiString userName = txtUID->Text + ":";
					if(sList->Strings[i].Trim().Pos(userName) == 1){
						//Found the appropriate user name.
						txtPWD->Text = sList->Strings[i].Trim().SubString(userName.Length() + 1, 100);
					}
				}
				delete sList;
			}
		}

		chkUseAuth->Checked = true;
		txtUID->Enabled = true;
		lblUID->Enabled = true;
		lblTIP->Enabled = true;
		txtPWD->Enabled = true;
		lblPWD->Enabled = true;
	}else{
		//If User Name is blank, I assume no authentication is used.
		chkUseAuth->Checked = false;
		txtUID->Enabled = false;
		lblUID->Enabled = false;
		lblTIP->Enabled = false;
		txtPWD->Enabled = false;
		lblPWD->Enabled = false;
	}
    chkReadonly->Checked = adapter.GetParamValue(selectedModule, "read only").LowerCase() == "true";

    txtComment->Modified = false;
}
Exemple #23
0
//---------------------------------------------------------------------------
void __fastcall TMainForm::ParseJSON (const UnicodeString& fileName)
{
	TStringList *jsonText = new TStringList;
	jsonText->LoadFromFile(fileName);

	TBytes jsonBytes = TEncoding::UTF8->GetBytes(jsonText->Text);
	delete jsonText;

	TJSONObject *json = new TJSONObject;
	json->Parse(jsonBytes, 0);

	TJSONObject *topObjectValueObj;

	// Points
	topObjectValueObj = parseJsonValue(json->Get("points")->JsonValue);

	for (int i = 0; i < topObjectValueObj->Size(); ++i) {
		TJSONPair *pair = topObjectValueObj->Get(i);
		TJSONArray *array = jsonArrayFromPair(pair);
//		Vertice *point = new Vertice(INTVALARR(array, 0),
//											 INTVALARR(array, 1),
//											 INTVALARR(array, 2));
//
//		points[pair->JsonString->Value()] = point;
	}

	delete topObjectValueObj;

	// Edges
	topObjectValueObj = parseJsonValue(json->Get("edges")->JsonValue);

	map<UnicodeString, TColor> *colors = new map<UnicodeString, TColor>;
	(*colors)["red"] = clRed;
	(*colors)["black"] = clBlack;
	(*colors)["green"] = clGreen;
	(*colors)["blue"] = clBlue;
	(*colors)["fuchsia"] = clFuchsia;
	(*colors)["lime"] = clLime;

	for (int i = 0; i < topObjectValueObj->Size(); ++i) {
		TJSONPair *pair = topObjectValueObj->Get(i);
		TJSONObject *object = parseJsonValue(pair->JsonValue);
		TJSONArray *array = jsonArrayFromPair(object->Get("vertices"));
//		Edge *edge = new Edge (points[STRVALARR(array, 0)], points[STRVALARR(array, 1)]);
//
//		if (object->Get("color")) {
//			edge->setPen((*colors)[STRVALOBJ(object, "color")], 1, psSolid);
//		}
//
//		edges[pair->JsonString->Value()] = edge;
	}

	delete colors;
	delete topObjectValueObj;

	// Objects
	topObjectValueObj = parseJsonValue(json->Get("objects")->JsonValue);

	for (int i = 0; i < topObjectValueObj->Size(); ++i) {
		TJSONPair *pair = topObjectValueObj->Get(i);
		TJSONObject *object = parseJsonValue(pair->JsonValue);
		TJSONArray *array = jsonArrayFromPair(object->Get("edges"));

		GraphicObject *graphicObject = new GraphicObject;

		for (int j = 0; j < array->Size(); ++j) {
			graphicObject->addEdge(edges[STRVALARR(array, j)]);
		}

		objects[pair->JsonString->Value()] = graphicObject;
	}

	delete topObjectValueObj;
}
Exemple #24
0
//---------------------------------------------------------------------------
bool __fastcall TMetroParams::LoadIniFile(AnsiString file)
{
  TStringList *list = new TStringList();
  try
    {
    list->LoadFromFile(file);
    int i;
    bool run = false;
    AnsiString name, value;
    for(i = 0; i < list->Count; i++)
      {
      if(!run)
        {
        if(list->Strings[i] == "[лерпн]")
          run = true;
        continue;
        }
      if(list->Strings[i].IsEmpty())
        continue;
      name = list->Strings[i].GetName();
      if(*((unsigned short *) name.c_str()) == 0x2f2f)
        continue;
      value = list->Strings[i].GetValue();
      if(name == "пюдхся_ярюмжхх")
        {
        FStationRadius = value.ToIntDef(_DEFAULT_STATION_RADIUS_);
        continue;
        }
      if(name == "нрярсо_нр_ярюмжхх")
        {
        FStationShift = value.ToIntDef(_DEFAULT_STATION_SHIFT_);
        continue;
        }
      if(name == "онке_ярхпюмхъ_ярюмжхх")
        {
        FStationBlank = value.ToIntDef(_DEFAULT_STATION_BLANK_);
        continue;
        }
      if(name == "рнкыхмю_кхмхх")
        {
        FLineWidth = value.ToIntDef(_DEFAULT_LINE_WIDTH_);
        continue;
        }
      if(name == "рнкыхмю_оепеундю")
        {
        FPassageWidth = value.ToIntDef(_DEFAULT_PASSAGE_WIDTH_);
        continue;
        }
      if(name == "нпхемрюжхъ_кхмхи")
        {
        if(value == "цнпхгнрюкэмюъ")
          {
          FLineOrient = loHorz;
          continue;
          }
        if(value == "бепрхйюкэмюъ")
          FLineOrient = loVert;
        continue;
        }
      if(name == "мюйкнм_кхмхи")
        {
        if(value == "дхюцнмюкэмши")
          {
          FLineAngle = laDiagonal;
          continue;
          }
        if(value == "нпрнцнмюкэмши")
          {
          FLineAngle = laOrthogonal;
          continue;
          }
        if(value == "кчани")
          FLineAngle = laAny;
        continue;
        }
      if(name == "рхо_янгдюмхъ_яуелш")
        {
        if(value == "мнплюкэмши")
          {
          FChartMakingType = mtStandard;
          continue;
          }
        if(value == "ярюпши")
          {
          FChartMakingType = mtOld;
          continue;
          }
        if(value == "ярюпеиьхи")
          FChartMakingType = mtOldest;
        }
      }
    delete list;
    }
  catch(...)
    {
    delete list;
    return false;
    }
  return true;
}
//---------------------------------------------------------------------------
bool __fastcall TThreadSubmitToDB::SubmitToOracle()
{
  SECURITY_ATTRIBUTES se = {0};
  se.nLength = sizeof(se);

  se.bInheritHandle       = true;
  se.lpSecurityDescriptor = NULL;
  CreatePipe(&hReadPipe,&hWritePipe,&se,0);
  STARTUPINFO si = {0};
  si.cb = sizeof(si);
  si.dwFlags     = STARTF_USESHOWWINDOW|STARTF_USESTDHANDLES;
  si.wShowWindow = SW_HIDE;
  si.hStdOutput  = hWritePipe;
  si.hStdError   = hWritePipe;
  memset(&pi,sizeof(pi),0);
  if(CreateProcess(NULL,(ToolPath + " " + DBUserName + "/" + DBPassword + "@" + DBServer +
    " control=\"" + TempFileName + "\" errors=" + MaxError).c_str(),&se,&se,true,NORMAL_PRIORITY_CLASS,NULL,WorkDir.c_str(),&si,&pi))
  {
      bool bContinue = CloseHandle(hWritePipe);
      hWritePipe = NULL;
      char chBuffer[2049];
      unsigned long Bytesread;
      AnsiString Text;
      int pos = 0;
      while(bContinue)
      {
          bContinue = ReadFile(hReadPipe,&chBuffer[0],2048,&Bytesread,NULL);
          try
          {
            chBuffer[Bytesread]   = 0;
            if(strlen(&chBuffer[0]) > 0)
            {
                Text = chBuffer;
            }
            //Text = AnsiReplaceStr(AnsiReplaceStr(Text,"\r",""),"\n","");
            if(Text != "")
            {
              if(MessageTextList->Count > MaxMessageLine)
                MessageTextList->Clear();
              if(SlentMode)
              {
                printf("%s\n",Text);
              }
              MessageTextList->Add(Text);
            }
            pos = GetRowsForSQLLDR(Text);
            if(pos > -1)
            {
              SendMessage(hWnd,MSG_SET_PROCESS_POS,pos,0);
            }
          }
          catch(...)
          {
          }
      }
      WaitForSingleObject(pi.hProcess,INFINITE);
      CloseHandle(pi.hProcess);
      pi.hProcess = NULL;
      CloseHandle(pi.hThread);
      CloseHandle(hReadPipe);
      hReadPipe = NULL;
      if(MessageTextList->Text.Pos("SQL*Loader-") > 0)
      {
        ErrorMessage = "提交数据失败,请查看状态窗口中的出错信息.";
        return false;
      }
      else
      {
        int n;
        AnsiString str;// = "逻辑记录计数";
        /*for(n = MessageTextList->Count - 1;n > -1;n--)
        {
          Text = MessageTextList->Strings[n];
          pos = Text.Pos(str);
          if(pos > 0)
          {
            pos = StrToIntEx(Text.SubString(pos + str.Length(),Text.Length() - str.Length() + 1).c_str());
            SendMessage(hWnd,MSG_SET_PROCESS_POS,pos,0);
            if(pos != TotalRecordCount)
            {
              ErrorMessage = "提交的数据行数与转换的行数不一致.转换的数据行数为:" +
                IntToStr(TotalRecordCount) + ",实际提交的行数为:" + IntToStr(pos) + ".";
            }
            break;
          }
        }
        if(n == -1)
        {
          ErrorMessage = "找不到SQLLDR关键字.导入失败.";
        }*/
        //分析日志文件
        TStringList * LogFile = new TStringList;
        LogFile->LoadFromFile(ExtractFilePath(Application->ExeName) + DestTableName + ".log");
        //if(LogFile->Pos("
        str = "成功";
        for(n = LogFile->Count - 1;n > -1;n--)
        {
          Text = LogFile->Strings[n];
          int pos1 = Text.Pos(str);
          if(pos1 > 0)
          {
            pos1 = StrToIntEx(Text.c_str());//Text.SubString(pos1 + str.Length(),Text.Length() - str.Length() + 1).c_str());
            if(TotalRecordCount - pos1 > StrToInt(MaxError))
            {
              ErrorMessage = "共有" + IntToStr(TotalRecordCount) + "行需要导入,但实际上只载入了" + IntToStr(pos1) + "行.";
            }
            break;
          }
        }
        if(n == -1)
        {
          ErrorMessage = "找不到SQLLDR关键字,无法分析日志.";
        }
        delete LogFile;
        //如果导入成功,则继续执行SQL语句
        if(ErrorMessage == "" && SQLCommandList != NULL)
        {
          for(int n = 0;n < SQLCommandList->Count;n++)
          {
            try
            {
              if(SlentMode)
              {
                printf("正在执行语句:%s\n",SQLCommandList->Strings[n]);
              }
              MessageTextList->Add("正在执行语句:" + SQLCommandList->Strings[n]);
              ADOConnection->Execute(SQLCommandList->Strings[n]);
            }
            catch(...){}
          }
        }
        //MessageTextList->Clear();
        try
        {
          for(int n = 0;n < 10;n++)
          {
            try
            {
              MessageTextList->LoadFromFile(ExtractFilePath(Application->ExeName) + DestTableName + ".log");
              break;
            }
            catch(...)
            {
            }
          }
          MessageTextList->Insert(0,"*********************************数据提交报告*********************************");
          MessageTextList->Insert(1,"完成时间:" + FormatDateTime("yyyy-mm-dd hh:nn:ss",Now()) + ".");
          MessageTextList->Insert(2,"目标表:" + DestTableName);
          MessageTextList->Insert(3,"临时文件:" + TempFileName);
          MessageTextList->Insert(4,"共转换了" + IntToStr(TotalRecordCount) + "条记录,导入了" + IntToStr(pos) + "条记录.");
          MessageTextList->Insert(5,"以下是Oracle 的 SQLLDR 生成的报告:");
        }
        catch(...)
        {
        }
        return true;
      }
  }
  else
  {
    CloseHandle(hWritePipe);
    CloseHandle(hReadPipe);
    ErrorMessage = "创建SQLLDR进程失败.请检查是否安装了Oracle客户端软件和ibill.ini中[ExternalTools]的sqlldrpath是否配置正确.";
    return false;
  }
}
Exemple #26
0
//执行任务
bool __fastcall BeginJob(
    int JobMode,              //工作模式.1:本地文件模式;2:FTP文件模式
    AnsiString ListFileName,  //列表文件名
    AnsiString BillName,      //话单类型名称
    AnsiString DBName,        //数据库连接名
    AnsiString TableName,     //表名
    AnsiString LogFileName,   //日志文件名
    AnsiString TempPath,      //临时目录
    bool TransFieldValue,     //是否对字段值进行翻译
    int  MaxError,            //导入时允许的最大错误数
    bool VerifyFile,          //是否对文件进行格式检查
    AnsiString FTPServer,     //已配置好的FTP服务器名称,FTP文件模式
    AnsiString DirList,       //取文件的目录列表
    int FTPRetryCount         //列FTP文件时允许的最大重试次数
    )
{
  SaveLog(("开始运行任务."\
          "\n话单类型:" + BillName +
          "\n数据库连接:" + DBName +
          "\n导入到表:" + TableName +
          "\n日志文件:" + LogFileName +
          "\n导入数据库允许的最大错误数:" + IntToStr(MaxError) + "\n"
          "\n临时文件放置在:" + TempPath + "驱动器\n"
          ).c_str());
  if(JobMode == 1)
  {
    SaveLog(("话单文件列表是" + ListFileName + ".\n").c_str());
  }
  else if(JobMode == 2)
  {
    SaveLog(("搜索目录列表是" + DirList + "\n" +
      "FTP服务器:" + FTPServer).c_str());
  }  
  bool Result = false;
  frmMain     = NULL;
  TStringList * FileList = NULL;
  TIdFTP      * IdFTP    = NULL;
  try
  {
    frmMain = new TfrmMain(Application);
    if(TempPath != "")
    {
      if(!DirectoryExists(TempPath) && !CreateDir(TempPath))
        SaveLog(("指定的临时文件夹无效,已改为使用默认的临时文件夹:" + frmMain->TempDirectory + "\n").c_str());
      else
      {
        if(TempPath.SubString(TempPath.Length(),1) != "\\")
          TempPath = TempPath + "\\";
        frmMain->TempDirectory = TempPath;
      }
    }
    if(!frmMain->DBConfig->IsDBNameExists(DBName))
      throw new Exception("在配置文件中找不到" + DBName + "的配置信息");
    frmExportToDB = new TfrmExportToDB(NULL);
    frmExportToDB->txtDBServer->Text = frmMain->DBConfig->GetDBAttributeValue(DBName,"Server");
    if(frmExportToDB->txtDBServer->Text == "")
      throw new Exception("没有为" + DBName + "配置服务器地址");
    frmExportToDB->cbxDBType->ItemIndex =
      frmExportToDB->cbxDBType->Items->IndexOf(
        frmMain->DBConfig->GetDBAttributeValue(DBName,"DBType"));
    if(frmExportToDB->cbxDBType->ItemIndex < 0)
    {
      throw new Exception("为" + DBName + "配置的数据库类型不正确");
    }
    FileList = new TStringList;
    if(JobMode == 1)
    {
      FileList->LoadFromFile(ListFileName);
      for(int n = FileList->Count - 1;n > -1;n--)
      {
        if(FileList->Strings[n] == "")
          FileList->Delete(n);
      }
    }
    else  //FTP模式
    {
      if(!frmMain->FTPConfig->IsFTPNameExists(FTPServer))
      {
        throw new Exception("在FTP配置文件中找不到指定的FTP服务器");
      }
      IdFTP = new TIdFTP(NULL);
      IdFTP->Host = frmMain->FTPConfig->GetFTPAttributeValue(FTPServer,"Server");
      try
      {
        IdFTP->Port = StrToInt(frmMain->FTPConfig->GetFTPAttributeValue(FTPServer,"Port"));
      }
      catch(...)
      {
        IdFTP->Port = 21;
      }
      IdFTP->Username = frmMain->FTPConfig->GetFTPAttributeValue(FTPServer,"UserName");
      IdFTP->Password = frmMain->FTPConfig->GetFTPAttributeValue(FTPServer,"Password",true);
      IdFTP->Passive  = frmMain->FTPConfig->GetFTPAttributeValue(FTPServer,"Mode").UpperCase() == "PASV";
      AnsiString FTPString  = "ftp://" +
        frmMain->FTPConfig->EncryFTPString(IdFTP->Username) + ":" +
        frmMain->FTPConfig->EncryFTPString(IdFTP->Password) + "@" + IdFTP->Host + ":" + IntToStr(IdFTP->Port);
      AnsiString PasvString;
      if(IdFTP->Passive)
        PasvString = "|PASV|";
      else
        PasvString = "||";
      int ErrCount = 0;
      while(true)
      {
        AnsiString Status;
        TStringList * FTPDirList  = new TStringList;
        AnsiString CurFTPPath     = "";
        AnsiString SearchFileName = "";
        try
        {
          if(IdFTP->Connected())
            IdFTP->Disconnect();
          Status = "连接FTP服务器" + IdFTP->Host;
          SaveLog((Status + "\n").c_str());
          IdFTP->Connect(true,FTPTimeout);
          Status = "获取FTP文件列表";
          SaveLog((Status + "\n").c_str());
          FTPDirList->Clear();
          FTPDirList->LoadFromFile(DirList);
          AnsiString FileName;
          for(int n = FTPDirList->Count - 1;n > -1;n--)
          {
            if(FTPDirList->Strings[n] == "")
              FTPDirList->Delete(n);
          }
          FileList->Clear();
          if(FTPDirList->Count == 0)
            FTPDirList->Add("");
          for(int n = 0;n < FTPDirList->Count;n++)
          {
            CurFTPPath = FTPDirList->Strings[n];            
            if(CurFTPPath == "")
            {
              CurFTPPath     = "/";
              SearchFileName = "";
            }
            else
            {
              int pos = StrRScan(CurFTPPath.c_str(),"/",-1);
              if(pos > -1)
              {
                SearchFileName = CurFTPPath.SubString(pos + 2,CurFTPPath.Length() - pos - 1);
                CurFTPPath     = CurFTPPath.SubString(1,pos + 1);
              }
              else
              {
                SaveLog(("搜索路径[" + CurFTPPath + "]不正确,已跳过该行\n").c_str());
                continue;
              }
            }
            Status = "获取文件列表" + CurFTPPath + SearchFileName;
            try
            {
              IdFTP->ChangeDir(CurFTPPath);
            }
            catch(Exception * E)
            {
              if(E->Message.Pos("No such file or directory.") > 0)
              {
                SaveLog(("搜索路径[" + CurFTPPath + "]不正确,服务器上没有找到该目录,已放弃对该目录的搜索\n").c_str());
                continue; 
              }
              else
              {
                throw new Exception(E->Message);
              }
            }
            if(SearchFileName != "" && SearchFileName.Pos("*") < 1 && SearchFileName.Pos("?") < 1)
            {
              //检查SearchFileName在FTP上是否是目录
              IdFTP->List(NULL,"",true);
              for(int k = 0;k < IdFTP->DirectoryListing->Count;k++)
              {
                FileName = IdFTP->DirectoryListing->Items[k]->FileName;
                if(FileName == "." || FileName == "..")
                  continue;
                if(FileName.LowerCase() == SearchFileName.LowerCase() && IdFTP->DirectoryListing->Items[k]->ItemType == ditDirectory) //SearchFileName是一个目录
                {
                  CurFTPPath = CurFTPPath + FileName + "/";
                  SearchFileName = "";
                  IdFTP->ChangeDir(CurFTPPath);
                  break;
                }
              }
            }
            IdFTP->List(NULL,SearchFileName,true);
            int FileCount = 0;
            for(int k = 0;k < IdFTP->DirectoryListing->Count;k++)
            {
              FileName = IdFTP->DirectoryListing->Items[k]->FileName;
              if(FileName == "." || FileName == ".." || IdFTP->DirectoryListing->Items[k]->ItemType == ditDirectory) //目录
                continue;
              FileList->Add(FTPString + CurFTPPath + PasvString + FileName);
              ++FileCount;
            }
            SaveLog((CurFTPPath + SearchFileName + "  找到" + IntToStr(FileCount) + "个文件").c_str());
          }
          delete IdFTP;
          IdFTP = NULL;
          delete FTPDirList;
          FTPDirList = NULL;
          SaveLog(("共搜索到" + IntToStr(FileList->Count) + "个文件.\n").c_str());
          for(int n = 0;n < FileList->Count;n++)
          {
            SaveLog(("找到文件:" + GetFullFTPFileName(FileList->Strings[n])).c_str());
          }
          break;
        }
        catch(Exception * E)
        {
          ++ErrCount;
          if((FTPRetryCount > 0 && ErrCount > FTPRetryCount) || (FTPRetryCount == 0 && ErrCount > 1000))
          {
            if(FTPDirList != NULL)
            {
              delete FTPDirList;
              FTPDirList = NULL;
            }
            ProcessExitCode = 5;
            throw new Exception(Status + "发生错误:" + E->Message);
          }
          else
          {
            SaveLog((Status + "发生错误:" + E->Message + "  重试" + IntToStr(ErrCount) + "\n").c_str());
          }
        }
      }
    }
    frmExportToDB->txtDBUserName->Text = frmMain->DBConfig->GetDBAttributeValue(DBName,"UserName");
    frmExportToDB->txtDBPassword->Text = frmMain->DBConfig->GetDBAttributeValue(DBName,"Password",true);
    frmExportToDB->cbxDataBases->Items->Add(frmMain->DBConfig->GetDBAttributeValue(DBName,"DataBase"));
    frmExportToDB->cbxDataBases->ItemIndex = 0;
    frmExportToDB->txtDBPort->Text = frmMain->DBConfig->GetDBAttributeValue(DBName,"Port");
    frmExportToDB->txtTableName->Text = TableName;
    frmExportToDB->txtMaxError->Text = IntToStr(MaxError);
    frmExportToDB->cbxTransFieldValue->Checked = TransFieldValue;
    if(frmExportToDB->LoadFileList(FileList,BillName))
    {
      if(SlentMode)
      {
        if(!frmExportToDB->ManualStartJob())
        {
          if(frmExportToDB->TermByUser)
          {
            ProcessExitCode = 98;
            throw new Exception("任务被用户中止");
          }
          else
          {
            throw new Exception("发生错误");
          }
        }
      }
      else
      {
        frmExportToDB->btnStartClick(NULL);
        frmExportToDB->ShowModal();
      }
      Result = true;
    }
    else
    {
      ProcessExitCode = 5;
      throw new Exception("加载文件列表失败");
    }
  }
  catch(Exception * E)
  {
    ShowErrorMessage(Application->Handle,(E->Message).c_str(),false,99);
    if(ProcessExitCode == 0)
      ProcessExitCode = 99;
    Result = false;
  }
  SaveLog("*****************任务结束.*******************");
  if(IdFTP != NULL)
  {
    delete IdFTP;
    IdFTP = NULL;
  }
  if(FileList != NULL)
  {
    delete FileList;
    FileList = NULL;
  }
  if(frmExportToDB != NULL)
  {
    delete frmExportToDB;
    frmExportToDB = NULL;
  }
  if(frmMain != NULL)
  {
    delete frmMain;
    frmMain = NULL;
  }
  return Result;
}