Ścieżka względna na podstawie ścieżki bezwzględnej
Coldpeer
Wskazówka ta może się przydać osobom piszącym np. edytor HTML. Wstaw na formę komponent OpenDialog (OpenDialog1), Edit (edtURL) oraz jakiegoś Buttona, odpowiadającego za otwarcie okna dialogowego. Kod specjalnie został tutaj tak zaprezentowany, aby programistom tworzącym edytory stron WWW trochę rozjaśnić sprawę. Kod należy wstawić pod zdarzenie OnClick Buttona.
var
s, URL : string;
begin
URL := 'C:\katalog\bezwzgledna.html';
if OpenDialog1.Execute then
begin
if URL = '' then
begin
ShowMessage('Otwarty dokument jest niezapisany!'+#13+
'Wstawiona zostanie ścieżka bezwzglęna.');
edtURL.Text := StringReplace(OpenDialog1.FileName, '\', '/', [rfReplaceAll]);
end else
begin
s := ExtractRelativePath(URL, OpenDialog1.FileName);
s := StringReplace(s, '\', '/', [rfReplaceAll]);
edtURL.Text := s;
end;
end;
end;
Działanie: po kilknięciu na Button otwiera się okno dialogowe. Po wybraniu pliku zawartością Edita staje się, jeśli plik jest zapisany (czyli zmienna URL nie jest pusta), ścieżka względna (np. ../../katalog/xxx.htm), wygenerowana względem ścieżki bezwzględnej, znajdującej się w zmiennej URL. Natomiast jeśli owa zmienna jest pusta, zawartością staje się normalna ścieżka bezwzględna (np. C:/cos/cos/katalog/xxx.htm). Zresztą przekonaj się sam!
Ciekawe, przyda się :)