![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Относительный путь.. [D7, WinXP]
SveT © (2006-04-05 14:28:00)Здравствуйте!
Имея
DIR1 = c:\folder1
DIR2 = c:\folder1\folder2
как получить относительный путь к папке
DIR3 = \folder2
Спасибо
Loginov Dmitry (2006-04-05 22:17:00) [1]Как вариант:
ExtractRelativePath('c:\folder1\', 'c:\folder1\folder2');
SveT (2006-04-05 17:09:00) [2]Спасибо всем откликнувшимся на помощь.
Результат положительный.
Удачи!
SveT (2006-04-05 17:01:00) [3]! секундочку
Проверю пути ...
Плохиш (2006-04-05 16:58:00) [4]
> 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;
Юрий Зотов (2006-04-05 16:54:00) [5]Упс! Обман зрения - принял двойной апостроф за кавычки. Барышня, целую ручки, примите мои извинения. :o)
По сабжу - чему равны значения TarPath и BasePath при выполнении этого кода?
Плохиш (2006-04-05 16:53:00) [6]
> Юрий Зотов © (05.04.06 16:50) [21]
Выделение показало, что там по два апострофа стоят ;-)
Юрий Зотов (2006-04-05 16:50:00) [7]> SveT © (05.04.06 16:45) [18]
Барышня, не обманывайте. Это тоже не скомпилируется. Приводите ТОЧНЫЙ код.
А заодно подумайте, является ли вообще строка '+BasePath+' подстрокой строки '+TarPath+'.
Плохиш (2006-04-05 16:47:00) [8]
> SveT © (05.04.06 16:45) [18]
Хм, не понял, зачем прибавлять пустые строки к переменным?
Хотя на результат это не влияет :-)
Плохиш (2006-04-05 16:45:00) [9]
> SveT © (05.04.06 16:28) [16]
Хм, думал, что после [11], отвечать на [10] уже не нужно. Извиняюсь.
"+1" нужно добавить к первому Length(DIR1)из [1].
SveT (2006-04-05 16:45:00) [10]просто 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:34:00) [11]> SveT © (05.04.06 16:28) [16]
Барышня, не обманывайте. Это даже не скомпилируется. Приводите ТОЧНЫЙ код.
SveT (2006-04-05 16:28:00) [12]OtPath := copy(''TarPath'', Length(''BasePath''),Length('TarPath')- Length(''BasePath'')+1);
s:= OtPath;
Edit_path.Text:=s;
SveT (2006-04-05 16:19:00) [13]Ok
Сейчас
Юрий Зотов (2006-04-05 16:16:00) [14]> SveT © (05.04.06 16:12) [12]
В таких случаях обычно показывают код и приводят значения переменных. А без них обычно отвечают: ошибка в 17-й строке.
Плохиш (2006-04-05 16:14:00) [15]
> SveT © (05.04.06 16:12) [12]
> Сделала, снова не вижу результат - в строке результата пусто
Одно из двух или ошибка в 17й строке или оптимизатор выкинул переменную как неиспользуемую.
SveT (2006-04-05 16:12:00) [16]Сделала, снова не вижу результат - в строке результата пусто
Юрий Зотов (2006-04-05 15:59:00) [17]> SveT © (05.04.06 15:46) [7]
В [7] - да, изложено нормально. А в [0] - нет. Потому что относительный путь - это путь к ЦЕЛЕВОМУ калогу относительно какого-то БАЗОВОГО каталога. То есть, чтобы найти относительный путь, нужно задать не ОДИН, а ДВА каталога - а в [0] задан только ЦЕЛЕВОЙ и о БАЗОВОМ не сказано ни слова. Поэтому в первоначальном виде задача решения не имеет. Нельзя найти что-то относительно неизвестно чего.
А в постановке [7] все просто - удалите из Dir2 начальную подстроку длиной, равной длине Dir1 плюс 1 (см. Delete).
SveT (2006-04-05 15:58:00) [18]не сочтите за труд, укажите куда "Просто "+1" добавить нужно"
Спасибо
Плохиш (2006-04-05 15:51:00) [19]
> Ответ был в [1]
Просто "+1" добавить нужно
Плохиш (2006-04-05 15:49:00) [20]
> SveT © (05.04.06 15:46) [7]
Ответ был в [1]