Salut à tous !
Voila je voudrais renverser une chaine de caractere, j'ai trouver ce script :
function InverseStr(sDep : string) : string;
var
sFin : string;
i : integer;
begin
sFin:= '';
for i:= length(sDep) downto 1 do
begin
sFin:= sFin + copy(sDep, i,1);
end;
result:= sFin;
end;
Il est bien, mais ca renverse comme ca :
0123456789 -> 9876543210
et moi je voudrait faire idem mais avec un crénaux de 2 !
c'est à dire :
01 23 45 67 89 -> 89 67 45 23 01
Vous voyez ce que je veux dire ?
Si quel'q'un sait comment modifier cette fonction ou bien me proposer autre chose, je suis preneur :)
Si j'ai bien compris le problème, ceci devrait faire l'affaire (l'utilisateur ne rentre que des chiffres en nombre pairs, sinon Exit...) :
function InverseString(sDep: String): String;
var sFin: String;
i: Integer;
begin
sFin := '';
i := Length(sDep);
if Length(sDep) mod 2 <> 0 then Exit; // ici filtrage
//(Exit ou autre instruction, c'est toi qui vois...)
while i <> 0 do
begin
sFin := sFin + Copy(sDep, i - 1, 2);
Dec(i, 2);
end;
Result := sFin;
end;
Et je constate que le code auquel tu te réfères a été expédié sur ce site comme un code source complet. Des sources comme ça, j'en balance 10 par jour, c'est sûr...
Plutôt que de répondre sur les forums. Pfffffffffff...
Vive le partage du savoir, comme disent certains...
Avec un peu d'humilité, ça serait mieux lol ;)
On peur par ailleurs simplifier ce code mal ficelé au départ ainsi :
function InverseString(sDep: String): String;
var i: Integer;
begin
Result := '';
i := Length(sDep);
if Length(sDep) mod 2 <> 0 then Exit; // ici filtrage
//(Exit ou autre instruction, c'est toi qui vois...)
while i <> 0 do
begin
Result := Result + Copy(sDep, i - 1, 2);
Dec(i, 2);
end;
end;