Sauter la ligne dans un fichier

Signaler
Messages postés
44
Date d'inscription
mardi 1 août 2006
Statut
Membre
Dernière intervention
15 juillet 2011
-
Messages postés
3212
Date d'inscription
lundi 7 novembre 2005
Statut
Membre
Dernière intervention
16 février 2009
-
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

Messages postés
24
Date d'inscription
samedi 15 mai 2004
Statut
Membre
Dernière intervention
2 septembre 2007

[file://\\r \n\r] tout simplement

AM6
Messages postés
3212
Date d'inscription
lundi 7 novembre 2005
Statut
Membre
Dernière intervention
16 février 2009
15
C'est le contraire:
Sous Windows: \r\n

C++ (@++)<!--
Messages postés
3212
Date d'inscription
lundi 7 novembre 2005
Statut
Membre
Dernière intervention
16 février 2009
15
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++ (@++)<!--
Messages postés
3212
Date d'inscription
lundi 7 novembre 2005
Statut
Membre
Dernière intervention
16 février 2009
15
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++ (@++)<!--