dxh_master
Messages postés97Date d'inscriptionmardi 24 mai 2005StatutMembreDernière intervention25 juin 2006
-
11 juin 2006 à 19:33
cs_fjohnny
Messages postés46Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention18 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
cs_fjohnny
Messages postés46Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention18 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;
cs_fjohnny
Messages postés46Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention18 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;
f0xi
Messages postés4205Date d'inscriptionsamedi 16 octobre 2004StatutModérateurDernière intervention12 mars 202235 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;
f0xi
Messages postés4205Date d'inscriptionsamedi 16 octobre 2004StatutModérateurDernière intervention12 mars 202235 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
cs_fjohnny
Messages postés46Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention18 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 !