Ś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!

1 komentarz

Ciekawe, przyda się :)