Exemplo n.º 1
0
String StrToXmlUtf8Str(String str)
{
	str = AnsiReplaceStr(str, "&", "&"); // Should be the first replacement! (because of the '&').
	str = AnsiReplaceStr(str, "\"", """);
	str = AnsiReplaceStr(str, "'", "'");
	str = AnsiReplaceStr(str, "<", "&lt;");
	str = AnsiReplaceStr(str, ">", "&gt;");
	return AnsiToUtf8(str);
}
Exemplo n.º 2
0
void TFileVersionInfo::SplitVersionNumber()
{
	String version = Values[fviFileVersion];
	if (version.IsEmpty()) return;

	version = AnsiReplaceStr(version, ",", "."); // Seperator can be ',' or '.'.

	int pos1 = 1;
	int pos2 = version.Pos(".");
	if (!pos2) return;
	FMajor = version.SubString(pos1, pos2-pos1);
	version = version.Delete(pos1, (pos2-pos1 +1));

	pos2 = version.Pos(".");
	if (!pos2) return;
	FMinor = version.SubString(pos1, pos2-pos1);
	version = version.Delete(pos1, (pos2-pos1 +1));

	pos2 = version.Pos(".");
	if (!pos2) return;
	FRelease = version.SubString(pos1, pos2-pos1);
	version = version.Delete(pos1, (pos2-pos1 +1));

	FBuild = version;
}
Exemplo n.º 3
0
String StripNonNumbers(String str)
{
	for (int i=1; i<=str.Length(); i++)
	{
		if ((str[i] < '0') || (str[i] > '9')) str[i] = ' ';
	}
	return AnsiReplaceStr(str, " ", "");
}
Exemplo n.º 4
0
void WriteToLog(String S) {
	HANDLE LogFile;
	String LogPath;
	String LogFileName;
	DWORD dwSize;
	AnsiString SS;
	TDateTime DateTime;
	LPDWORD NumberOfBytesWritten = new DWORD;

	try { // except
		DateTime = Now();

		LogPath = ExtractFilePath(Application->ExeName) + LoadStr(IDS_LOG_PATH);
		if (!DirectoryExists(LogPath))
			CreateDir(LogPath);

		LogFileName = IncludeTrailingPathDelimiter(LogPath) +
			ChangeFileExt(ExtractFileName(Application->ExeName),
			LoadStr(IDS_LOG_EXT));

		LogFile = CreateFile(LogFileName.w_str(), GENERIC_READ, FILE_SHARE_READ,
			NULL, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0);

		dwSize = 0;
		if (LogFile != INVALID_HANDLE_VALUE) {
			dwSize = GetFileSize(LogFile, NULL);
			CloseHandle(LogFile);
		}

		if (dwSize > MaxLogSize) {
			String NewFileName = IncludeTrailingPathDelimiter(LogPath) +
				OnlyFileName(Application->ExeName) + SPACE + FormatDateTime
				(LoadStr(IDS_DATETIME_FORMAT_FILENAME), DateTime) +
				LoadStr(IDS_LOG_EXT);
			MoveFile(LogFileName.w_str(), NewFileName.w_str());
		}

		LogFile = CreateFile(LogFileName.w_str(), GENERIC_WRITE,
			FILE_SHARE_READ, NULL, OPEN_ALWAYS,
			FILE_ATTRIBUTE_NORMAL | FILE_ATTRIBUTE_COMPRESSED, 0);

		if (LogFile != INVALID_HANDLE_VALUE) {
			SS = AnsiString(FormatDateTime(LoadStr(IDS_DATETIME_FORMAT_LOG),
				DateTime) + "; " + AnsiReplaceStr(S, sLineBreak, SPACE) +
				sLineBreak);

			if (SetFilePointer(LogFile, 0, NULL,
				FILE_END) != INVALID_SET_FILE_POINTER)
				WriteFile(LogFile, SS.c_str(), SS.Length(),
				NumberOfBytesWritten, NULL);

			CloseHandle(LogFile);
		}
	}
	catch (...) {
	}
}
Exemplo n.º 5
0
void TfrmResultEnterEdit::storeResult(void){
    //-- Зафиксировать результат для участника
    AnsiString shootRes = frmResultEnterEdit->mskedtCompetitorShootScore->Text.Trim();
    if(shootRes=="") shootRes = "-1"; 
    currentCompetitor.result.setShootScore(StrToInt(shootRes));
    AnsiString crossTime = AnsiReplaceStr(frmResultEnterEdit->mskedtCompetitorCrossTime->Text,
                                            " ", "0");
    currentCompetitor.result.setCrossTime(crossTime);
    currentCompetitor.storeResult();
    lblNewShootResult->Visible = false;
    lblNewCrossResult->Visible = false;    
}
Exemplo n.º 6
0
UnicodeString StringReplace(const UnicodeString & Str, const UnicodeString & From, const UnicodeString & To, const TReplaceFlags & Flags)
{
  return AnsiReplaceStr(Str, From, To);
}
Exemplo n.º 7
0
//---------------------------------------------------------------------------
AnsiString __fastcall TfrmSearch::AnalyseScript()
{
  AnsiString Script;
  AnsiString s;
  for(int n = 0;n < SkyEdit2->Lines->Count;n++)
  {
    s = SkyEdit2->Lines->Strings[n];
    s = AnsiReplaceStr(AnsiReplaceStr(AnsiReplaceStr(AnsiReplaceStr(s,"\n"," "),"\r"," ")," "," "),"\t"," ");
    if(s.SubString(1,1) == "'" || s.SubString(1,4).LowerCase() == "rem "||s.SubString(1,4).LowerCase() == "rem\t") //注释行
      continue;
    Script = Script + " " + SkyEdit2->Lines->Strings[n];
  }
  Script = AnsiReplaceStr(AnsiReplaceStr(AnsiReplaceStr(Script,"\n"," "),"\r"," "),"\t"," ");
  AnsiString LowerCaseScript = Script.LowerCase();

  AnsiString ParamString;
  TBillField * BillField;
  AnsiString LowerCaseFieldName;
  AnsiString ParamName;
  int Pos;
  for(int n = 0;n < BillFile->FieldCount;n++)
  {
    BillField = BillFile->GetBillField(n);
    LowerCaseFieldName = BillField->FieldName.LowerCase();
    Pos = LowerCaseScript.Pos(LowerCaseFieldName);
    if(Pos < 1)
      continue;
    //ParamName = BillField->FieldName.LowerCase();
    if(ParamString == "")
      //ParamString = ParamString + ParamName;
      ParamString = ParamString + BillField->FieldName;
    else
      //ParamString = ParamString + "," + ParamName;
      ParamString = ParamString + "," + BillField->FieldName;
    //将原字符串中的字段名替换为ParamName
    int k = 1;
    while(k <= LowerCaseScript.Length())
    {
      if(LowerCaseScript.SubString(k,LowerCaseFieldName.Length()) == LowerCaseFieldName)
      {
        Script = StuffString(Script,k,LowerCaseFieldName.Length(),BillField->FieldName);
        LowerCaseScript = StuffString(LowerCaseScript,k,LowerCaseFieldName.Length(),LowerCaseFieldName);
      }
      ++k;
    }
    MatchFieldList->AddObject(BillField->FieldName,(TObject *)BillField);
  }
  ParamString = "(" + ParamString + ")";
  Script = "'执行过程\nFunction MatchBill" + ParamString + "\n"
    +  "if " + Script + " then \n"\
    " MatchBill = 1\n"\
    "else\n MatchBill = 0\n"\
    "end if\n"\
    "End Function";
  SkyEdit1->Text = Script;
  //脚本语法检查
  TScriptControl * ScriptControl = new TScriptControl(this);
  ScriptControl->Language = "VBScript";
  ScriptControl->AllowUI  = false;
  LPSAFEARRAY Params; //传递给脚本的参数
  Params = SafeArrayCreateVector(VT_VARIANT, 0, MatchFieldList->Count);
  VARIANT * pData = NULL;
  SafeArrayAccessData(Params, (void **)&pData);     //锁定数据
  TList * ParamList = new TList;                    //参数列表
  VARIANT * pDataTmp;
  for(int n = 0;n < MatchFieldList->Count;n++)
  {
    pDataTmp = new VARIANT;
    pDataTmp->vt = VT_BSTR;
    ParamList->Add((TObject *)pDataTmp);
  }
  ScriptControl->AddCode(WideString(Script).c_bstr());
  bool ScriptSucceed;
  ScriptControl->Error->get_Number();
  ScriptSucceed = ScriptControl->Error->Number == 0;
  if(!ScriptSucceed)//ScriptControl->Error->Number > 0)
  {
    MessageBox(Handle,("查询脚本错误:第 " + AnsiString(ScriptControl->Error->Line) \
                       + " 行,第 " + AnsiString(ScriptControl->Error->Column) \
                       + "列出现错误 " + AnsiString(ScriptControl->Error->Number) \
                       + " (" + AnsiString(ScriptControl->Error->Description) + ")").c_str(),"错误",MB_OK | MB_ICONSTOP);
    //ScriptSucceed = false;
  }
  else
  {
  //生成参数列表
  for(int p = 0;p < MatchFieldList->Count;p++)
  {
    pDataTmp = (VARIANT *)ParamList->Items[p];
    switch(((TBillField *)MatchFieldList->Objects[p])->SortType)
    {
    case SORT_AS_STR:
      pDataTmp->bstrVal = SysAllocString(L"000");
      break;
    case SORT_AS_DATETIME:
      pDataTmp->bstrVal = SysAllocString(L"2000-01-01 00:00:00");
      break;
    case SORT_AS_NUMBER:
      pDataTmp->bstrVal = SysAllocString(L"1000");
      break;
    case SORT_AS_CURRENCY:
      pDataTmp->bstrVal = SysAllocString(L"2.18");
      break;
    }
    * (pData + p) = * pDataTmp;
  }
  //执行脚本
  try
  {
    int Found = ScriptControl->Run(WideString("MatchBill").c_bstr(),&Params);
    if(Found != 0 && Found != 1)
    {
      MessageBox(Handle,"脚本没有返回预期的0或1","脚本编译错误",MB_OK | MB_ICONSTOP);
      ScriptSucceed = false;
    }
    else
      ScriptSucceed = true;
  }
  catch(Exception & E)
  {
    ScriptSucceed = false;
  }
  if(!ScriptSucceed && ScriptControl->Error->Number != 0)
    MessageBox(Handle,("查询脚本错误:\n"\
      "第 " + AnsiString(ScriptControl->Error->Line) \
       + " 行,第 " + AnsiString(ScriptControl->Error->Column) \
       + "列出现错误\n " + AnsiString(ScriptControl->Error->Number) \
       + " (" + AnsiString(ScriptControl->Error->Description) + ")").c_str(),"脚本编译错误",MB_OK | MB_ICONSTOP);
  //释放字符串占用的空间
  for(int p = 0;p < MatchFieldList->Count;p++)
  {
    pDataTmp = (VARIANT *)ParamList->Items[p];
    SysFreeString(pDataTmp->bstrVal);
  }
  SafeArrayUnaccessData(Params);
  for(int n = 0;n < ParamList->Count;n++)
  {
    delete (VARIANT *)ParamList->Items[n];
  }
  delete ParamList;          
  delete ScriptControl;
  }
  if(ScriptSucceed)
    return Script;
  else
    return "";
}
Exemplo n.º 8
0
String ReplaceStr(String str, String from_str, String to_str)
{
	return AnsiReplaceStr(str, from_str, to_str);
}
Exemplo n.º 9
0
String StrToXmlQuotStr(String str)
{
	str = AnsiReplaceStr(str, "\"", "&quot;");
	str = AnsiReplaceStr(str, "'", "&apos;");
	return str;
}