![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Выделение подстроки из строки [D6, D7, WinXP]
Volf_555 © (2005-10-21 20:15:00)Нужно получить следующие:
1) есть строка, например: E:\Text\E-mail
2) нужно получить E:\Text
3) как на Delphi такое сделать?
Пробывал следующий код - определяет только первые три символа, то есть: Е:\
procedure TForm1.Button1Click(Sender: TObject);
var
s:String;
v:Integer;
p:Integer;
begin
s:=edit1.Text;
for v:=Length(s) downto 0 do
begin
if s[v]='\' then
begin
p:=pos('\',s);
break;
end;
end;
edit2.Text:=copy(s,0,p);
end;
Anatoly Podgoretsky (2005-10-22 16:50:00) [1]Zeqfreed © (22.10.05 13:52) [7]
Ответ соответствует вопросу и делает это оптимальным путем.
Antonn (2005-10-22 15:42:00) [2]и не скопировал, а набрал:)
Antonn (2005-10-22 15:41:00) [3]Anatoly Podgoretsky © (22.10.05 12:53) [6]
как был так и скопировал, никто же не просил '.a' добавлять.
ну я в директорию в файл превратил:)
Zeqfreed (2005-10-22 13:52:00) [4]Anatoly Podgoretsky © (22.10.05 12:53) [6]
Незнаю даже, в общем-то да, правильно и оптимально. Вчера [1] мне показалось наиболее правильным, хотя если бы сам решал такую задачу, то не использовал стандартные ф-ции.
Да, и уж если говорить о правильности, то разделителем каталогов может быть как "\" так и "/" =)
Anatoly Podgoretsky (2005-10-22 12:53:00) [5]Zeqfreed © (21.10.05 22:38) [4]
Чего Antonn то обругал, по сути правильно и оптимально, только вот примеры не умеет правильно копировать, как был так и скопировал, никто же не просил '.a' добавлять.
Antonn (2005-10-22 06:56:00) [6]Zeqfreed © (21.10.05 22:38) [4]
ну работает ведь? Не так уж страшно... для текущего задания вообще подошло бы и такое - extractfiledir('E:\Text\E-mail'+'.a');
Zeqfreed (2005-10-21 22:38:00) [7]palva © (21.10.05 22:01) [3]
Antonn © (21.10.05 20:43) [2]
Черезжопогландовырывательством промышляете?
palva (2005-10-21 22:01:00) [8]
procedure TForm1.Button1Click(Sender: TObject);
var
s:String;
v:Integer;
p:Integer;
begin
s:=edit1.Text;
for v:=Length(s) downto 1 do
begin
if s[v]='\' then
begin
SetLength(s, v-1);
break;
end;
end;
edit2.Text:=s;
end;
Antonn (2005-10-21 20:43:00) [9]Volf_555 (21.10.05 20:15)
1) есть строка, например: E:\Text\E-mail
caption:=extractfiledir(extractfiledir(E:\Text\E-mail)+'.a');
TUser (2005-10-21 20:36:00) [10]ExcludeTrailingBackslash(ExtractFilePath('e:\text\e-mail'))