funkcja split menadżer plików

0

Mam pewien text w edicie np: C:\Program Files\Gadu-Gadu
Czy jest możliwe żeby po wciśnięciu buttona wartość edita zmieniła się na
C:\Program Files\ ? Chodzi mi o to że usunęłaby się wartość od końca do ''.
Problem ten napotkałem przy robieniu menadżera plików. Wszystko ładnie się listuje ale nie wiem jak zrobić coś w stylu wstecz. Trzeba zastosować funkcję split ale coś mi nie wychodzi :-/ Zarzućcie kodem plx :)

0
{w s masz scieżkę}
begin
  i := len(s)
  if s[i] = '\' then
  begin
    Delete(s, i, 1);
    Dec(i);
  end;
  while s[i] <> '\' do
    Dec(i);
  Delete(s, i + 1 {albo samo i jak \ też ma usunąć}, 255);
end;

Na szybko z głowy ale powinno działać

Ewentualnie jeszcze mi przyszło do głowy

{w s masz scieżkę}
var
  sl: TStringList;
begin
  sl := TStringList.Create; 
  try
    sl.Delimiter := '\';
    sl.DelimitedText := s;
    s := '';
    for i := 0 to sl.Count - 2 do
      s := s + sl[i] + '\'
  finally
    FreeAndNil(sl);
  end;
end;
0
mit_mis napisał(a)

Mam pewien text w edicie np: C:\Program Files\Gadu-Gadu
Czy jest możliwe żeby po wciśnięciu buttona wartość edita zmieniła się na
C:\Program Files\ ? Chodzi mi o to że usunęłaby się wartość od końca do ''.
Problem ten napotkałem przy robieniu menadżera plików. Wszystko ładnie się listuje ale nie wiem jak zrobić coś w stylu wstecz. Trzeba zastosować funkcję split ale coś mi nie wychodzi :-/ Zarzućcie kodem plx :)

Misiek jak zwykle pie...teoretyzuje.
Oto najprostszy sposob:

  1. usun ostatni slash
  2. ExtractFilePath( 'c:\program files\gadu-gadu' )
    :D
0
Shreq napisał(a)

Misiek jak zwykle pie...teoretyzuje.
Oto najprostszy sposob:

  1. usun ostatni slash
  2. ExtractFilePath( 'c:\program files\gadu-gadu' )
    :D

tak mądralo, to powiedz mi jak po usunięciu ostatniego \ uzyskasz z tego C:\Program Files\Gadu-Gadu</b> to C:\Program Files</b>
Obie ścieżki z cytatu autora

0

A może:

Katalog := Katalog + '..';
Katalog := ExtractFilePath(Katalog);

Katalog oczywiscie musi być zakończony na '' przed dodaniem '..'.

0
Misiekd napisał(a)
Shreq napisał(a)

Misiek jak zwykle pie...teoretyzuje.
Oto najprostszy sposob:

  1. usun ostatni slash
  2. ExtractFilePath( 'c:\program files\gadu-gadu' )
    :D

tak mądralo, to powiedz mi jak po usunięciu ostatniego \ uzyskasz z tego C:\Program Files\Gadu-Gadu</b> to C:\Program Files</b>
Obie ścieżki z cytatu autora

Jak juz napisalem - pier..teoretyzujesz bez sensu, Piszesz odpowiedzi na niemal KAZDY post, nie patrzac, czy maja sens czy nie.
GDYBYS poswiecil chociaz 50% swoich szarych komorek, czyli co najmniej 1, na zrozumienie tego co napisalem - wiedzialbys o czym pisze:

Sciezka wyglada tak: c:\program files\gadu-gadu\</li> usuwamy ostatniego slasha uzyskujac c:\program files\gadu-gadu</li> Uzywamy funkcji ExtractFilePath, ktora nie widzac ostatniego slasha - traktuje gadu-gadu jako nazwe pliku
3a) w efekcie funkcja ExtractFilePath traktuje gadu-gadu jako nazwe pliku, wiec podczas ekstrakcji odrzuca ja, zwracajac "c:\program files" jako sciezke do pliku gadu-gadu </li> Uzyskujemy efekt, o jaki nam chodzilo, bez angazowania streamow, allokowania pamieci czy innych sztuczek dostepnych tylko ludziom na wyzszym stopniu wtajemniczenia, czyli miskomd, ktorzy nie fatyguja sie zeby klepnac pare linijek kodu w swoim Delphi, bo po co, skoro sa najgenialniejsi na swiecie :D</li> </ol>

Next time, zanim zaczniesz sie kompromitowac bardziej niz MUSISZ - ponaciskaj chocby Ctrl+C, Ctrl+V... Nie wymagam od Ciebie zaangazowania 50 czy 100% szarych, to by Cie moglo zabic... :D

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