Renverser une chaine de caractère

cs_AMokers Messages postés 83 Date d'inscription jeudi 18 juillet 2002 Statut Membre Dernière intervention 8 octobre 2008 - 22 déc. 2003 à 19:47
cs_AMokers Messages postés 83 Date d'inscription jeudi 18 juillet 2002 Statut Membre Dernière intervention 8 octobre 2008 - 23 déc. 2003 à 00:06
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 :)

Merci d'avance

6 réponses

japee Messages postés 1727 Date d'inscription vendredi 27 décembre 2002 Statut Modérateur Dernière intervention 6 novembre 2021 8
22 déc. 2003 à 22:52
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;


Il me semble que ça fonctionne. Hein ?

Bonne prog' :-p
0
japee Messages postés 1727 Date d'inscription vendredi 27 décembre 2002 Statut Modérateur Dernière intervention 6 novembre 2021 8
22 déc. 2003 à 22:59
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 ;)
0
cs_AMokers Messages postés 83 Date d'inscription jeudi 18 juillet 2002 Statut Membre Dernière intervention 8 octobre 2008
22 déc. 2003 à 23:17
Merci je vais essayer :)
0
japee Messages postés 1727 Date d'inscription vendredi 27 décembre 2002 Statut Modérateur Dernière intervention 6 novembre 2021 8
22 déc. 2003 à 23:24
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;


Ca économise au moins une variable :big)
0

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

Posez votre question
japee Messages postés 1727 Date d'inscription vendredi 27 décembre 2002 Statut Modérateur Dernière intervention 6 novembre 2021 8
22 déc. 2003 à 23:28
On peut, je voulais dire, faut pas avoir peur quoi... (mdr)
Bonne prog', âme au coeur :)
0
cs_AMokers Messages postés 83 Date d'inscription jeudi 18 juillet 2002 Statut Membre Dernière intervention 8 octobre 2008
23 déc. 2003 à 00:06
Merci :)
Tu pourrais regarder le sujet sur eMule :)

C'est exactement cela si tu veux je te send la source !
0
Rejoignez-nous