Dll toujours ...

Lorelei42 Messages postés 24 Date d'inscription mercredi 30 juin 2004 Statut Membre Dernière intervention 4 août 2004 - 7 juil. 2004 à 10:32
Lorelei42 Messages postés 24 Date d'inscription mercredi 30 juin 2004 Statut Membre Dernière intervention 4 août 2004 - 9 juil. 2004 à 15:46
Bonjour,

Est-il possible de mettre dans une Dll des fonctions qui lisent ou écrivent dans un fichier ?

merci

15 réponses

cs_AlexMAN Messages postés 1536 Date d'inscription samedi 21 décembre 2002 Statut Membre Dernière intervention 24 mai 2009 1
7 juil. 2004 à 10:59
Pourquoi ce ne serait pas possible ?
0
Lorelei42 Messages postés 24 Date d'inscription mercredi 30 juin 2004 Statut Membre Dernière intervention 4 août 2004
7 juil. 2004 à 11:18
j'ai créé une Dll avec des fonctions qui écrivent, qui lisent dans des fichiers et puis d'autres fonctions.
Mon exécutable se construit sans problème.
Mais les fonctions de lecture et d'écriture ne fonctionnent pas !
0
cs_AlexMAN Messages postés 1536 Date d'inscription samedi 21 décembre 2002 Statut Membre Dernière intervention 24 mai 2009 1
7 juil. 2004 à 13:07
poste ton code, jverrai si jpeu t'aider, car tu as certainement du te tromper sur les fonction d'ecriture et de lecture.
0
Lorelei42 Messages postés 24 Date d'inscription mercredi 30 juin 2004 Statut Membre Dernière intervention 4 août 2004
7 juil. 2004 à 14:36
Par exemple:

void ligne_suivante (int nb_ligne, char ligne[LONGUEUR], int l, FILE * fichier)

{
int i;

for (i=0;i<nb_ligne;i++)
{
fgets (ligne, l, fichier);
}
}
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_AlexMAN Messages postés 1536 Date d'inscription samedi 21 décembre 2002 Statut Membre Dernière intervention 24 mai 2009 1
7 juil. 2004 à 15:21
Tu noublie pas de faire un fopen avant d'appeller ta fonction ? Ta fonction la, parcourt toutes les lignes de ton fichier mais seule la derniere ligne sera stockée ds ligne[]. Si c'est ca la cause de ton pb, utilise un tab a 2dimensions.
Si j'ai pas resolu ton pb, nesite pas a redemander !

++

Alhexman
0
Lorelei42 Messages postés 24 Date d'inscription mercredi 30 juin 2004 Statut Membre Dernière intervention 4 août 2004
7 juil. 2004 à 15:49
le but de la fonction est de garder la dernière ligne en fait.

avant j'ai fait

fichier = fopen ("simul_dat", "r");

et quand je debug
il y a un problème de mémoire à la ligne du fgets

Lorelei
0
cs_aardman Messages postés 1905 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 17 septembre 2012 3
7 juil. 2004 à 16:14
Salut,
A mon avis il faudrait mettre le chemin complet du fichier dans le 1er param de fopen(...).
0
cs_AlexMAN Messages postés 1536 Date d'inscription samedi 21 décembre 2002 Statut Membre Dernière intervention 24 mai 2009 1
7 juil. 2004 à 16:27
si le fichier ke tu ouvres ne se trouve pas ds le dossier de l'exe, effectivement il faut mettre le chemin complet du fichier. Comment definis tu ta constante LONGUEUR ? Si elle n'est pas assez grande, c'est normal de tu obtienne un pb de memoire, definis la a 256 pour eviter ce type de pb..

Voila ++

Alhexman
0
Lorelei42 Messages postés 24 Date d'inscription mercredi 30 juin 2004 Statut Membre Dernière intervention 4 août 2004
7 juil. 2004 à 16:56
LONGUEUR est a 132

je vais mettre le chemin .....

merci les amis !
0
Lorelei42 Messages postés 24 Date d'inscription mercredi 30 juin 2004 Statut Membre Dernière intervention 4 août 2004
7 juil. 2004 à 17:18
euh je vais peut-être paraître bête :blush) mais quand on écrit le chemin, entre les différents dossiers on met des "" ?
0
cs_aardman Messages postés 1905 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 17 septembre 2012 3
7 juil. 2004 à 17:26
Salut,
Oui, et on les met par paire car \ est un caractere spécial.

fichier = fopen ("C:\\dossier\\fichier.txt", "r");
0
Lorelei42 Messages postés 24 Date d'inscription mercredi 30 juin 2004 Statut Membre Dernière intervention 4 août 2004
7 juil. 2004 à 17:29
ok par paire !!!

bon je verrais ca demain j'en ai trop marre!!!

merci

Bonne fin d'aprem
0
Lorelei42 Messages postés 24 Date d'inscription mercredi 30 juin 2004 Statut Membre Dernière intervention 4 août 2004
9 juil. 2004 à 15:21
Salut,

en fait ça marche si on ouvre le fichier dans la fonction de la Dll !!!
et non si on ouvre le fichier dans l'exécutable puis on passe en argument le pointeur sur fichier puis on écrit dans la Dll !!!

Qq1 peut il me dire pkoi ?
0
cs_aardman Messages postés 1905 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 17 septembre 2012 3
9 juil. 2004 à 15:26
Salut,
Faudrait voir comment tu ouvres ton fichier dans l'exe et comment tu l'utilise dans la fonction de la dll.
0
Lorelei42 Messages postés 24 Date d'inscription mercredi 30 juin 2004 Statut Membre Dernière intervention 4 août 2004
9 juil. 2004 à 15:46
Par ex:

dans l'exe
debug = fopen ( "simul_deb" , "w" ) ;
SauveMat ( debug , &M) ;
fclose ( debug ) ;

dans la Dll
void __stdcall SauveMat (FILE * fpo, matrice * p_M)
{
int i, j;
int k;

lib_mat_error = LIB_MAT_SUCCESS;

if (fpo == NULL)
{
lib_mat_error = LIB_MAT_SAUVEMAT_WRONG_FILE;
printf ("\n SauvMat : File does not exist");
lib$stop (0, 0);
exit (0);
}

fprintf (fpo, " %s (%d,%d)\n", lib_mat_info_msg[LIB_MAT_MSG_MATRIX],
M.nl, M.nc);

k = 0;

for (i=0; i<M.nl; i++)
{
for (j=0; j<M.nc; j++)
{
if (Mvec(k + j) >= 0) fprintf (fpo, " ");
fprintf (fpo, " %1.4e", Mvec(k + j));
}
k += M.nc;
fprintf (fpo, "\n");
}
}

Ca ca fonctionne pas

MAiS :

dans la Dll
void __stdcall SauveMat (matrice * p_M) //modif

{
int i, j;
int k;
FILE *fpo ;

lib_mat_error = LIB_MAT_SUCCESS;

fpo = fopen("simul_deb","a");

if (fpo == NULL)
{
lib_mat_error = LIB_MAT_SAUVEMAT_WRONG_FILE;
printf ("\n SauvMat : File does not exist");
lib$stop (0, 0);
exit (0);
}

fprintf (fpo, " %s (%d,%d)\n", lib_mat_info_msg[LIB_MAT_MSG_MATRIX], M.nl, M.nc);

k = 0;

for (i=0; i<M.nl; i++)
{
for (j=0; j<M.nc; j++)
{
if (Mvec(k + j) >= 0) fprintf (fpo, " ");
fprintf (fpo, " %1.4e", Mvec(k + j));
}
k += M.nc;
fprintf (fpo, "\n");
}

fclose(fpo);
}

dans l'exe
SauveMat ( &M ) ;

Ca fonctionne !!
0
Rejoignez-nous