Текущий архив: 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.5 MB
Время: 0.012 c