Sauter la ligne dans un fichier

cs_xmustapha Messages postés 44 Date d'inscription mardi 1 août 2006 Statut Membre Dernière intervention 15 juillet 2011 - 2 sept. 2007 à 13:44
SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 - 2 sept. 2007 à 16:09
bonjour tout le monde

comment faire pour sauter la ligne dans un fichier  dans la function WriteFile()
(je suis sur C++ Builder 2007)
j'ai essayer ça
int CreatAutoRunFile(AnsiString ExeNameToOpen)
{

 unsigned long * i;

 AnsiString Data  = "[Autorun]\nOPEN="+ExeNameToOpen;

 char * pData  = new char[Data.Length()+1];
strcpy(pData,Data.c_str());
 Hfile = CreateFileA("autorun.inf"
                 ,FILE_ALL_ACCESS
                 ,FILE_SHARE_READ | FILE_SHARE_WRITE
                 ,NULL
                 ,CREATE_ALWAYS
                 ,FILE_ATTRIBUTE_HIDDEN
                 ,NULL);
  if (Hfile != INVALID_HANDLE_VALUE ) {

 WriteFile(Hfile,pData,StrLen(pData),i,NULL);

}
}

Alors Merci pour vos réponse

4 réponses

AndreJAO Messages postés 24 Date d'inscription samedi 15 mai 2004 Statut Membre Dernière intervention 2 septembre 2007
2 sept. 2007 à 14:16
[file://\\r \n\r] tout simplement

AM6
0
SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
2 sept. 2007 à 14:55
C'est le contraire:
Sous Windows: \r\n

C++ (@++)<!--
0
SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
2 sept. 2007 à 15:53
Wow, j'avais pas regardé le code.

char * pData  = new char[Data.Length()+1];
Cette mémoire n'est pas libérée.

Hfile = CreateFileA
Tu ne ferme pas le HANDLE

unsigned long * i;
WriteFile(Hfile,pData,StrLen(pData),i,NULL);
i ne pointe sur rien.

AnsiString ? Serait pas moins compliqué d'utiliser les bon vieux char * ? On évitera ainsi toutes ces opérations inutiles.

C++ (@++)<!--
0
SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
2 sept. 2007 à 16:09
Ah oui aussi, Hfile n'est pas déclaré (peut-être l'est-il ailleurs)
Ta fonction ne retourne rien.

Voici une version utilisant les char *:

int CreatAutoRunFile(char *lpName)
{
    HANDLE hFile;
    char lpBuf[300] = "[Autorun]\r\nOPEN="; // Contien 16 octets

    hFile = CreateFile("autorun.inf", GENERIC_WRITE, 0, 0, CREATE_ALWAYS,
        FILE_ATTRIBUTE_HIDDEN, 0);

    if (hFile != INVALID_HANDLE_VALUE ) {
        char *pBuf = lpBuf+16;
        DWORD dwDummy;

        while(*lpName) *pBuf++ = *lpName++;

        WriteFile(hFile,lpBuf,(pBuf-lpBuf),&dwDummy,0);
        CloseHandle(hFile);

        return dwDummy;
    }

    return 0;
}

C++ (@++)<!--
0
Rejoignez-nous