Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.04.23;
Скачать: CL | DM;

Вниз

Относительный путь..   Найти похожие ветки 

 
SveT ©   (2006-04-05 14:28) [0]

Здравствуйте!

Имея
DIR1 = c:\folder1
DIR2 = c:\folder1\folder2

как получить относительный путь к папке
DIR3 = \folder2

Спасибо


 
KSergey ©   (2006-04-05 14:56) [1]

DIR3=copy(DIR2, Length(DIR1), Length(DIR2) - Length(DIR1));

Примерно так


 
ASoft   (2006-04-05 15:05) [2]

ExtractFileName(DIR2)


 
SveT ©   (2006-04-05 15:21) [3]


> DIR3=copy(DIR2, Length(DIR1), Length(DIR2) - Length(DIR1));
>
>
> Примерно так

ничего не происходит!?


 
SveT ©   (2006-04-05 15:31) [4]

to ASoft

> ExtractFileName(DIR2)


Это дает только имя конечной папки, и оно не верно если между путями будет более 2-х папок


 
SveT ©   (2006-04-05 15:34) [5]

Уточняю вопрос

DIR1 = c:\folder1
DIR2 = c:\folder1\folder2\folder3\folder4

DIR3 = \folder2\folder3\folder4


 
Юрий Зотов ©   (2006-04-05 15:36) [6]

> как получить относительный путь к папке

Относительно ЧЕГО?

Относительный путь обычно берется от текущего каталога, а он может быть любым. Поэтому в общем виде задача решения не имеет, уточните условие.


 
SveT ©   (2006-04-05 15:46) [7]

Оk

В программе прописываются (пользователем) два пути DIR1 и Dir2.
Единственной условие, что оба пути на одном диске и Dir2 находится дальше dir1 и не равен dir1.

Нужно получить путь к DIR2 относительно DIR1

По моему мнению изложено предельно...


 
Плохиш ©   (2006-04-05 15:49) [8]


> SveT ©   (05.04.06 15:46) [7]

Ответ был в [1]


 
Плохиш ©   (2006-04-05 15:51) [9]


> Ответ был в [1]

Просто "+1" добавить нужно


 
SveT ©   (2006-04-05 15:58) [10]

не сочтите за труд, укажите куда "Просто "+1" добавить нужно"

Спасибо


 
Юрий Зотов ©   (2006-04-05 15:59) [11]

> SveT ©   (05.04.06 15:46) [7]

В [7] - да, изложено нормально. А в [0] - нет. Потому что относительный путь - это путь к ЦЕЛЕВОМУ калогу относительно какого-то БАЗОВОГО каталога. То есть, чтобы найти относительный путь, нужно задать не ОДИН,  а ДВА каталога - а в [0] задан только ЦЕЛЕВОЙ и о БАЗОВОМ не сказано ни слова. Поэтому в первоначальном виде задача решения не имеет. Нельзя найти что-то относительно неизвестно чего.

А в постановке [7] все просто - удалите из Dir2 начальную подстроку длиной, равной длине Dir1 плюс 1 (см. Delete).


 
SveT ©   (2006-04-05 16:12) [12]

Сделала, снова не вижу результат - в строке результата пусто


 
Плохиш ©   (2006-04-05 16:14) [13]


> SveT ©   (05.04.06 16:12) [12]
> Сделала, снова не вижу результат - в строке результата пусто

Одно из двух или ошибка в 17й строке или оптимизатор выкинул переменную как неиспользуемую.


 
Юрий Зотов ©   (2006-04-05 16:16) [14]

> SveT ©   (05.04.06 16:12) [12]

В таких случаях обычно показывают код и приводят значения переменных. А без них обычно отвечают: ошибка в 17-й строке.


 
SveT ©   (2006-04-05 16:19) [15]

Ok
Сейчас


 
SveT ©   (2006-04-05 16:28) [16]

OtPath := copy(""TarPath"", Length(""BasePath""),Length("TarPath")- Length(""BasePath"")+1);
s:= OtPath;
Edit_path.Text:=s;


 
Юрий Зотов ©   (2006-04-05 16:34) [17]

> SveT ©   (05.04.06 16:28) [16]

Барышня, не обманывайте. Это даже не скомпилируется. Приводите ТОЧНЫЙ код.


 
SveT ©   (2006-04-05 16:45) [18]

просто Internet на одном компьютере, а Delphi на другом ;-(

var
  TarPath,BasePath:string;

...

procedure TARH.BitBtn1Click (Sender: TObject);
var
   s:string;
   OtPath :String;
begin

OtPath := copy(""+TarPath+"", Length(""+BasePath+""),Length(""+TarPath+"")- Length(""+BasePath+"")+1);
s:= OtPath;
Edit_path.Text:=s;

end;


 
Плохиш ©   (2006-04-05 16:45) [19]


> SveT ©   (05.04.06 16:28) [16]

Хм, думал, что после [11], отвечать на [10] уже не нужно. Извиняюсь.
"+1" нужно добавить к первому Length(DIR1) из [1].


 
Плохиш ©   (2006-04-05 16:47) [20]


> SveT ©   (05.04.06 16:45) [18]

Хм, не понял, зачем прибавлять пустые строки к переменным?
Хотя на результат это не влияет :-)


 
Юрий Зотов ©   (2006-04-05 16:50) [21]

> SveT ©   (05.04.06 16:45) [18]

Барышня, не обманывайте. Это тоже не скомпилируется. Приводите ТОЧНЫЙ код.

А заодно подумайте, является ли вообще строка "+BasePath+" подстрокой строки "+TarPath+".


 
Плохиш ©   (2006-04-05 16:53) [22]


> Юрий Зотов ©   (05.04.06 16:50) [21]

Выделение показало, что там по два апострофа стоят ;-)


 
Юрий Зотов ©   (2006-04-05 16:54) [23]

Упс! Обман зрения - принял двойной апостроф за кавычки. Барышня, целую ручки, примите мои извинения. :o)

По сабжу - чему равны значения TarPath и BasePath при выполнении этого кода?


 
Плохиш ©   (2006-04-05 16:58) [24]


> SveT ©   (05.04.06 16:45) [18]

Раз уж ветку в "Начинаюшим" перенесли, предлагаю выполнить следующий код:

procedure TForm1.FormCreate(Sender: TObject);
var
 DIR1, DIR2, DIR3: String;
begin
 DIR1 := "c:\folder1";
 DIR2 := "c:\folder1\folder2";
 DIR3 := copy(DIR2, Length(DIR1)+1, Length(DIR2) - Length(DIR1));
 ShowMessage(DIR3);
end;


 
SveT ©   (2006-04-05 17:01) [25]

! секундочку

Проверю пути ...


 
SveT ©   (2006-04-05 17:09) [26]

Спасибо всем откликнувшимся на помощь.
Результат положительный.

Удачи!


 
Loginov Dmitry ©   (2006-04-05 22:17) [27]

Как вариант:

ExtractRelativePath("c:\folder1\",  "c:\folder1\folder2");



Страницы: 1 вся ветка

Текущий архив: 2006.04.23;
Скачать: CL | DM;

Наверх




Память: 0.53 MB
Время: 0.043 c
8-1132999209
Stany
2005-11-26 13:00
2006.04.23
Определение типа изображения путем сравнения


2-1144316517
Igorntk
2006-04-06 13:41
2006.04.23
из DBGrid в Edit


2-1144653501
Volodya_
2006-04-10 11:18
2006.04.23
Выключение питания


15-1144092909
Гарри Поттер
2006-04-03 23:35
2006.04.23
Вы можете поверить в "зеленых человечков"?


2-1144507730
Std
2006-04-08 18:48
2006.04.23
динамический двумерный массви