Количество вхождений подстроки в строке
//********************** ОПИСАНИЕ ****************************** //Функция возвращает количество подстроки в строке, //Str – строка, в которой ищется символ //SubStr – искомая подстрока //************************************************************** function GetAMountSubString(Str, SubStr: string): Integer; begin Result := 0; //Продолжаем цикл до тех пор, пока встречается подстрока в строке while Pos(SubStr, Str) > 0 do begin //Стираем подстроку в искомой строке Delete(Str, Pos(SubStr, […]
Получить подстроку из строки
//********************** ОПИСАНИЕ ****************************** //Функция возвращает определенный отрезок строки из //строки разделенной разделителем //************************************************************** //Str – строка разделенная разделителями из, //которой извлекается подстрока //Separator – строка разделитель //Index – номер отрезка function GetSubStrInStr(Str, Separator:string; Index:Integer):string; var i:Integer; begin Result:=”; i := 1; if Index > 1 then while i < Index do begin if Pos(Separator, Str) […]
Сформировать GUID
function GenerateGUID: string; var S: string[36]; P: PChar; function CreateClassID: string; var ClassID: TCLSID; W: PWideChar; begin CoCreateGuid(ClassID); StringFromCLSID(ClassID, W); Result := W; CoTaskMemFree(W); end; begin Result := Copy(CreateClassID, 2, 36); end;
Запуск внешней программы с ожиданием окончания выполнения
procedure ExecAndWait(FileName:String); var Rslt: LongBool; StartUpInfo: TStartUpInfo; ProcessInfo: TProcessInformation; begin FillChar(StartupInfo, SizeOf(TStartupInfo), #0); with StartupInfo do begin cb := SizeOf(TStartupInfo); dwFlags := STARTF_USESHOWWINDOW; wShowWindow := SW_SHOW; end; Rslt := CreateProcess(nil, PChar(FileName), nil, nil, False, CREATE_NEW_CONSOLE or NORMAL_PRIORITY_CLASS, nil, nil, StartupInfo, ProcessInfo); if Rslt then WaitForSingleObject(ProcessInfo.hProcess, INFINITE) else begin CloseHandle(ProcessInfo.hThread); CloseHandle(ProcessInfo.hProcess); end; end;
Получить путь к временной папке Windows
uses Windows function GetTempDirectory: String; var tempFolder: array[0..MAX_PATH] of Char; begin GetTempPath(MAX_PATH, @tempFolder); result := StrPas(tempFolder); end;