cs_Nono40
Messages postés962Date d'inscriptionmercredi 3 avril 2002StatutMembreDernière intervention12 septembre 2006
-
18 nov. 2002 à 22:34
cs_mcgyver
Messages postés4Date d'inscriptionlundi 30 décembre 2002StatutMembreDernière intervention10 septembre 2007
-
22 mai 2004 à 03:00
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
cs_mcgyver
Messages postés4Date d'inscriptionlundi 30 décembre 2002StatutMembreDernière intervention10 septembre 2007 22 mai 2004 à 03:00
Bonjour.
Votre petit programme est très intéressant ...
Pourriez vous ajouter la possiblité pour le code Gray ( ou binaire réfléchi ) ?.
Merci.
Et encore félicitations pour votre travail et votre contribution sur delphifr.
cs_Nono40
Messages postés962Date d'inscriptionmercredi 3 avril 2002StatutMembreDernière intervention12 septembre 20062 18 nov. 2002 à 22:34
Deux petites remarques générales pour commencer :
- n'utilise pas le type byte tant que ce n'est pas strictement utile. Ils occupe de toute façon 4 octects en mémoire du à l'alignement. De plus le calcul est plus long avec 8bits qu'avec 32Bits ( le format natif des processeurs est le 32Bits )
- Utilise directement Result comme variable temporaire, c'est plus clair que d'utiliser une autre variable ( comme strRes par exempl )
Heureusement que tu as dit que tu avais simplifier la procédure... J'avais mis en commentaire sur le source que tu cites, une conversion plus simple. La voici adpatée à ton source :
function ClpBase.BaseDix(strNbr:string; bBase:Integer):string;
var Valeur,I:Integer;
begin
Valeur:=0;
For i:=1 To Length(strNbr) Do Valeur:=Valeur*bBase+ GetChiffre(strNbr[i]);
Result := IntToStr(Valeur);
end;
function ClpBase.BaseOther(lwNbr:LongWord; bBase:Byte):string;
var bIndex:Byte;
begin
Result := '';
Repeat
Result:=SetChiffre(lwNbr Mod bBase)+Result;
lwNbr:=lwNbr Div bBase;
Until lwNbr=0;
end;
22 mai 2004 à 03:00
Votre petit programme est très intéressant ...
Pourriez vous ajouter la possiblité pour le code Gray ( ou binaire réfléchi ) ?.
Merci.
Et encore félicitations pour votre travail et votre contribution sur delphifr.
18 nov. 2002 à 22:34
- n'utilise pas le type byte tant que ce n'est pas strictement utile. Ils occupe de toute façon 4 octects en mémoire du à l'alignement. De plus le calcul est plus long avec 8bits qu'avec 32Bits ( le format natif des processeurs est le 32Bits )
- Utilise directement Result comme variable temporaire, c'est plus clair que d'utiliser une autre variable ( comme strRes par exempl )
Heureusement que tu as dit que tu avais simplifier la procédure... J'avais mis en commentaire sur le source que tu cites, une conversion plus simple. La voici adpatée à ton source :
function ClpBase.BaseDix(strNbr:string; bBase:Integer):string;
var Valeur,I:Integer;
begin
Valeur:=0;
For i:=1 To Length(strNbr) Do Valeur:=Valeur*bBase+ GetChiffre(strNbr[i]);
Result := IntToStr(Valeur);
end;
function ClpBase.BaseOther(lwNbr:LongWord; bBase:Byte):string;
var bIndex:Byte;
begin
Result := '';
Repeat
Result:=SetChiffre(lwNbr Mod bBase)+Result;
lwNbr:=lwNbr Div bBase;
Until lwNbr=0;
end;
Nono.