Ścieżka do pliku na urządzeniach przenośnych

0

Witam,
przy pobieraniu ścieżki do pliku z dysków lokalnych mam pełną ścieżkę, a jak wskazuje lokalizacje np. na palmtopie (którego system widzi jako urządzenie przenośne), to zwrac tylko ostatni człon (nazwę pliku lub folder w zależności jaki rodzaj wskazuję) we fragmencie (dla pobierania nazwy katalogu):

var
  OpenDialog: TFileOpenDialog;

begin
  OpenDialog := TFileOpenDialog.Create(Self);
  try
    OpenDialog.Options := OpenDialog.Options + [fdoPickFolders];
    if not OpenDialog.Execute then
      Abort;
    LabeledEditFolder.Text := OpenDialog.FileName;
  finally
    OpenDialog.Free;
  end;
end

dla wskazanego folderu z dysku jest pełna ścieżka w LabeledEditFolder.Text , np:
D:\kk
a
dla palmtopa tylko jest nazwa wskazanego folderu bez początku np
Instalka
zamiast
Komputer\Informatyk A6X6\\My Documents\Instalka

Czemu tak jest?

Kasia

zamiana znacznika <code class="php"> na <code class="delphi"> - fp

0

Ciężko powiedzieć dlaczego tak się dzieje; Na jakim Windows to uruchamiasz?


Druga sprawa to kod - nie wiem czy wiesz do czego służy procedura Abort, ale w Twoim przypadku jest zbędna, bo wystarczy na odwrót ustawić warunek:

var
  OpenDialog: TFileOpenDialog;
begin
  OpenDialog := TFileOpenDialog.Create(Self);
  try
    OpenDialog.Options := OpenDialog.Options + [fdoPickFolders];

    if OpenDialog.Execute then
      LabeledEditFolder.Text := OpenDialog.FileName;
  finally
    OpenDialog.Free;
  end;
end;
0

Używam Windows 7/Pro, ale dla XP też zauważyłam taki efekt.
Poza tym pisząc aplikację nie chcę narzucać systemu operacyjnego..., a więc dla 7 czy 8 oraz XP komponent tak samo się winien zachowywać.
Próbowałam z

if SelectDirectory('Folder instalacji na urządzeniu przenośnym', '', pole) then
  begin
    LabeledEditFolder.Text := pole;
end;

ale w ogóle okno dialogowe nie "widzi" urządzeń przenośnych, tylko lokalne dyski oraz lokalizację sieciową...

usunięcie cytowania całego poprzedniego posta - fp

0

ale w ogóle okno dialogowe nie "widzi" urządzeń przenośnych, tylko lokalne dyski oraz lokalizację sieciową...

A czy to urządzenie przenośne jest widoczne jako zwykła pamięć masowa (jak pendrive), czy instaluje się je jakoś? To mogło by być problemem.

0

A czy to urządzenie przenośne jest widoczne jako zwykła pamięć masowa (jak pendrive), czy instaluje się je jakoś? To mogło by być problemem.

Jest to palmtop z systemem operacyjnym Windows Mobile (w moim wypadku w wersji 5). Nie ma instalacji, bo system sam przyłącza i rozpoznaje po usb.
Dodatkowo w systemach XP jest oprogramowanie "Microsyf" ActiveSync, a w 7 i 8 nie potrzeba tego instalować.

No, nie wiem w jaki inny sposób przenosić dane na urz.mobilne - ja to robię poprzez kopiowanie plików do określonych lokalizacji, ale ich w żaden sposób nie mogę "złapać", no bo nie mogę userowi kazać robić ctrl+c i ctrl+v z okna "Komputer", aby z ręki wpisywał ścieżkę dostępu....no nie? Nie wiem jak inni to robią, może jest lepszy pomysł, ja nie widziałam. W ogóle jest mało tematów na linii komp-urz.przenośne jeśli idzie o delphi. Przynajmniej może ja źle zadaję pytania wujkowi googlowi.

1

dla palmtopa tylko jest nazwa wskazanego folderu bez początku np
Instalka
zamiast
Komputer\Informatyk A6X6\\My Documents\Instalka
Czemu tak jest?

Jest tak dlatego, że Windows Mobile ma nieco inna filozofię dotyczącą ścieżek do plików. W normalnym(desktopowym) systemie są dwa rodzaje ścieżek: absolutna zaczynająca się od litery dysku i relatywna zaczynająca się od "current directory". W systemie Windows Mobile nie ma ścieżek relatywnych, nie ma też partycji, dlatego ścieżka absolutna nie zaczyna się od litery dysku tylko od znaku "".

Do modyfikacji danych na palmtopie z poziomu systemu desktopwego trzeba było wykorzystać Remote API (bądź nowszą wersję Remote API 2).

http://msdn.microsoft.com/en-us/library/aa920177.aspx
http://msdn.microsoft.com/en-us/library/aa920150.aspx

Być może część z tych informacji jest już nieaktualna, ale kiedyś tak to działało. Podejrzewam, że w tej kwestii nic się nie zmieniło, ale nie mogę sprawdzić bo nie mam już żadnego działającego palmtopa pod ręką.

EDIT:

Wpadł mi do głowy pewien pomysł na obejście tego problemu bez wykorzystania RAPI, ale wymaga on synchronizacji danych między urządzeniem, a komputerem. Jeśli na komputerze ustawimy folder do synchronizacji to możemy dowolnie modyfikować dane lokalnie, a resztę pracy wykona za nas ActiveSync.
To rozwiązanie nie jest idealne, ale bardzo łatwe w implementacji.

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