//--------------------------------------------------------------------- __fastcall TSynchronizeChecklistDialog::TSynchronizeChecklistDialog( TComponent * AOwner, TSynchronizeMode Mode, int Params, const UnicodeString LocalDirectory, const UnicodeString RemoteDirectory, TCustomCommandMenuEvent OnCustomCommandMenu) : TForm(AOwner) { FFormRestored = false; FMode = Mode; FParams = Params; FLocalDirectory = ExcludeTrailingBackslash(LocalDirectory); FRemoteDirectory = UnixExcludeTrailingBackslash(RemoteDirectory); FOnCustomCommandMenu = OnCustomCommandMenu; UseSystemSettings(this); UseDesktopFont(ListView); UseDesktopFont(StatusBar); FChecklist = NULL; FChangingItem = NULL; FChangingItemIgnore = false; FChangingItemMass = false; FGeneralHint = StatusBar->Hint; FOrigListViewWindowProc = ListView->WindowProc; ListView->WindowProc = ListViewWindowProc; FSystemImageList = SharedSystemImageList(false); ListView->SmallImages = FSystemImageList; // header images mut be assigned after the small images, so it cannot // be done via DFM ListView->HeaderImages = ArrowImages; CustomCommandsButton->Visible = (FOnCustomCommandMenu != NULL); MenuButton(CustomCommandsButton); }
void __fastcall TMainFrm::lvMessagePartsClick(TObject *Sender) { AnsiString LaunchFileName; //{display message parts we selected} if (lvMessageParts->Selected!=NULL) { LaunchFileName=lvMessageParts->Selected->Caption; LaunchFileName=UpperCase(LaunchFileName); if (LaunchFileName.AnsiPos(".EXE")>0) { WinExec(LaunchFileName.c_str(),SW_NORMAL); } else { char * associatedfilename=new char[MAX_PATH];//buffer for filename of associated executable HINSTANCE hinstassociation=FindExecutable(LaunchFileName.c_str(),ExcludeTrailingBackslash(ExtractFilePath(LaunchFileName)).c_str(), associatedfilename); if (hinstassociation>(HINSTANCE)32)//successful association found { AnsiString combinedfilenames=associatedfilename; combinedfilenames = combinedfilenames + " \"" + LaunchFileName + "\""; WinExec(combinedfilenames.c_str(),SW_NORMAL); } delete []associatedfilename;//free the memory } } }
//--------------------------------------------------------------------------- AnsiString __fastcall DirFromAbbr( AnsiString AbbrDir, AnsiString ProjDir ) // Получает имя директории из $(PRJ)\Obj (или типа того) { AbbrDir = ExcludeTrailingBackslash(AbbrDir); AnsiString Subs = AbbrDir.SubString( 1, 6); if (Subs == PrjDir) { AbbrDir.Delete(1,6); if (ProjDir == "") return ExtractFileDir(Project->NameOfFile) + AbbrDir; else return ProjDir + AbbrDir; } else if (Subs == MseDir) { char buff[301]; AbbrDir.Delete(1,6); if (GetMSEPathStr( pcProgram, buff, 300)) return buff + AbbrDir; return ExtractFileDir(Application->ExeName) + AbbrDir; } else if (Subs == DatDir) { char buff[301]; AbbrDir.Delete(1,6); if (GetMSEPathStr( pcData, buff, 300)) return buff + AbbrDir; return ExtractFileDir(Application->ExeName) + "\\Data" + AbbrDir; } else return AbbrDir; }
USEFORM("forms\Glyphs.cpp", GlyphsModule); /* TDataModule: File Type */ //--------------------------------------------------------------------------- #include <CoreMain.h> #include <WinInterface.h> #include <ProgParams.h> #include <VCLCommon.h> #include <Setup.h> //--------------------------------------------------------------------------- WINAPI wWinMain(HINSTANCE, HINSTANCE, LPWSTR, int) { int Result = 0; try { WinInitialize(); Application->Initialize(); Application->MainFormOnTaskBar = true; Application->ModalPopupMode = pmAuto; SetEnvironmentVariable(L"WINSCP_PATH", ExcludeTrailingBackslash(ExtractFilePath(Application->ExeName)).c_str()); CoreInitialize(); InitializeWinHelp(); InitializeSystemSettings(); // now everything is setup and mainly the configured locale is already loaded, // detect scaling type and possibly forbid further runtime changes to locale GUIConfiguration->DetectScalingType(); try { try { ConfigureInterface(); SetupInitialize(); Application->Title = AppName; Result = Execute(); } catch (Exception & E) { // Capture most errors before Usage class is released, // so that we can count them Configuration->Usage->Inc(L"GlobalFailures"); ShowExtendedException(&E); } } __finally { FinalizeSystemSettings(); FinalizeWinHelp(); CoreFinalize(); WinFinalize(); } } catch (Exception &E) { ShowExtendedException(&E); } return Result; }
bool ForceDirectories(const UnicodeString & Dir) { bool Result = true; if (Dir.IsEmpty()) { return false; } UnicodeString Dir2 = ExcludeTrailingBackslash(Dir); if ((Dir2.Length() < 3) || DirectoryExists(Dir2)) { return Result; } if (ExtractFilePath(Dir2).IsEmpty()) { return ::CreateDir(Dir2); } Result = ForceDirectories(ExtractFilePath(Dir2)) && CreateDir(Dir2); return Result; }
//--------------------------------------------------------------------------- bool TFileMasks::Matches(const UnicodeString & FileName, bool Local, bool Directory, const TParams * Params, bool & ImplicitMatch) const { bool Result; if (Local) { UnicodeString Path = ExtractFilePath(FileName); if (!Path.IsEmpty()) { Path = ToUnixPath(ExcludeTrailingBackslash(Path)); } Result = Matches(ExtractFileName(FileName, false), Directory, Path, Params, ImplicitMatch); } else { Result = Matches(UnixExtractFileName(FileName), Directory, UnixExcludeTrailingBackslash(::UnixExtractFilePath(FileName)), Params, ImplicitMatch); } return Result; }
//--------------------------------------------------------------------------- UnicodeString __fastcall TLocationProfilesDialog::GetLocalDirectory() { return ExcludeTrailingBackslash(LocalDirectoryEdit->Text); }
//--------------------------------------------------------------------------- void __fastcall TSynchronizeController::SynchronizeChange( TObject * /*Sender*/, const UnicodeString Directory, bool & SubdirsChanged) { try { UnicodeString RemoteDirectory; UnicodeString RootLocalDirectory; RootLocalDirectory = IncludeTrailingBackslash(FSynchronizeParams.LocalDirectory); RemoteDirectory = UnixIncludeTrailingBackslash(FSynchronizeParams.RemoteDirectory); UnicodeString LocalDirectory = IncludeTrailingBackslash(Directory); assert(LocalDirectory.SubString(1, RootLocalDirectory.Length()) == RootLocalDirectory); RemoteDirectory = RemoteDirectory + ToUnixPath(LocalDirectory.SubString(RootLocalDirectory.Length() + 1, LocalDirectory.Length() - RootLocalDirectory.Length())); SynchronizeLog(slChange, FMTLOAD(SYNCHRONIZE_CHANGE, (ExcludeTrailingBackslash(LocalDirectory)))); if (FOnSynchronize != NULL) { // this is completelly wrong as the options structure // can contain non-root specific options in future TSynchronizeOptions * Options = ((LocalDirectory == RootLocalDirectory) ? FOptions : NULL); TSynchronizeChecklist * Checklist = NULL; FOnSynchronize(this, LocalDirectory, RemoteDirectory, FCopyParam, FSynchronizeParams, &Checklist, Options, false); if (Checklist != NULL) { try { if (FLAGSET(FSynchronizeParams.Options, soRecurse)) { SubdirsChanged = false; assert(Checklist != NULL); for (int Index = 0; Index < Checklist->Count; Index++) { const TSynchronizeChecklist::TItem * Item = Checklist->Item[Index]; // note that there may be action saDeleteRemote even if nothing has changed // so this is sub-optimal if (Item->IsDirectory) { if ((Item->Action == TSynchronizeChecklist::saUploadNew) || (Item->Action == TSynchronizeChecklist::saDeleteRemote)) { SubdirsChanged = true; break; } else { assert(false); } } } } else { SubdirsChanged = false; } } __finally { delete Checklist; } } } } catch(Exception & E) { SynchronizeAbort(dynamic_cast<EFatal*>(&E) != NULL); } }