Недавно добавленные исходники

•  DeLiKaTeS Tetris (Тетрис)  4 280

•  TDictionary Custom Sort  6 328

•  Fast Watermark Sources  6 120

•  3D Designer  9 045

•  Sik Screen Capture  6 441

•  Patch Maker  6 860

•  Айболит (remote control)  6 839

•  ListBox Drag & Drop  5 715

•  Доска для игры Реверси  96 548

•  Графические эффекты  7 057

•  Рисование по маске  6 358

•  Перетаскивание изображений  5 230

•  Canvas Drawing  5 604

•  Рисование Луны  5 302

•  Поворот изображения  4 852

•  Рисование стержней  3 439

•  Paint on Shape  2 702

•  Генератор кроссвордов  3 578

•  Головоломка Paletto  2 870

•  Теорема Монжа об окружностях  3 679

•  Пазл Numbrix  2 411

•  Заборы и коммивояжеры  3 093

•  Игра HIP  2 050

•  Игра Go (Го)  1 977

•  Симулятор лифта  2 340

•  Программа укладки плитки  2 040

•  Генератор лабиринта  2 497

•  Проверка числового ввода  2 187

•  HEX View  2 510

•  Физический маятник  2 128

 
скрыть

  Форум  

Delphi FAQ - Часто задаваемые вопросы

| Базы данных | Графика и Игры | Интернет и Сети | Компоненты и Классы | Мультимедиа |
| ОС и Железо | Программа и Интерфейс | Рабочий стол | Синтаксис | Технологии | Файловая система |



Delphi Sources

Сокращенное имя каталога



Есть имя каталога:

c:\windows\media\temp\abc\sound\chime.wav

Мне необходима сокращенная запись, такая как

c:\windows\..\sound\chime.wav

а не полный путь к файлу.

Есть ли простой способ для этого?

Я разработал процедуру, которая делает нечто похожее. Она сокращает имя каталога, когда он и текущий путь имеют в корне тот же диск и/или часть пути, совпадающие вначале. Полученный результат (сокращенная запись) действительно легче для восприятия. Я производил кодирование в шестнадцатиричном редакторе в Borland Pascal и некоторое время не использовал. Я не думаю, что данный код может быть несовместим с последними версиями Delphi.


function shortenfilename(s: string): string;
var
  drive, curdrive: string[2];
  dir, curdir: string[80];
  name: string[20];
  ext: string[5];
  i: byte;
begin
  for i := 1 to length(s) do
    s[i] := upcase(s[i]);
  s := fexpand(s);
  fsplit(s, dir, name, ext);
  drive := copy(dir, 1, 2);
  dir := copy(dir, 4, length(dir) - 3);
  getdir(0, curdir);
  curdrive := copy(curdir, 1, 2);
  curdir := copy(curdir, 4, length(curdir) - 3) + '\';
  if drive = curdrive then
  begin
    if copy(dir, 1, length(curdir)) = curdir then
    begin
      i := length(curdir);
      if length(dir) <> i then
        dir := dir + '\';
      shortenfilename := copy(dir, i + 1, length(dir) - i - 1) + name + ext;
    end
    else
      shortenfilename := copy(s, 3, length(s) - 2);
  end
  else
    shortenfilename := s;
end;








Copyright © 2004-2025 "Delphi Sources" by BrokenByte Software. Delphi World FAQ

Группа ВКонтакте