27.06.2017, Vladimír Klaus, navštíveno 3332x
Delphi
HTML/CSS
Pokud potřebujete volat nějakou http adresu, nebývá to většinou problém. Ale jen do té chvíle, kdy tam máte parametry, češtinu, mezery a jiné problematické věci. A tyto věci je třeba kódovat, jenže ani v takovém případě není úplně jasné, jak přesně s tím naložit a je třeba se rozhodovat dle konkrétní situace.
//1. toto je špatně, protože to zakóduje vše, včetně lomítek atd.,
//takže to není žádná adresa
s:=TNetEncoding.URL.Encode
('https://www.google.com/maps/place/Terezínská 701/4, Praha 9, 190 00');
//2. toto je špatně, protože tam nechá lomítko i u 701/4 a Google
//to odřízne, jako nepotřebnou část a najde 701, resp. 701/6
s:=TIdURI.URLEncode
('https://www.google.com/maps/place/Terezínská 701/4, Praha 9, 190 00');
//3. toto funguje = začátek je OK a adresa je zakódovaná včetně lomítka
s:='https://www.google.com/maps/place/' +
TNetEncoding.URL.Encode('Terezínská 701/4, Praha 9, 190 00');
SimpleRun(s);
Co dělá SimpleRun už asi víte, ale pro jistotu zopakuji
{*----------------------------------------------------------------------
Jednoduché spuštění aplikace nebo zobrazení souboru pomocí
výchozí aplikace. Slouží i k navigování na web atd.
Pozor SW_SHOW může spustit aplikaci i minimalizovanou, pro vynucení
normálního zobrazení je třeba požít SW_SHOWNORMAL, pro skrytou zase
SW_HIDE
-----------------------------------------------------------------------}
procedure SimpleRun (aFileName: string; aParam: string = '';
aShowCmd: integer = SW_SHOW);
var
i: integer;
begin
//pro jistotu se přepnu do adresáře spouštěné aplikace
SetCurrentDirectory(PChar(ExtractFilePath(aFileName)));
//podle toho, jestli to volám s parametrem
if Trim(aParam)<>'' then begin
i:=ShellExecute(0,'open',PChar(aFileName),PChar(aParam),nil,aShowCmd);
end else begin
i:=ShellExecute(0,'open',PChar(aFileName),nil,nil,aShowCmd);
end;
//když se vrátí nízké číslo, jde o nějaký problém - já z toho dělám výjimku
if i<=32 then begin
raise Exception.CreateFmt('ShellExecute result = %d',[i]);
end;
end;
Viz též: