Главная страница
    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.5 MB
Время: 0.012 c
2-1144145688
Ламот
2006-04-04 14:14
2006.04.23
Запуск стороннего приложения


15-1143805947
oldman
2006-03-31 15:52
2006.04.23
Бывают же такие руки...


15-1143818149
antonn
2006-03-31 19:15
2006.04.23
Ну вот, продали дельфи...


1-1142933027
Darvin
2006-03-21 12:23
2006.04.23
Ошибка "Canvas does not allow drawing"


2-1144481619
Der Nechk@ssoff
2006-04-08 11:33
2006.04.23
Toolbar





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский