function RepeterChaine(const AChaine: String; const ANbIterations: Integer): String; var iCompteurIteration: Integer; begin { initialisation par défaut } Result := ''; { le nombre d'itérations est strictement positif } if ANbIterations > 0 then begin for iCompteurIteration := 1 to ANbIterations do begin Result := Result + AChaine; end; end; end;
{***************************************************************************** Fonction : ElaborerMasque Description : élabore le masque d'affichage des réels *****************************************************************************} function TFichePrincipale.ElaborerMasque(const AFormat: TFloatFormat; const APrecision: Integer; const ADigits: Integer): String; var iNbChiffres: Integer; const { spécificateurs du format décimal } kChiffreObligatoire: String = '0'; kChiffreEventuel: String = '#'; kExposantDecimal: String = 'E+'; kEspaceInsecable: String = #160; { intervale de validité de Digits } kMinDigits: Integer = 0; kMaxDigits: Integer = 18; kMaxDigitsExp: Integer = 4; begin { initialisation par défaut } Result := ''; case AFormat of { format général } ffGeneral: begin Result := kChiffreObligatoire + DecimalSeparator + RepeterChaine(kChiffreEventuel, ADigits); end; { format exponentiel } ffExponent: begin iNbChiffres := Min(kMaxDigitsExp, Max(kMinDigits, ADigits)); Result := kChiffreObligatoire + DecimalSeparator + RepeterChaine(kChiffreObligatoire, APrecision - 1) + kExposantDecimal + RepeterChaine(kChiffreObligatoire, iNbChiffres); end; { format fixe } ffFixed: begin iNbChiffres := Min(kMaxDigits, Max(kMinDigits, ADigits)); Result := kChiffreObligatoire + DecimalSeparator + RepeterChaine(kChiffreObligatoire, iNbChiffres); end; { format nombre } ffNumber: begin iNbChiffres := Min(kMaxDigits, Max(kMinDigits, ADigits)); Result := kChiffreEventuel + ThousandSeparator + kChiffreEventuel + kChiffreEventuel + kChiffreObligatoire + DecimalSeparator + RepeterChaine(kChiffreObligatoire, iNbChiffres); end; { format monétaire } ffCurrency: begin iNbChiffres := Min(kMaxDigits, Max(kMinDigits, ADigits)); Result := kChiffreEventuel + ThousandSeparator + kChiffreEventuel + kChiffreEventuel + kChiffreObligatoire + DecimalSeparator + RepeterChaine(kChiffreObligatoire, iNbChiffres) + kEspaceInsecable + CurrencyString; end; end; { case AFormat } end; {***************************************************************************** Fonction : RepeterChaine Description : retourne la chaîne formée d'itérations de la chaîne fournie *****************************************************************************} function TFichePrincipale.RepeterChaine(const AChaine: String; const ANbIterations: Integer): String; var iCompteurIteration: Integer; begin { initialisation par défaut } Result := ''; { le nombre d'itérations est strictement positif } if ANbIterations > 0 then begin for iCompteurIteration := 1 to ANbIterations do begin Result := Result + AChaine; end; end; end;