Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2006.04.23;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.5 MB
Время: 0.021 c
2-1144396353
Daria
2006-04-07 11:52
2006.04.23
разделители


15-1143725508
Чародей
2006-03-30 17:31
2006.04.23
Memory Management


2-1144552946
Klopan
2006-04-09 07:22
2006.04.23
ListView


1-1142321670
oleg_
2006-03-14 10:34
2006.04.23
загрузка некоторых рисунков вызывает зависание под 98,МЕ


3-1140673919
vlgrig1961
2006-02-23 08:51
2006.04.23
Портятся индексы как с этим бороться





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский