Cofanie ście?żki

0

Mam mały problem z cofaniem się w ścieżce.

Mam np. ścieżkę C:\Windws\System\ i chcę wrócić do góry czyli do ścieżki C:\Windws\

Czy jest może już taka procedura w plikach Delphi?

Gdzyż moja się nie sprawdza zrobiłem wątek ,który usuwa wszystko od końca aż <ort>napodka </ort>2 znak "" ,ale ta metoda za bardzo nie skutkuje.

Proszę o pomoc ;-(

0

Co znaczy nie skutkuje.. jeśli napisałeś poprawnie konwersje tego łańcucha (ścieżki), to musi działać... - pokaż kod..

0

Mam taki kod i lipa:

function Reverse(Value: String): String;
var
i : Integer;
begin
for I := Length(Value) downto 0 do
Result := Result + Value[i];
end;

function ExtractNameDir(Value:string):string;
var
i : Integer;
begin
for i := Length(Value) downto 0 do
if (Value[i]='/') or (Value[i]='') then
Break else Result := Result + Value[i];
Result:=Reverse(Result);
end;

function ExtractBackDir(Value:string):string;
var
t :integer;
begin
t:=Length(Value)-Length(ExtractNameDir(Value));
Result:=Copy(Value,0,t);
end;

np. ShowMessage(ExtractBackDir('C:\Windows\System'));

Ma ktoś może krótszy i lepszy kod?

0

A po co aż tyle funkcji?

function UpDir(S: String): String;
var Idx: Integer;
begin
  if S[Length(S)] = '' then
        Delete(S, Length(S), 1);
  for Idx := Length(S) downto 1 do
        if S[Idx] = '' then
        begin
                Result := Copy(S, 1, Idx -1);
                Exit;
        end;
end;
0
function Dirup(const s : shortstring) : shortstring;
var
  i : integer;
begin
  for i := length(s) downto 4 do
  if s[i] = '' then
  begin
    result := copy(s,1,i-1);
    break;
  end;
end;

shit! spóźniłem się....

0

A ja bym to zrobil niekonwencjonalnie:
Sciezka := Sciezka + '..'; //zakladam, ze sciezka konczy sie na ''
:P

0

Dryo, po kilku takich transformacjach masz "C:\windows..\program files\bleble....\windows\system" - niezbyt ładne, co? :P

0

Dryo, po kilku takich transformacjach masz "C:\windows..\program files\bleble....\windows\system" - niezbyt ładne, co? :P

Ale dziala :) Oczywiscie to w ramach zartu bylo.
A jezeli chodzi o powazne rozwiazania, to Delphi oferuje nam gotowe:

  s := 'c:\windows\qqq';
  s := LeftStr(s, LastDelimiter('', s));

W przypadku, gdyby jednak mogla sciezka konczyc sie na '' mozna uzyc:

  s := LeftStr(s, LastDelimiter('', ExcludeTrailingPathDelimiter(s)));

I trzeba jeszcze do uses dodac StrUtils. Polecam zapoznac sie z tym modulem.

1 użytkowników online, w tym zalogowanych: 0, gości: 1