UnicodeString TConfiguration::GetFileProductVersion(const UnicodeString & AFileName) const { return TrimVersion(GetFileFileInfoString(L"ProductVersion", AFileName)); }
UnicodeString TConfiguration::GetFileDescription(const UnicodeString & AFileName) { return GetFileFileInfoString(L"FileDescription", AFileName); }
UnicodeString TConfiguration::GetFileProductName(const UnicodeString & AFileName) const { return GetFileFileInfoString(L"ProductName", AFileName); }
UnicodeString TConfiguration::GetFileCompanyName(const UnicodeString & AFileName) const { // particularly in IDE build, company name is empty return GetFileFileInfoString(L"CompanyName", AFileName, true); }
//--------------------------------------------------------------------------- TStrings * __fastcall TGUIConfiguration::GetLocales() { UnicodeString LocalesExts; TStringList * Exts = new TStringList(); try { Exts->Sorted = true; Exts->CaseSensitive = false; int FindAttrs = faReadOnly | faArchive; TSearchRec SearchRec; bool Found; Found = (bool)(FindFirst(ChangeFileExt(ModuleFileName(), L".*"), FindAttrs, SearchRec) == 0); try { UnicodeString Ext; while (Found) { Ext = ExtractFileExt(SearchRec.Name).UpperCase(); if ((Ext.Length() >= 3) && (Ext != L".EXE") && (Ext != L".COM") && (Ext != L".DLL") && (Ext != L".INI")) { Ext = Ext.SubString(2, Ext.Length() - 1); LocalesExts += Ext; Exts->Add(Ext); } Found = (FindNextChecked(SearchRec) == 0); } } __finally { FindClose(SearchRec); } if (FLastLocalesExts != LocalesExts) { FLastLocalesExts = LocalesExts; FLocales->Clear(); TLanguages * Langs = Languages(); int Ext, Index, Count; wchar_t LocaleStr[255]; LCID Locale; Count = Langs->Count; Index = -1; while (Index < Count) { if (Index >= 0) { Locale = Langs->LocaleID[Index]; Ext = Exts->IndexOf(Langs->Ext[Index]); if (Ext < 0) { Ext = Exts->IndexOf(Langs->Ext[Index].SubString(1, 2)); if (Ext >= 0) { Locale = MAKELANGID(PRIMARYLANGID(Locale), SUBLANG_DEFAULT); } } if (Ext >= 0) { Exts->Objects[Ext] = reinterpret_cast<TObject*>(Locale); } else { Locale = 0; } } else { Locale = InternalLocale(); } if (Locale) { UnicodeString Name; GetLocaleInfo(Locale, LOCALE_SENGLANGUAGE, LocaleStr, LENOF(LocaleStr)); Name = LocaleStr; Name += L" - "; // LOCALE_SNATIVELANGNAME GetLocaleInfo(Locale, LOCALE_SLANGUAGE, LocaleStr, LENOF(LocaleStr)); Name += LocaleStr; FLocales->AddObject(Name, reinterpret_cast<TObject*>(Locale)); } Index++; } for (int Index = 0; Index < Exts->Count; Index++) { if ((Exts->Objects[Index] == NULL) && (Exts->Strings[Index].Length() == 3) && SameText(Exts->Strings[Index].SubString(1, 2), AdditionaLanguagePrefix)) { UnicodeString LangName = GetFileFileInfoString(L"LangName", ChangeFileExt(ModuleFileName(), UnicodeString(L".") + Exts->Strings[Index])); if (!LangName.IsEmpty()) { FLocales->AddObject(LangName, reinterpret_cast<TObject*>( AdditionaLanguageMask + Exts->Strings[Index][3])); } } } } } __finally { delete Exts; } return FLocales; }
UnicodeString TConfiguration::GetFileInfoString(const UnicodeString & Key) const { return GetFileFileInfoString(Key, L""); }
//--------------------------------------------------------------------------- UnicodeString __fastcall TConfiguration::GetFileInfoString(const UnicodeString Key) { return GetFileFileInfoString(Key, L""); }
//--------------------------------------------------------------------------- UnicodeString __fastcall TConfiguration::GetFileDescription(const UnicodeString & FileName) { return GetFileFileInfoString(L"FileDescription", FileName); }
//--------------------------------------------------------------------------- UnicodeString __fastcall TConfiguration::GetFileProductVersion(const UnicodeString FileName) { return TrimVersion(GetFileFileInfoString(L"ProductVersion", FileName)); }
//--------------------------------------------------------------------------- UnicodeString __fastcall TConfiguration::GetFileCompanyName(const UnicodeString FileName) { return GetFileFileInfoString(L"CompanyName", FileName); }
//--------------------------------------------------------------------------- UnicodeString __fastcall TConfiguration::GetFileProductName(const UnicodeString FileName) { return GetFileFileInfoString(L"ProductName", FileName); }