Главная страница
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.025 c
2-1144658428
bagos
2006-04-10 12:40
2006.04.23
excelapplication


8-1121935386
asprofi
2005-07-21 12:43
2006.04.23
Как осущесвить перемотку видео без торможения движка DSPack ?


9-1128061133
КиТаЯц
2005-09-30 10:18
2006.04.23
Quark with GLScene using OpenBSP (есть кто шарит в Quark?)


3-1140947792
Adulgeriy
2006-02-26 12:56
2006.04.23
переход на другую БД


15-1143799822
Jeer
2006-03-31 14:10
2006.04.23
Мискрософт вот из госструктур !