enregistrement dans un repertoire non defini d'avance possible? [C] - C++ - Programmation
Marsh Posté le 05-10-2002 à 13:00:28
Taz@PPC a écrit a écrit : fais attention: la notion de répertoire n'existe pas en C. suivant ta plateforme tu devras faire des appels systemes pour créer et/ou parcourir des répertoires |
merci de me le dire je ne le savais pas...
tu pourrais etre plus precis ou alors m'indiquer un lien ou je pourrais avoir c renseignements? merci beaucoup
Marsh Posté le 05-10-2002 à 18:37:01
Taz@PPC a écrit a écrit : quelle plateforme? ca dépend de ton système |
windows (xp si ca change qqchose...)
Marsh Posté le 05-10-2002 à 23:56:46
Comme te l'as dit Taz, il va falloir faire appel a des fonctions propres a Windows.
Ca releve plus de la programmation Windows que du C.
Une solution elegante pour tout regler d'un coup est d'ouvrir une boite "Enregistrer sous ..." qui va permettre a l'utilisateur soit de :
- choisir la disquette
- garder le repertoire courant
- aller dans le repertoire voulu
- creer son propre repertoire
Toi tu t'occupes juste de lancer la boite de dialogue et de récupérer le chemin valide qu'elle va te retourner (en fonction de ce qu'a choisi l'utilisateur)
La boite de dialogue enregistrer sous (Save As) fait partie des "commons dialog" (y'en a d'autres telle que Ouvrir, Imprimer, ...)
Code :
|
Citation : apres coment on peut faire pour appeler un fihier qui ne se trouve pas dans le repertoire courant? |
Ben en donnant son nom complet ...
Tu es dans C:\Repertoire1
Tu veux ouvrir le fichier fic1 dans C:\repertoire2
=> tu fais fopen("C:\\Repertoire2\\fic1", "rb" );
Marsh Posté le 06-10-2002 à 00:00:26
J'oubliais ... un petit
#include <windows.h>
pour que ca marche.
Pour connaitre tous les styles possibles de la boite :
http://msdn.microsoft.com/library/ [...] LENAME.asp
Marsh Posté le 06-10-2002 à 21:13:42
HelloWorld a écrit a écrit : J'oubliais ... un petit #include <windows.h> pour que ca marche. Pour connaitre tous les styles possibles de la boite : http://msdn.microsoft.com/library/ [...] LENAME.asp |
merci beaucoup j'essairais ca tres bientot
Marsh Posté le 06-10-2002 à 22:52:51
HelloWorld a écrit a écrit : Comme te l'as dit Taz, il va falloir faire appel a des fonctions propres a Windows. Ca releve plus de la programmation Windows que du C. Une solution elegante pour tout regler d'un coup est d'ouvrir une boite "Enregistrer sous ..." qui va permettre a l'utilisateur soit de : - choisir la disquette - garder le repertoire courant - aller dans le repertoire voulu - creer son propre repertoire Toi tu t'occupes juste de lancer la boite de dialogue et de récupérer le chemin valide qu'elle va te retourner (en fonction de ce qu'a choisi l'utilisateur) La boite de dialogue enregistrer sous (Save As) fait partie des "commons dialog" (y'en a d'autres telle que Ouvrir, Imprimer, ...)
|
salut,
je n ai rien a voir avec ce topic mais j ai essayé de compilé ton source avec devc++ et y a 0 erreur 0 warning
mais aucun executable n est généré c normale?
Marsh Posté le 07-10-2002 à 15:55:33
Heu non c'est pas normal, car je l'ai moi aussi teste avant de le mettre et je l'ai teste avec ... devcpp.
Moi j'ai la version 4.
J'ai recement eu ce probleme d'exe non genere, c'etait hier quand j'ai fait generer le code asm de mon prog en ajoutant l'option -S dans les parametres supplementaires.
J'ai vire cet ajout et tout est rentre dans l'ordre.
Tant que j'y suis : il marche bien toi devcpp ?
Moi j'ai installe le 5 beta et il refuse de compiler.
Quant au 4, il plante regulierement au bout d'un certains nombre de sauvegardes de mon source (a chaque sauvegarde, la memoire utilisee par devcpp augmente !).
Marsh Posté le 07-10-2002 à 16:02:06
HelloWorld a écrit a écrit : Heu non c'est pas normal, car je l'ai moi aussi teste avant de le mettre et je l'ai teste avec ... devcpp. Moi j'ai la version 4. J'ai recement eu ce probleme d'exe non genere, c'etait hier quand j'ai fait generer le code asm de mon prog en ajoutant l'option -S dans les parametres supplementaires. J'ai vire cet ajout et tout est rentre dans l'ordre. Tant que j'y suis : il marche bien toi devcpp ? Moi j'ai installe le 5 beta et il refuse de compiler. Quant au 4, il plante regulierement au bout d'un certains nombre de sauvegardes de mon source (a chaque sauvegarde, la memoire utilisee par devcpp augmente !). |
salut,
alors pour repondre a tes questions:
j ai devc++ 4 jl ai instalé la semaine derniere et sous windows 2000 ca tourne normalement, jpeux rien dire de + puisque c 'est avec ton programme que je l ai utilisé pour la premiere fois
sinon je pense que ce serait bien de faire part aux programmeurs du projet les problemes que tu as rencontrés...
sinon pour finir je trouve pas l option que tu m'as demandé d enlever
edit : j ai ce message qui apparait mais jle comprend pas :
C:\DOCUME~1\ADMINI~1.LOC\LOCALS~1\Temp\cci4aaaa.o(.text+0x3b):file.c: undefined reference to `GetSaveFileNameA@4'
Marsh Posté le 09-10-2002 à 13:01:32
Ah ok ok je vois ...
Effectivement j'ai eu cette erreur, c'est parce qu'il faut ajouter une lib (celle qui contient la fonction GetSaveFileNameA, d'ou l'erreur car il est incapable de trouver ou c'est defini)
Cette fonction est il me semble contenue dans comdlg32.dll
donc faut inclure une lib qui doit vraissemblablement avoir comme nom comdlg32.lib
Marsh Posté le 09-10-2002 à 21:46:20
HelloWorld a écrit a écrit : Ah ok ok je vois ... Effectivement j'ai eu cette erreur, c'est parce qu'il faut ajouter une lib (celle qui contient la fonction GetSaveFileNameA, d'ou l'erreur car il est incapable de trouver ou c'est defini) Cette fonction est il me semble contenue dans comdlg32.dll donc faut inclure une lib qui doit vraissemblablement avoir comme nom comdlg32.lib |
j ai reussi a trouver comdlg32.dll par contre comdlg32.lib
j ai pris comdlg32.dll jl ai mise ds winnt/system32 et ca na rien changer
jdoit mal m y prendre
Marsh Posté le 10-10-2002 à 01:16:12
Je voulais juste indiquer un truc:
Code :
|
GetSaveFileName est en fait une macro se tournant vers l'une ou l'autre version selon le contexte de compilation.
Des macros supplémentaires se chargent de convertir les chaînes passées en argument au besoin.
Windows 95, 98, 98SE sont ANSI natifs.
Windows NT, 2000, XP sont Unicode natifs.
Donc, l'environnement pour lequel on compile pourrait affecter la fonction recherchée.
Si il n'y a pas la bonne librairie derrière, ça ne marchera pas.
Marsh Posté le 10-10-2002 à 13:11:02
La dll ca n'a rien a voir.
Tu ne dois pas y toucher (a ton system32) car cette dll existe deja et de toute facon le probleme n'est pas la.
Le probleme c'est que ton programme doit appeler une fonction qui se trouve dedans (GetSaveFileNameA) et que le compilateur est incapable de savoir comment faire pour appeler cette fonction, c.a.d qu'il ne sait pas dans quelle dll elle se trouve.
Cette info est contenue dans un .lib, je ne sais pas lequel (j'ai pas devccp sous la main la).
Tu peux faire une recherche "*.lib contenant texte GetSaveFileNameA" et tu devrait avoir le nom de la lib.
Tu la rajoutes a ton projet.
Si tu ne la trouve pas (bizarre tout de meme), il va falloir faire a la main ce que le compilo est incapable de faire automatiquement pour toi, c'est a dire charger la dll (LoadLibrary) et recuperer un pointeur sur la fonction GetSaveFileNameA (GetProcAddress).
Marsh Posté le 10-10-2002 à 13:48:30
HelloWorld a écrit a écrit : La dll ca n'a rien a voir. Tu ne dois pas y toucher (a ton system32) car cette dll existe deja et de toute facon le probleme n'est pas la. Le probleme c'est que ton programme doit appeler une fonction qui se trouve dedans (GetSaveFileNameA) et que le compilateur est incapable de savoir comment faire pour appeler cette fonction, c.a.d qu'il ne sait pas dans quelle dll elle se trouve. Cette info est contenue dans un .lib, je ne sais pas lequel (j'ai pas devccp sous la main la). Tu peux faire une recherche "*.lib contenant texte GetSaveFileNameA" et tu devrait avoir le nom de la lib. Tu la rajoutes a ton projet. Si tu ne la trouve pas (bizarre tout de meme), il va falloir faire a la main ce que le compilo est incapable de faire automatiquement pour toi, c'est a dire charger la dll (LoadLibrary) et recuperer un pointeur sur la fonction GetSaveFileNameA (GetProcAddress). |
merci pour toute ces explications c plus claitr pour moi maintenant!
en fait je debute en c/c++
jregarde tout ca des que je peux
Marsh Posté le 10-10-2002 à 19:45:18
la lib c'est libcomdlg32.a (gcc utilise .a comme extension et pas .lib) et elle se trouve dans le repertoire lib de ton install de devcpp
Pour l'ajouter a ton projet, dans le menu project option, ajoute la dans "further object files" (localise la a partir du bouton ouvrir a cote)
good luck !
Marsh Posté le 05-10-2002 à 12:47:03
Bonjour,
je fais un pgm qui utilise les fichiers et j'aimerais, apres saisis de ceci, les enregistrer soit sur une DK, soit de le repertoire courant(bon ca je sais faire ) soit dans un repertoire que l'utilisateur donneras... c'est possible? et si oui comment faire?
peut on egalement faire saisir par l'utilisateur l'adresse ou devra s'enregistrer le fichier et si le ou les repertoires n'existes pas les creer?
apres coment on peut faire pour appeler un fihier qui ne se trouve pas dans le repertoire courant?
Ca fais beaucoup de questions...
merci de votre aide