Bonjour,

Je cherche une fonction qui me donnerait, en fonction de l'OS sur lequel tourne mon programme, soit :
- le path de "Mes Documents" si on est sous Windows
- le "/home/xxxxx" si on est sous linux (xxxxx représente le login de l'utilisateur)

Je sais qu'il faut utiliser :
- les instructions conditionnelles, mais est-ce valable pour les "uses" ?
- la façon de le faire

J'ai bien trouvé ça :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
function MesDocsPath : string;
var
  SFolder: PItemIDList;  
    // erreur compil : identifier PItemIDList  not found, error in type definition
  SpecialPath: array[0..MAX_PATH] of char;
begin
  SHGetSpecialFolderLocation(Application.Handle, CSIDL_PERSONAL, SFolder); 
     //identifier SHGetSpecialFolderLocation not found,
     //identifier idents no member 'Handle',
     //identifier CSIDL_PERSONAL not found, 
  SHGetPathFromIDList(SFolder, SpecialPath);
     //identifier SHGetPathFromIDList not found
  Result := StrPas(SpecialPath);
end;
Mais cela ne semble pas fonctionner sous Lazarus (c'est un code pour Delphi - j'utilise lazarus 0.9.24 beta) : le compilo ne reconnait pas par exemple 'PItemIDList' (je précise que j'ai bien inclus 'ShlObj' dans les uses)

A vos bonnes ames