Pb avec GetTempPath() et profil utilisateur. - Delphi/Pascal - Programmation
Marsh Posté le 23-10-2005 à 01:10:17
Tu fais un setlength de ta chaîne avant ? Entier_long contient quoi ? Je ne suis pas sûr que ce soit très prudent comme système. Un PChar initialisé à la main avant l'appel et libéré après me paraît plus "normal".
Marsh Posté le 23-10-2005 à 12:19:48
antp a écrit : Tu fais un setlength de ta chaîne avant ? Entier_long contient quoi ? Je ne suis pas sûr que ce soit très prudent comme système. Un PChar initialisé à la main avant l'appel et libéré après me paraît plus "normal". |
Bonjour, Antp.
Non, pas de Setlength : Entier_Long initialisé à ... je ne sais plus quelle valeur précise Donc statique. J'ai dû me débrouiller autrement - ds l'urgence, et pas très adroitement Je vais voir ça.
Ce qu'il me faudrait, c'est un truc comme le Richar Simon (Ressources d'Experts) et bien à jour pour XP et 2k. . Pour la programmation des API, c'est le top. Le code donné en exemple est en C, pas en Basic omme sur le site du laboratoire microsoft.
Mais je ne trouvais pas exactement ce que je cherchais : récupérer le path du répertoire \Documents and Settings\\PROFIL_UTILISATEUR\\Local Settings\\Temp . A défaut, le nom du profil actif. Pas évident
Marsh Posté le 23-10-2005 à 12:23:57
HERIBERT a écrit : Bonjour, Antp. |
Voici le monument : . Désolé pr le format JPG : pas eu le temps de le translater
Marsh Posté le 23-10-2005 à 12:53:04
HERIBERT a écrit : |
Donc tu passes à la fonction un pointeur vers une zone mémoire que tu n'as pas initialisée à la longueur que tu lui donnes en param ?
Deux solutions :
|
Dans les deux cas ça m'affiche "s:\windows", qui est bien mon dossier temp.
Marsh Posté le 23-10-2005 à 16:28:46
antp a écrit : Donc tu passes à la fonction un pointeur vers une zone mémoire que tu n'as pas initialisée à la longueur que tu lui donnes en param ?
|
Oui Ca fonctionne. Mais pas avec les noms longs.
Marsh Posté le 23-10-2005 à 16:44:46
Comment ça pas avec les noms longs ?
Marsh Posté le 23-10-2005 à 19:35:35
antp a écrit : Comment ça pas avec les noms longs ? |
L'affichage tronque les noms de chemin, comme sous DOS : c:\Documen~\... . C'est seulement l'affichage, ou la fonction ? J'aurais dû vérifier ds le fenêtre de débogage, au lieu de conclure trop vite en jugeant seulement sur l'affichage
Je vais vérifier.
Marsh Posté le 23-10-2005 à 19:54:34
HERIBERT a écrit : L'affichage tronque les noms de chemin, comme sous DOS : c:\Documen~\... . C'est seulement l'affichage, ou la fonction ? J'aurais dû vérifier ds le fenêtre de débogage, au lieu de conclure trop vite en jugeant seulement sur l'affichage |
Voici exactement ce que ça donne, y compris en "mode trace" :
Marsh Posté le 23-10-2005 à 20:35:29
Ça ne gêne pas à l'utilisation, c'est la version courte (8.3)
C'est juste un peu moche pour l'afficher à l'utilisateur (enfin, il n'a pas à voir ce genre de chemin de toute façon).
Tu peux tenter un GetFullFileName ou ExpandFileName, ça donnera peut-être le chemin en version longue
Marsh Posté le 22-10-2005 à 12:15:02
Encore un pb de documentation des API.
Je veux connaître le répertoire temporaire du profil actif (user couant). J'ai trouvé GetTempPath().
Chez M% (laboratoire M%), tout en anglais et souyvent implémenté en BASI
Ce code ne retourne rien : GetTempPath(Entier_Long, PChar(Chn_Temp)); où :
Entier_Long : longint;
Chn : string;
Je devrais récupérer le répertoire temporaire ds Chn, non ?