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

 C++ Discussion :

créer un fichier .txt sans le nommer


Sujet :

C++

  1. #1
    Membre régulier
    Inscrit en
    Novembre 2010
    Messages
    176
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 176
    Points : 119
    Points
    119
    Par défaut créer un fichier .txt sans le nommer
    je souhaite exporter les résultats de calculs effectués para une routine c++ vers un fichier du bloc note.

    ofstream permet d'ouvrir un fichier déjà existant.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ofstream flux;
    flux.open("C:/fichier.txt");
    si le fichier n'existe pas (ici fichier.txt), il est alors créé par c++.

    mais cela ne me convient pas complètement,
    ce que je cherche à obtenir c'est en fait ouvrir le bloc note (une nouvelle session/instance) pour y écrire mes résultats de calculs dedans. et je veux laisser à l'utilisateur le choix du nom du fichier txt.

    quelqu'un a t' il des idées ?

    merci
    :-)

    http://quantcorner.wordpress.com/

  2. #2
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 883
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 883
    Points : 219 327
    Points
    219 327
    Billets dans le blog
    123
    Par défaut
    Bonjour,

    La solution peut être de passer le nom du fichier (que l'utilisateur pourra choisir) en paramètre lors du lancement du programme. Ainsi vous réutiliserez cet argument et hop le tour est joué (et s'il ne passe rien, on prend un nom de fichier par défaut)
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  3. #3
    r0d
    r0d est déconnecté
    Expert éminent

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    4 264
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 4 264
    Points : 6 683
    Points
    6 683
    Billets dans le blog
    2
    Par défaut
    Bonjour,

    il existe une solution:
    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
    51
    52
    53
    54
    55
    56
    57
    58
    #include <Windows.h>
    #include <iostream>
    #include <string>
     
    using namespace std;
     
     
    #define ClearScreen() system( "CLS" )
     
    DWORD ThreadProc (LPVOID lpdwThreadParam )
    {
    	system( "notepad.exe" );
    	return 0;
    }
     
    void WriteText( const string & text )
    {
    	if ( CreateThread( NULL, //Choose default security
    		0, //Default stack size
    		(LPTHREAD_START_ROUTINE)&ThreadProc,//Routine to execute
    		NULL, //Thread parameter
    		0, //Immediately run the thread
    		NULL //Thread Id
    		) == NULL)
    	{
    		cout << "Error Creating Thread" << endl;
    		return;
    	}
     
    	HWND nphWnd = NULL;
    	while( nphWnd == NULL )
    	{
    		nphWnd = FindWindow( "Notepad", NULL );
    		Sleep( 500 );
    	}
     
    	ShowWindow( nphWnd, SW_HIDE );
    	ShowWindow( nphWnd, SW_RESTORE );
    	ShowWindow( nphWnd, SW_HIDE );
     
    	POINT pt;
    	pt.x = 1;
    	pt.y = 1;
    	for( size_t i = 0; i < text.size(); i++ )
    		SendMessage( ChildWindowFromPoint( nphWnd, pt ), WM_CHAR, text[ i ], NULL );
     
    	ShowWindow ( nphWnd, SW_SHOWMINIMIZED );
    	ClearScreen();
    }
     
    int main(int argc, char* argv[])
    {
    	WriteText( "test" );
     
    	cout << "done." << endl;
    	cin.get();
    	return 0;
    }
    Mais elle a beaucoup de défauts:
    1. Si d'autres notepad sont ouverts, il est impossible de savoir dans lequel le texte va être écrit, mais ce qui est sûr, c'est que ce ne sera pas dans celle qu'on est en train de créer. Une solution consiste à donner un nom au fichier que l'on ouvre dans le nouveau notepad (system( "notepad.exe un_nom.txt")) et utiliser ce nom dans la fonction FindWindow.
    2. l'utilisation de system est toujours plus ou moins périlleuse.
    3. Dans le code ci-dessus, la gestion du thread créé pour le notepad est atroce. En fait, il n'y a pas de gestion du thread, ce qui peut être très dangereux.
    « L'effort par lequel toute chose tend à persévérer dans son être n'est rien de plus que l'essence actuelle de cette chose. »
    Spinoza — Éthique III, Proposition VII

Discussions similaires

  1. nommer fichier.txt sans ecraser
    Par supersoft5 dans le forum C++Builder
    Réponses: 2
    Dernier message: 26/06/2007, 09h33
  2. Réponses: 4
    Dernier message: 08/04/2006, 09h10
  3. [VBA-E]Créer un fichier txt depuis une feuille Excel
    Par marie10 dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 20/02/2006, 17h36
  4. Ecrire dans un fichier txt sans en effacer le contenu
    Par cari dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 14/12/2005, 18h11
  5. Réponses: 4
    Dernier message: 05/10/2004, 17h11

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