Delphi
Borland

Conversions
Chaînes <=> Nombres
Formatage

 

 

Conversion chaînes, nombres entiers

IntToStr et StrToInt

Ces fonctions sont utilisées pour convertir des nombres entiers en chaînes de caractères et réciproquement.

ShortString correspond au String du Pascal.

Exemple

procedure TForm1.Button1Click(Sender: TObject);

var

  S: Shortstring;

  I: Integer;

begin

  S := '22467';

  I := StrToInt(S);

  Inc(I);

  Edit1.Text := IntToStr(I);

end;

Erreurs

Déclaration

EConvertError = class(Exception);

Description

L'exception EConvertError est lancée lorsque les fonctions StrToInt ou StrToFloat ne sont pas en mesure de convertir la chaîne spécifiée vers une valeur entière ou flottante valide. Par exemple, ce code déclenche l'exception signalant une erreur de conversion car 3.4 n'est pas une valeur entière :

var

  X: Integer;

begin

  X := StrToInt('3.4');

end;

 

Retour Haut de page

Conversion chaîne vers  nombre réel et réciproquement

StrToFloat

ATTENTION : Avant toute utilisation de cette fonction (dans form.create par exemple, placer l’instruction

DecimalSeparator:='.'; ou DecimalSeparator:=','.

Sinon le plantage sur le point est probable avec une chance sur deux.

FloatToStr

FloatToStr convertit la valeur flottante Value en une représentation de type chaîne. La conversion utilise le format général des nombres avec 15 chiffres significatifs.

Pour plus de détails, voir la description des fonctions FloatToStr et FloatToStrF.

FloatToStrF

r désigne un réel.

s:=' Votre note est de : '+ FloatToStrF(r , ffFixed , 1 , 3) +' sur 20';

floatToStrF(r , ffFixed , 4 , 2)+ '/'+intToStr(Total) donne quatre chiffres dont deux décimales.

FloatToText

function FloatToText(Buffer: PChar; const Value; ValueType: TFloatValue; Format: TFloatFormat; Precision, Digits: Integer): Integer;

Description

La fonction FloatToText convertit une valeur flottante en sa représentation décimale en utilisant le format, la précision et le nombre de chiffres indiqués. La valeur Value doit être une variable de type Extended ou Currency, comme indiqué par le paramètre ValueType. La chaîne résultante est stockée dans le tampon spécifié et la valeur renvoyée correspond au nombre de caractères qui y sont stockés. La chaîne renvoyée ne possède pas de caractère de fin null. Pour plus de détails, voir la description de la fonction FloatToStrF.

FormatFloat : Formatage d’un réel dans une chaîne.

ATTENTION : Déclaration du point ou de la virgule

Dans form.create par exemple, placer l’instruction

DecimalSeparator:='.'; ou DecimalSeparator:=','; sinon le plantage sur le point est probable avec une chance sur deux.

Titre.caption:='x = '+FormatFloat('####0.#####',y)+' à 10-5 près';

Le format précédent permet d’afficher au moins un zéro devant la virgule.

Ede.text:=FormatFloat('### ### ### ##0.00 "€"',e);

Pour accepter le point et la virgule voir l’exemple EuroFranc.zip

 

Retour haut de page

 

Conversion d'une date en chaîne

DateToStr

Permet d’écrire la date du jour.

Cette fonction peut être utilisée très simplement de la façon suivante (sans aucune déclaration préalable autre que la chaîne s).

S :=DateToStr(date)

 

Retour Haut de page

 

Autres fonctions de chaînes de caractères

Conversion Majuscule - Minuscule

function UpCase(Ch: Char): Char;

function UpperCase(const S: string): string;

function AnsiUpperCase(const S: string): string;

function AnsiLowerCase(const S: string): string;

function LowerCase(const S: string): string;

function StrUpper(Str: PChar): PChar;

function LoCase(Ch: Char): Char;

 

Retour Haut de page

 

 

Deux nouvelles fonctions

Problème

On veut remplacer un sous chaîne par une autre.

On veut corriger les fautes de caractères du de la codification ASCII d’ancien texte DOS en ANSI convention Windows.

 

Nous pouvons créer les deux fonctions suivantes :

fRemplace

Cette fonction permet de remplacer une sous chaîne av par une autre ap.

 

function fRemplace(ch,av,ap:string):string;

  var r,l:byte;

  begin

    r:=pos(av,ch);l:=length(av);

    if r=0 then begin

       result:=ch;

       exit;

    end;

    delete(ch,r,l);

    insert(ap,ch,r);

    result:=ch

  end;

 

Conversion ASCII (Dos) en ANSI (Windows)

La fonction

Vous pouvez compléter ce qui suit avec d'autres codes que celui des principales lettres accentuées.

function fASCII_ANSI(s:string):string;

var l,i,code:byte;

begin
  l:=length(s);
  if l=0 then fASCII_ANSI:=''
  else begin
    for i:=1 to l do begin
      code:=ord(s[i]);
      case code of
        130 : s[i]:='é';
        134 : s[i]:='à';
        136 : s[i]:='ê';
        138 : s[i]:='è';
        151 : s[i]:='ù';
      end;
    end;
    fASCII_ANSI:=s;
  end;
end;

Retour Haut de page

Utilisation du Pchar

Conversion d'un pChar en string

Utiliser StrPas(pchar)

Exemple

begin

  NomfichP:=strAlloc(255);

  g_NomfichS:='Command.com /C arj.exe l '+g_NomfichS +' > PRN'; }

  g_NomfichS:='Command.com /C ARJ.exe l '+g_NomfichS +' > '+k_S2;

  strPcopy(NomfichP,g_NomfichS);

  i:=winexec(NomfichP,sw_hide);

  strdispose(NomfichP);

end;

Attention

Les constantes sont considérées comme type pchar par d'autres fonctions mais pas les variables globales.

La fonction DeleteFile(Machin) prend pour machin une constante ou un Pchar, mais pas une variable. Il faut faire la conversion ci-dessus ou alors taper la chaîne directement sous la forme 'Suite de caractères entre apostrophes'.

Retour Haut de page