IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Visual C++ Discussion :

random & création du fichier


Sujet :

Visual C++

  1. #1
    Membre éclairé Avatar de meera
    Inscrit en
    Mai 2006
    Messages
    294
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 294
    Par défaut random & création du fichier
    bonsoir,
    svp je veux selectioner n paires de pixels aléatoirement (pi,qi), les sauvegareder dans un fichier pour puisse les modifient apées ( par exemple faire: incrementer chaque pixel de 1)
    pour cela j'ai creé une boite de dialog, qui contient les éxtrimités de l'intervalle , initilaiseur du générateur( random), el n: nombre de paires pixels, et le button creer qui va creer ces valeurs et les sauvegareder ds le fichier

    le probléme c'est que je sais pas comment je peux creer un fichier dedans un dossier ( ex c:\\Demo\\patch) qui porte le nom (ex : txt_init , init valeur que j'initiale mon genératuer)

    j'ai fait juste un essai, mais cette fois çi j'ai crée le dossier à la main

    voici le code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
     
    void CTatoSelectNDlg::Onselect() 
    {
    	// TODO: Add your control notification handler code here
    	UpdateData();
     
    	int Larg = GetDlgItemInt(IDC_EDIT1);
    	int Haut= GetDlgItemInt(IDC_EDIT2);
    	int Init = GetDlgItemInt(IDC_EDIT3);
    	int Selectn = GetDlgItemInt(IDC_EDIT4);
     
    	srand( (unsigned )Init );
     
    	// Traitement différent selon nombre de bits/pixel
    	int x,y,x1,y1;
    	  FILE *f;  
    	  	f=fopen("c:\\tatouage\\patch\\essai.txt","w" ); 
    	for (int i=0; i<Selectn; i++)
    	{
     
    	       x= (rand()/(double)RAND_MAX)* Larg;
    		   y= (rand()/(double)RAND_MAX)* Haut;
    		   x1= (rand()/(double)RAND_MAX)* Larg;
    		   y1= (rand()/(double)RAND_MAX)* Haut;
     
    fprintf(f,"(%d,%d)-(%d,%d) \n",x,y,x1,y1); 
     
    	fclose;
     
    	}
     
    }
    est ce quelqu'un m'aider pour que le fichier soit creer automatiquement
    merci

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 464
    Par défaut
    Pour créer un fichier dans un nouveau dossier, il faut d'abord créer le dossier; tu as le choix entre _mkdir (CRT) et CreateDirectory (win32).

  3. #3
    Membre éclairé Avatar de meera
    Inscrit en
    Mai 2006
    Messages
    294
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 294
    Par défaut
    si par exemple , je cree le dossier manuellement, et je spécifie le chemin complet
    ex: C:\\demo\\patch
    je veux que mes fichiers crees existent dans ce dossier

  4. #4
    Membre éclairé Avatar de meera
    Inscrit en
    Mai 2006
    Messages
    294
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 294
    Par défaut
    j'ai réussi à creer le dossier mais c'est pas comme je veux
    le nom du fihier je le modifie manuellement ( jusqu'à mnt je sais pas ou je mets les %d%d ,Init, n)
    voic le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
     
    void CTatoSelectNDlg::Onselect() 
    {
    // TODO: Add your control notification handler code here
    UpdateData();
     
    int Larg = GetDlgItemInt(IDC_EDIT1);
    int Haut= GetDlgItemInt(IDC_EDIT2);
    int Init = GetDlgItemInt(IDC_EDIT3);
    int Selectn = GetDlgItemInt(IDC_EDIT4);
     
    srand( (unsigned )Init );
     
    // Traitement différent selon nombre de bits/pixel
    int x,y,x1,y1;
     
    FILE *f; 
     
     
    //HANDLE k = CreateFile (" c:\\tatouage\\patchwork\\text.txt", GENERIC_WRITE, FILE_SHARE_WRITE, NULL,FILE_ATTRIBUTE_ARCHIVE,FILE_FLAG_WRITE_THROUGH ,SECURITY_ANONYMOUS);
    HANDLE hFile = CreateFile(TEXT("c:\\tatouage\\patchwork\\test.txt"),GENERIC_READ|GENERIC_WRITE,FILE_SHARE_WRITE,NULL,OPEN_ALWAYS,FILE_ATTRIBUTE_NORMAL|FILE_FLAG_OVERLAPPED,NULL);
     
    //j'ai pas compris une chose , quel est le role du hFile??
    //par exemple je met f=fopen("hFile","w") ; le fichier cett fois çi sera cree ds "C:\\tatouage"!!!
    //avec une format inconne donc moi je choisit de l'ouvrir par bloc note
    f=fopen("c:\\tatouage\\patchwork\\test.txt","w" );
    for (int i=0; i<Selectn; i++)
    {
     
    x= (rand()/(double)RAND_MAX)* Larg;
    y= (rand()/(double)RAND_MAX)* Haut;
    x1= (rand()/(double)RAND_MAX)* Larg;
    y1= (rand()/(double)RAND_MAX)* Haut;
     
    fprintf(f,"(%d,%d)-(%d,%d) \n",x,y,x1,y1); 
     
    fclose;
     
    }
     
    }
    est ce qq1 peut m'aider?

  5. #5
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    CreateFile(), c'est pour l'API de fichiers de Windows. On n'utilise pas les fonctions de stdio.h avec le handle retourné par CreateFile() : On utilise les fonctions Win32 WriteFile(), ReadFile(), CloseHandle(), etc.

    Si tu tiens à créer ton fichier avec CreateFile(), tu peux toujours refermer le handle juste apèrs avec CloseHandle() pour réouvrir le fichier créé avec fopen().
    Et là, tu n'auras plus besoin du flag FILE_SHARE_WRITE...
    Et tu n'as pas besoin non plus des OVERLAPPED I/O... Quand on ne sait pas ce qu'on fait, on s'abstient...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  6. #6
    Membre éclairé Avatar de meera
    Inscrit en
    Mai 2006
    Messages
    294
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 294
    Par défaut
    si je ferme le handel hFile
    et j'ouvre mon fichier par fopen
    donc qu'est ce que je met dans fopen

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    	 	f=fopen("c:\\tatouage\\patchwork\\test.txt","w" );
    je dois mettre tout le chemin

    pour writefile()

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     
    BOOL WriteFile(
      HANDLE hFile,                    // handle to file to write to
      LPCVOID lpBuffer,                // pointer to data to write to file
      DWORD nNumberOfBytesToWrite,     // number of bytes to write
      LPDWORD lpNumberOfBytesWritten,  // pointer to number of bytes written
      LPOVERLAPPED lpOverlapped        // pointer to structure for overlapped I/O
    );
    j'ai jamais travaillée avec elle, donc je sais pas comment determiner le nombre de bits à ecrire , ect et la remplacer par fprintf et fopen

  7. #7
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Pour commencer, pourquoi crées-tu le fichier avec CreateFile() au lieu de le créer avec fopen() ?
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  8. #8
    Membre éclairé Avatar de meera
    Inscrit en
    Mai 2006
    Messages
    294
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 294
    Par défaut
    au debut , j'ai pas utilisée creatfile()
    juste fopen & fprintf
    mais le probléme que je rencontre c'est : creer d'abord mon fichier à la main puis metter tt le chemn dans fopen
    si pour cela , j'ai cherché une méthode qui va le creer automatiquemet , puis je l'ouvre et remplir par fprintf ( comme decrit ds ma fonction)

  9. #9
    Membre éclairé Avatar de meera
    Inscrit en
    Mai 2006
    Messages
    294
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 294
    Par défaut
    mais mantenant je la compile sans fcreatfile() , ça marche bien
    je sais pas pourquoi avant mon dossier restera vide!!!!
    donc le probléme mantenat comment je puisse modifier le nom du mon fihier selon les valeurs que je tape du ( Init & Selectn)?

  10. #10
    Membre éclairé Avatar de meera
    Inscrit en
    Mai 2006
    Messages
    294
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 294
    Par défaut
    j'ai essaie de faire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     
    CString str;
    str.Format("c:\\tatouage\\patchwork\\test%d_%d.txt",Init,Selectn);
     
    f=fopen("str","w" );
    mais ne marche pas
    le fichier porte le nom str + exste ds le chemin " c:\\tatouage"

  11. #11
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Pour commencer, essaie d'afficher la chaîne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    printf("Fichier: \"%s\".\n", static_cast< LPCSTR >(str));
    Ensuite, essaie de connaître l'erreur retournée quand fopen() foire (pour fopen(), consulte errno)...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  12. #12
    Membre éclairé Avatar de meera
    Inscrit en
    Mai 2006
    Messages
    294
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 294
    Par défaut
    j'ai résolu mon pb
    je dois pas metter " str "
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     
    			CString str;
    			str.Format("c:\\tatouage\\patchwork\\test%d_%d.txt",Init,Selectn);
    			f=fopen(str,"w" );
    maintenat je dois ouvrir mon fichier ( choisir le nom selon ul Listbox)et rajouter 1 à chaque paire
    j'ai pas encore terminer mon algorithme
    jete remercie

  13. #13
    Membre éclairé Avatar de meera
    Inscrit en
    Mai 2006
    Messages
    294
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 294
    Par défaut
    salut
    j'ai changé un peu mon algorithme, au lieu que je fait entrer largeur et hauteur( ou bien l'intevalle), je veux que lorsue je'ouvre une image par defaut ses dimensions seront les extrimités de mon intervalle.
    pour cela j'ai cree une fonction dans la classe CImage:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
     
    BOOL CImage::creepatch()
     
    {
     if(!m_hDib)
    		return FALSE;	// DIB non valide
     
    	// On crée une nouvelle zone mémoire pour accueillir le nouveau bitmap
    	HGLOBAL hNewDib=GlobalAlloc(GHND, GlobalSize(m_hDib));
    	if(!hNewDib)
    		return FALSE;  // Pas assez de mémoire ou problème
     
    	LPBITMAPINFOHEADER BmSrcInfo=(LPBITMAPINFOHEADER)GlobalLock(m_hDib);
    	LPBITMAPINFO biSrc=(LPBITMAPINFO)BmSrcInfo;
     
    	LPBITMAPINFOHEADER BmDestInfo=(LPBITMAPINFOHEADER)GlobalLock(hNewDib);
    	LPBITMAPINFO biDest=(LPBITMAPINFO)BmDestInfo;
     
    	// Détermination du nombre de couleurs
    	int nColors = BmSrcInfo->biClrUsed ? BmSrcInfo->biClrUsed : 0x1FF & (1 << BmSrcInfo->biBitCount);
     
    	// Copie du Header + palette ds le nouveau bitmap
    	CopyMemory(biDest, biSrc, BmSrcInfo->biSize+nColors*sizeof(RGBQUAD));
     
    	// Détermination de la zone des bits de l'image source et largeur lignes en octets
    	BYTE* lpSrcBits = (BYTE*)BmSrcInfo+BmSrcInfo->biSize+nColors*sizeof(RGBQUAD);
    	int nScanWidth = WIDTHBYTES(BmSrcInfo->biWidth * BmSrcInfo->biBitCount);
     
    	// Détermination de la zone des bits de l'image destination
    	BYTE* lpDestBits = (BYTE*)BmDestInfo+BmDestInfo->biSize+nColors*sizeof(RGBQUAD);
     
    // Traitement différent selon nombre de bits/pixel
     
     
     
    	// Traitement différent selon nombre de bits/pixel
    	int x,y,x1,y1;
     
     
    	       x= (rand()/(double)RAND_MAX)* BmSrcInfo->biWidth;
    		   y= (rand()/(double)RAND_MAX)* BmSrcInfo->biHeight;
    		   x1= (rand()/(double)RAND_MAX)* BmSrcInfo->biWidth;
    		   y1= (rand()/(double)RAND_MAX)* BmSrcInfo->biHeight;
     
     
     
    GlobalUnlock(m_hDib);
     
    return TRUE;
    }
    et je la fait appler ds mon classe Dlg
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
     
    void CTatoSelectNDlg::Onselect() 
    {
    	// TODO: Add your control notification handler code here
    	UpdateData();
     
    //	int Larg = GetDlgItemInt(IDC_EDIT1);
    //	int Haut= GetDlgItemInt(IDC_EDIT2);
    	int Init = GetDlgItemInt(IDC_EDIT3);
    	int Selectn = GetDlgItemInt(IDC_EDIT4);
     
     
     
    srand( (unsigned )Init );
    	int x,y,x1,y1;
     
    	  FILE *f; 
     
    			CString str;
    			str.Format("c:\\tatouage\\patchwork\\test%d_%d.txt",Init,Selectn);
    			f=fopen(str,"w" );
    				for (int i=0; i<Selectn; i++)
    	{
     
    	       m_Image.creepatch();
     
    	fprintf(f,"(%d,%d)-(%d,%d) \n",x,y,x1,y1); 
     
    	fclose;
     
    	}
    /*	srand( (unsigned )Init );
     
    	// Traitement différent selon nombre de bits/pixel
    	int x,y,x1,y1;
     
    	  FILE *f; 
     
    			CString str;
     
    }
    le probléme que je rencontre; c'est que le fichier a crée mais il est remplit par des valeurs incoyable :
    ex
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    (-858993460,-858993460)-(-858993460,-858993460) 
    (-858993460,-858993460)-(-858993460,-858993460) 
    (-858993460,-858993460)-(-858993460,-858993460) 
    (-858993460,-858993460)-(-858993460,-858993460)
    est ce qq1 peut m'expliquer quellle est ma faute?

  14. #14
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    -858993460 = 0xCCCCCCCC en hexa.
    --> Valeurs non-initialisées.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  15. #15
    Membre éclairé Avatar de meera
    Inscrit en
    Mai 2006
    Messages
    294
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 294
    Par défaut
    mais d'ou vient ces valeurs!
    moi j'ouvvre une image 512*512 par exemple
    j'essaie d'initialiser x,y,x1,et y1 par 0
    cette fois ci valeurs sont tous nuls
    je sais pas ou est le pb?

  16. #16
    Membre éclairé Avatar de meera
    Inscrit en
    Mai 2006
    Messages
    294
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 294
    Par défaut
    j'ai encore modifié la fonction:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
     
    BOOL CImage::creepatch(int x,int y,int x1,int y1)
     
    {
     if(!m_hDib)
    		return FALSE;	// DIB non valide
     
    	// On crée une nouvelle zone mémoire pour accueillir le nouveau bitmap
    	HGLOBAL hNewDib=GlobalAlloc(GHND, GlobalSize(m_hDib));
    	if(!hNewDib)
    		return FALSE;  // Pas assez de mémoire ou problème
     
    	LPBITMAPINFOHEADER BmSrcInfo=(LPBITMAPINFOHEADER)GlobalLock(m_hDib);
    	LPBITMAPINFO biSrc=(LPBITMAPINFO)BmSrcInfo;
     
    	LPBITMAPINFOHEADER BmDestInfo=(LPBITMAPINFOHEADER)GlobalLock(hNewDib);
    	LPBITMAPINFO biDest=(LPBITMAPINFO)BmDestInfo;
     
    	// Détermination du nombre de couleurs
    	int nColors = BmSrcInfo->biClrUsed ? BmSrcInfo->biClrUsed : 0x1FF & (1 << BmSrcInfo->biBitCount);
     
    	// Copie du Header + palette ds le nouveau bitmap
    	CopyMemory(biDest, biSrc, BmSrcInfo->biSize+nColors*sizeof(RGBQUAD));
     
    	// Détermination de la zone des bits de l'image source et largeur lignes en octets
    	BYTE* lpSrcBits = (BYTE*)BmSrcInfo+BmSrcInfo->biSize+nColors*sizeof(RGBQUAD);
    	int nScanWidth = WIDTHBYTES(BmSrcInfo->biWidth * BmSrcInfo->biBitCount);
     
    	// Détermination de la zone des bits de l'image destination
    	BYTE* lpDestBits = (BYTE*)BmDestInfo+BmDestInfo->biSize+nColors*sizeof(RGBQUAD);
     
    // Traitement différent selon nombre de bits/pixel
     
     
     
    	// Traitement différent selon nombre de bits/pixel
    	// x=0,y=0,x1=0,y1=0;
     
     
    	       x= (rand()/(double)RAND_MAX)* BmSrcInfo->biWidth;
    		   y= (rand()/(double)RAND_MAX)* BmSrcInfo->biHeight;
    		   x1= (rand()/(double)RAND_MAX)* BmSrcInfo->biWidth;
    		   y1= (rand()/(double)RAND_MAX)* BmSrcInfo->biHeight;
     
     
     
    GlobalUnlock(m_hDib);
     
    return TRUE;
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
     
    void CTatoSelectNDlg::Onselect() 
    {
    	// TODO: Add your control notification handler code here
    	UpdateData();
     
    //	int Larg = GetDlgItemInt(IDC_EDIT1);
    //	int Haut= GetDlgItemInt(IDC_EDIT2);
    	int Init = GetDlgItemInt(IDC_EDIT3);
    	int Selectn = GetDlgItemInt(IDC_EDIT4);
     
     
    srand( (unsigned )Init );
    	int	 x=0,y=0,x1=0,y1=0;
     
    	  FILE *f; 
     
    			CString str;
    			str.Format("c:\\tatouage\\patchwork\\test%d_%d.txt",Init,Selectn);
    			f=fopen(str,"w" );
    				for (int i=0; i<Selectn; i++)
    	{
     
    	       m_Image.creepatch(x,y,x1,y1);
     
    	fprintf(f,"(%d,%d)-(%d,%d) \n",x,y,x1,y1); 
     
    	fclose;
     
    	}
    }
    le resultat:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    (0,0)-(0,0) 
    (0,0)-(0,0) 
    (0,0)-(0,0) 
    (0,0)-(0,0)
    !!!!

  17. #17
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    1. Ben... On peut savoir à quoi servent tes variables? Tu n'écris jamais dedans!
      C'était pourtant simple à comprendre... Je commence à croire que tu as l'âge de ton avatar...
    2. Ton code n'appelle pas fclose().
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  18. #18
    Membre éclairé Avatar de meera
    Inscrit en
    Mai 2006
    Messages
    294
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 294
    Par défaut
    je t'explique
    avant je fait entrer les extrimités de mon inrvalle ds la boite dialog( supposons que sont es dimensions d'une image)
    j'ai ce code qui marche tres bien
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
     
     
    void CTatoSelectNDlg::Onselect() 
    {
    	// TODO: Add your control notification handler code here
    	UpdateData();
     
    	int Larg = GetDlgItemInt(IDC_EDIT1);
    	int Haut= GetDlgItemInt(IDC_EDIT2);
    	int Init = GetDlgItemInt(IDC_EDIT3);
    	int Selectn = GetDlgItemInt(IDC_EDIT4);
    srand( (unsigned )Init );
     
    	// Traitement différent selon nombre de bits/pixel
    	int x,y,x1,y1;
     
    	  FILE *f; 
     
    			CString str;
    			str.Format("c:\\tatouage\\patchwork\\test%d_%d.txt",Init,Selectn);
    			f=fopen(str,"w" );
     
    	for (int i=0; i<Selectn; i++)
    	{
     
    	       x= (rand()/(double)RAND_MAX)* Larg;
    		   y= (rand()/(double)RAND_MAX)* Haut;
    		   x1= (rand()/(double)RAND_MAX)* Larg;
    		   y1= (rand()/(double)RAND_MAX)* Haut;
     
    	fprintf(f,"(%d,%d)-(%d,%d) \n",x,y,x1,y1); 
     
    	fclose;
     
    	}
     
    }
    maintenat , je veux que lorsue j'ouvre une image, ses dimensions seront mes nouvelle extrimitées par défaut
    pour cela j'écris la 1er fonction
    et mes variables retourne juste un nombre aléatoire ( random* largeur o bien hauteur du mon image)
    et enfin je fais l'appele de cette fonction , j'entre les valeurs Selectn et Init
    c tout
    je veux afficher ces paires pixels( je dois avoir meme resultat qu'avant le changement)

Discussions similaires

  1. création de fichiers dans le disque dur
    Par sex-sansbol dans le forum ASP
    Réponses: 6
    Dernier message: 24/08/2004, 09h39
  2. Création de fichiers CAB
    Par Polux63 dans le forum Windows
    Réponses: 5
    Dernier message: 22/08/2004, 10h50
  3. Création de fichier
    Par gsxr man dans le forum ASP
    Réponses: 2
    Dernier message: 28/06/2004, 22h19
  4. Réponses: 8
    Dernier message: 03/09/2003, 00h47
  5. création de fichiers .x
    Par Pazz dans le forum DirectX
    Réponses: 1
    Dernier message: 03/12/2002, 00h33

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo