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

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

•  TDictionary Custom Sort  6 824

•  Fast Watermark Sources  6 605

•  3D Designer  9 569

•  Sik Screen Capture  6 945

•  Patch Maker  7 391

•  Айболит (remote control)  7 340

•  ListBox Drag & Drop  6 197

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

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

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

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

•  Canvas Drawing  6 030

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

•  Поворот изображения  5 271

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

•  Paint on Shape  3 019

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

•  Головоломка Paletto  3 152

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

•  Пазл Numbrix  2 635

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

•  Игра HIP  2 361

•  Игра Go (Го)  2 278

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

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

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

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

•  HEX View  2 733

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

 
скрыть

  Форум  

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

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