[delphi] FileListBox jak odczytać NORMALNĄ ścieżkę zaznaczonego katalogu.

0

Robie tak i zwraca mi siezke z zaznaczonym katalogiem tyle ze jego nazwa jest w klamerkach []. Jak sie ich pozbyc?

 
if FileListBox1.ItemIndex > -1 then
    begin

    sciezka := FileListBox1.FileName;

      end;
1

np.

if FileListBox1.ItemIndex > -1 then
   begin
   sciezka := FileListBox1.FileName;
   
   sciezka := StringReplace(sciezka, '[', '', []);
   sciezka := StringReplace(sciezka, ']', '', []);
   //tu już masz zmienną sciezka bez klamerek
   end;
2

Jeżeli te klamry są na pierwszej i ostatniej pozycji, to:

 S := FileListBox1.FileName;
 Delete(S, 1, 1);
 Delete(S, LenGth(S), 1);
 ShowMessage('Nazwa pliku: '+S);
2

Proponuję taki kod:

 
if FileListBox1.ItemIndex > -1 then
begin
  sciezka := FileListBox1.FileName;

  If Not FileExists(sciezka) then
    sciezka:=ExtractFilePath(sciezka)+Copy(ExtractFileName(sciezka), 2, length(ExtractFileName(sciezka))-2);
end;
0

Delete po obejrzeniu komponentu :P

0

Wydaje mi się że powinno być OK bo do plików nie dodaje klamry więc plik będzie istniał i nic nie modyfikuje ścieżki, co do katalogów zawsze dostaje klamrę do ostatniego katalogu w ścieżce a więc ją można bezpiecznie usunąć (nawet jeżeli ostatni katalog ma klamry w nazwie to i tak usunie te dodane)..

var
  sciezka: string;
begin
  if FileListBox1.ItemIndex > -1 then
  begin
    sciezka := FileListBox1.FileName;
    if not FileExists(sciezka) then
    begin
      Delete(sciezka, LastDelimiter('\' , sciezka) + 1, 1);
      Delete(sciezka, LastDelimiter(']' , sciezka), 1);
    end;
    ShowMessage(sciezka)
  end;
end;

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