Обрезание имени файла по длинеDelphi , Синтаксис , Текст и Строки
Автор: ___Nikolay // Обрезание имени файла по длине function CutFoldersFromFileName(s: string; iLength: integer): string; var bm: TBitmap; sResult: string; iStrLen: integer; // Поменять порядок символов в строке function ChangeLettersOrder(s: string): string; var sResult: string; i: integer; begin sResult := ''; if Trim(s) <> '' then for i := Length(s) downto 1 do sResult := sResult + s[i]; Result := sResult; end; // Количество вхождений символа в строку function SymbolEntersCount(ch: char; s: string; bCaseInsensitive: boolean): integer; var i, iResult: integer; cSymbol: char; function LoCase(ch: char): char; begin if (ch in ['A'..'Z', 'А'..'Я']) then result := chr(ord(ch) + 32) else result := ch; end; begin iResult := 0; if bCaseInsensitive then ch := LoCase(ch); if s <> '' then for i := 1 to Length(s) do begin cSymbol := s[i]; if bCaseInsensitive then cSymbol := LoCase(cSymbol); if cSymbol = ch then inc(iResult); end; Result := iResult; end; // Удалить имя последнего каталога из полного имени файла function DeleteLastFolderFromFileName(sFileName: string): string; var sResult, sFName: string; begin sResult := sFileName; if Pos('\...\', sResult) <> 0 then Delete(sResult, Pos('\...\', sResult), 4); if SymbolEntersCount('\', sResult, false) < 2 then begin Result := sFileName; exit; end; sResult := ChangeLettersOrder(sResult); sFName := ChangeLettersOrder(Copy(sResult, 1, Pos('\', sResult) - 1)); // Взяли имя файла Delete(sResult, 1, Pos('\', sResult)); // Удалили имя файла Delete(sResult, 1, Pos('\', sResult)); // Удалили имя каталог перед именем файла sResult := ChangeLettersOrder(sResult) + '\...\' + sFName; Result := sResult; end; begin Result := s; if (Trim(s) = '') or (SymbolEntersCount('\', s, false) < 2) then exit; sResult := s; bm := TBitmap.Create; bm.Width := 100; bm.Height := 100; iStrLen := bm.Canvas.TextWidth(sResult); while iStrLen > iLength do begin sResult := DeleteLastFolderFromFileName(sResult); iStrLen := bm.Canvas.TextWidth(sResult); if SymbolEntersCount('\', sResult, false) < 3 then break; end; bm.Free; Result := sResult; end; Перевод контента на русский язык: Приведенный код - функция Delphi под именем
Распределение кода:
Вспомогательные функции работают следующим образом:
Код кажется простым реализацией для обрезки имён файлов, сохраняя структуру папок. Однако он может не обрабатывать все краевые случаи или не поддерживать не-английские символы правильно. Важно тщательно тестировать функцию с различными вводами, чтобы обеспечить ее надежность. Обрезание имени файла по длине - статья описывает функцию для обрезания длинного имени файла до заданной длины. Комментарии и вопросыПолучайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта. :: Главная :: Текст и Строки ::
|
||||
©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007 |