Ścieżka pulpitu: "deskop'' czy ''pulpit''?

0

Witam. Zacząłem próbować operacji na plikach w pascalu, chciałem sobie stworzyć jakikolwiek plik tekstowy na pulpicie, natrafiłem jednak na taki problem:
Gdy sprawdzam lokalizację jakiegoś pliku na pulpicie (żeby sprawdzić gdzie znajduje się katalog) pokazuje mi c:\users\ja\deskop
jednak gdy wchodzę w folder ja, rzeczywiście, jest tam folder deskop, tylko że pusty, a wszystkie pliki z pulpitu znajdują się w folderze pulpit. I teraz tak, gdy próbuję w pascalu stworzyć ten plik w ścieżce c:\users\ja\deskop, to pojawia się on oczywiście w folderze deskop, który był pusty, natomiast na pulpicie nic się nie dzieje. Gdy zaś próbuję stworzyć go w ścieżce c:\users\ja\pulpit, to jest błąd, że taka lokalizacja nie istnieje. Mógłby mi ktoś wytłumaczyć co jest nie tak, czy coś robię źle?

2

Nie wiem jakiego Pascala używasz ale we FreePacalu raczej powinno zadziałać Jak odczytać ścieżki folderów specjalnych

0

Spróbuj użyć tego jako ścieżki: %UserProfile%\Desktop\
Możesz sobie przetestować w konsoli Windowsa wklepując w cmd np to: cd %UserProfile%\Desktop\

Nie wiem czy w Pascalu zadziała ale możesz spróbować.

0

propozycja Grześka niestety nie działa, a co do linka który podał mi kAzek, to czy mógłby mi ktoś wytłumaczyć o co w tym chodzi? bo pascal u mnie nie rozpoznaje ani Max_path ani SHGetSpecialFolderPath

0

Zacznijmy od tego jakiego Pacala używasz to FreePascal czy może zabytkowy Borland/Turbo Pascal czy coś jeszcze innego?

0

Free pascal

0
AppendPathDelim(SysUtils.GetEnvironmentVariable('userprofile'))+'Desktop'
0

domyśliłem się że mam dołączyć unit sysutils, ale i tak mam: identifier not found 'AppendPathDelim'

1

Sklejanie ścieżek w ten sposób to zły pomysł. Fizyczną lokalizację tego typu folderów można zmienić (ja pulpit mam w domyślnej lokalizacji, ale niektóre pozmieniałem). Użyj metody z linku kazka.

3

Przykład dostosowany do FreePascala:

program test;
uses Windows, ShlObj;

function GetSpecialFolderPath(const Folder: Integer): string;
var
  Path: shortstring;
begin
  SHGetSpecialFolderPath(0, @Path, Folder , False);
  GetSpecialFolderPath:= StrPas(@Path);
end;

var
  DesktopPath: string;
begin
  DesktopPath:= GetSpecialFolderPath(CSIDL_DESKTOP);
  writeln(DesktopPath);
  readln;
end.
0

problem taki jak już pisałem wyżej: nie rozpoznaje "SHGetSpecialFolderPath"

0

Już znalazłem problem, korzystałem dalej ze starszej wersji pascala, nie wiedziałem że jeszcze wgl ją mam. Na nowszej działa dobrze. dziękuję wszystkim

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