TMemoryStream

JimmyLouis Messages postés 14 Date d'inscription jeudi 26 décembre 2002 Statut Membre Dernière intervention 13 mai 2015 - 3 janv. 2008 à 17:23
WhiteHippo Messages postés 1154 Date d'inscription samedi 14 août 2004 Statut Membre Dernière intervention 5 avril 2012 - 3 janv. 2008 à 19:11
Bonjour et bonne année,

Pas tres calé en TMemoryStream !  (Cbuilder sinon C++) et apres une apres-midi de recherche, je rend la main.
1) Pour changer tous les caractère ";" par "," dans 1 gros fichier, je fais :


int T; 
char *C;
char Ligne[545];
TMemoryStream* MS = new TMemoryStream();
MS->LoadFromFile("ESSAI.TXT");

T = MS->Size; 
C = new char[T];
MS->Read(C+1,T);

for (int I=0; I<T; I++)  {
   if  (C[I] == ' ; '    C[I] =',';            // Je change les ";" par des "," dans tout le texte.
}

 MS->Position = 0;
 MS->Write(C,T);
 
MS->SaveToFile("ESSAI2.CSV");
 
delete MS;
 delete[] C;
}

Evidemment ca fonctionne impécable !...

2) ce qui me plairait serait de pouvoir changer toutes les occurences ";;" par ",-,"
(Autrement dit tout les endroits ou il y a un doublepoint-virguleinsérerun signe moins)
Quelqu'un aurait-il la connaissance pour me mettre sur le "droit" chemin ?
Merci par avance.

Louis

1 réponse

WhiteHippo Messages postés 1154 Date d'inscription samedi 14 août 2004 Statut Membre Dernière intervention 5 avril 2012 3
3 janv. 2008 à 19:11
Bonsoir

Ton code n'étant pas écrit en Delphi, ton post ne se trouve pas à la bonne place.

Cependant, rapidement je dirais, qu'il faudrait 2 TMemoryStream, un pour la lecture du fichier d'origine, et un second pour l'ecriture du fichier modifié. Tu copies chaque caractère de la source vers la destination si c'est un caractère différent d'un ; sinon dès que tu rencontre un ; et que le caractère suivant est de nouveau un ; alors tu copies ton ,-, dans la Destination, etc.

Cordialement.
<hr />"L'imagination est plus importante que le savoir." Albert Einstein
0
Rejoignez-nous