écrire dans un fichier

Résolu
dxh_master Messages postés 97 Date d'inscription mardi 24 mai 2005 Statut Membre Dernière intervention 25 juin 2006 - 11 juin 2006 à 19:33
cs_fjohnny Messages postés 46 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 18 septembre 2006 - 14 juin 2006 à 08:26
Bonjour a tous!
jaimerait savoir comment fait-on pour ecrir un fichier dans le sense inverse , je vous explique :
Fichier source contien par ex : 12345
et le fichier de destination doit contenir : 54321

avec un Write(f,FileBuffer);

7 réponses

cs_fjohnny Messages postés 46 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 18 septembre 2006
12 juin 2006 à 09:42
Salut,

Si j'ai bien compris ce que tu demande, tu pourrais, par exemple, d'inverser via une une boucle le contenu de ton FileBuffer avant l'écriture.

Quelquechose du style:

Function InversionChaine(Contenu: Strings): Strings;
var i:Integer;
begin
   Result:='';
   For length(Contenu)-1 downto 1 do
      Result:=Result+Contenu[i];
end;

Salutations.
fjohnny
3
dxh_master Messages postés 97 Date d'inscription mardi 24 mai 2005 Statut Membre Dernière intervention 25 juin 2006
12 juin 2006 à 19:52
ce code marche Très bien mais si tu pouvait bien le commenter car je compren pas ce code
3
cs_fjohnny Messages postés 46 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 18 septembre 2006
13 juin 2006 à 08:12
Salut,

Effectivement les commentaires sont toujours les bienvenues.

Function InversionChaine(Contenu: Strings): Strings;
var i:Integer;
begin
   Result:= ''; 'Initialisation du résulat de la fonction InversionChaine

   {Récupére le contenu lettre par lettre (un string peut être vu comme un tableau de char, dont chaque lettre à pour indice sa position dans le string) en commencant par la fin.}
    For length(Contenu)-1 downto 1 do 

      Result: =Result+Contenu[i]; 'On copie chaque lettre (de la fin au début) dans la résultat final et la chaine de début se retrouve inversé par rapport au résultat final.
end;

Salutations,
fjohnny
3
dxh_master Messages postés 97 Date d'inscription mardi 24 mai 2005 Statut Membre Dernière intervention 25 juin 2006
13 juin 2006 à 16:21
Merci Maintenan JAI COmPRIS MERCI !!!!
3

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
f0xi Messages postés 4205 Date d'inscription samedi 16 octobre 2004 Statut Modérateur Dernière intervention 12 mars 2022 35
14 juin 2006 à 04:47
c'est de la chaine de caractere ?

si oui, tout simplement la fonction ReverseString()

faut pas chercher midi a quatorze heures.

et johnny ta fonction est bien mais elle vas vite devenir un vrai boulet dés que les chaines seront plus longues.

function ReverseString(const AText: string): string;
var
  I: Integer;
  P: PChar;
begin
  SetLength(Result, Length(AText));
  P := PChar(Result);
  for I := Length(AText) downto 1 do begin
    P^ := AText[I];
    Inc(P);
  end;
end;
0
f0xi Messages postés 4205 Date d'inscription samedi 16 octobre 2004 Statut Modérateur Dernière intervention 12 mars 2022 35
14 juin 2006 à 04:51
et pour reprendre ta fonction :

Function InversionChaine(const S : Strings): Strings;
var L,I:Integer;
begin
   L := length(S);
   SetLength(Result,L);
   For I := 1 to L do
       Result[L-I] := S[I];
end;

mais comme c'est mieux de travailler avec les PChar, autant prendre ReverseString
0
cs_fjohnny Messages postés 46 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 18 septembre 2006
14 juin 2006 à 08:26
Salut,

Merci f0xi, pour la fonction ReverseString (Ne pas oublier l'unité StrUtils) est plus est plus optimisé que ce que j'ai pu écrire.
Je n'ai jamais eut l'occasion de l'utilisé, mais je note .
On en apprend tout les jours !

Salutations,
fjohnny
0
Rejoignez-nous