Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Замена пробелов на %20


Автор: VAMPiRE69 1.7.2006, 14:54
Подскажите пожалуйста, задача простейшая:

есть UpFileName: string, в котором содержится название файла, например 'my best song.mp3'.
Мне надо замерить все пробелы на символ %20, чтобы получилось 'my%20best%20song.mp3'.
Пробовал с помощью цикла и pos но что-то у меня не получается!

Спасибо заранее большое! 

Автор: Palladin 1.7.2006, 15:06
Код

var
s:string;
............
for i:=1 to length(UpFileName) do 
begin
if UpFileName[i]='  '  then 
begin
s[i]:='%';
i:=i+1;
s[i]:='2';
i:=i+1;
s[i]:='0';
end
else
s[i]:=UpFileName[i];
end;
....................



P.S. Можеь и неработает, не проверял smile 


 

Автор: Poseidon 1.7.2006, 16:44
Цитата(RooR @  1.7.2006,  15:06 Найти цитируемый пост)
P.S. Можеь и неработает, не проверял
 Да оно и с первого взгляда видно, что не работает smile Хотя бы то, что ты в цикле i делаешь i:=i+1; Хотя и без этого не работает smile А вообще это погоже на попытку изобрести велосипед


Код
StringReplace(UpFileName, ' ' ,'%20' , [rfReplaceAll])



 

Автор: volvo877 1.7.2006, 16:46
VAMPiRE69,
про StringReplace не слышал никогда?  smile  

Oops, опоздал smile 

Автор: Palladin 1.7.2006, 17:47
Код

StringReplace(UpFileName, ' ' ,'%20' , [rfReplaceAll]) 


хер*ссе smile  smile  smile 

Это тут я так понимаю первый параметр строка в которой ищем, второй что ищем, третий что вставляем, а четвёртый это тпа смотреть всю строку???? smile 


P.S. Блин народ вы откуда такие умные нарисовались smile  пасейдон закинь в личку мне, те документы, по которым ты учился!


А в своём примере я просто забыл коечто сделать!

Код

procedure TForm1.Button1Click(Sender: TObject);
var
s:string[255];
UpFileName:string;
i,k:integer;
begin
i:=1;
UpFileName:=edit1.text;
for k:=1 to length(UpFileName) do
begin
if r[k]=' '  then
begin
s[i]:='%';
i:=i+1;
s[i]:='2';
i:=i+1;
s[i]:='0';
i:=i+1;
end
else
s[i]:=UpFileName[k];
i:=i+1;
end;
edit2.text:=s;
end;




Ах да за изобритение вилосипеда(с 5 колёсами) плюс мнеsmile)))))))) Работает я проверил 


P.S. Где ж ты был раньше со своим stringreplace, я этот вилосипед раз 20 изобретал на лабахsmile))) 

Автор: VAMPiRE69 2.7.2006, 13:13
Poseidon, volvo877 спасибо, действительно не знал о существовании StringReplace! работает!
RooR, спасибо и тебе за старания =)))))  

Автор: Mechanic 2.7.2006, 21:55
Можно чуть-чуть по теме? smile

UrlEscape, UrlEscapeSpaces, UrlCanonicalize ? 

Автор: Palladin 2.7.2006, 22:48
UrlEscape, UrlEscapeSpaces, UrlCanonicalize 

Механик,а что это??? 

Автор: Mechanic 2.7.2006, 22:57
Цитата(RooR @  2.7.2006,  22:48 Найти цитируемый пост)
Механик,а что это???

Это функи из "Shell Path Handling Functions".
Цитата(MSDN said)

Shell Path Handling Functions
--------------------------------------------------------------------------------
This section describes the Microsoft® Windows® Shell path handling functions. The programming elements explained in this documentation are exported by Shlwapi.dll and defined in Shlwapi.h and Shlwapi.lib.

Там исчо много всяких вкусностей. smile 

Автор: Poseidon 2.7.2006, 23:04
Mechanic, не вижу смысла подключать дополнительную библиотеку ради того, что делается простой заменой 

Автор: Yanis 2.7.2006, 23:16
Цитата(Poseidon @  3.7.2006,  00:04 Найти цитируемый пост)
Mechanic, не вижу смысла подключать дополнительную библиотеку ради того, что делается простой заменой

Просто есть и другие символы помимо пробела, которые могут содержаться в имени файла. Вот они "^&`{}][". 

Автор: Palladin 2.7.2006, 23:42
И что с этого, что если название будет содержать ^&`{}][ то stringreplace или мой " велосипед" не справится smile  

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)