Remplir des champs non renseignés dans un fichier texte
cs_manudel
Messages postés63Date d'inscriptionlundi 29 avril 2002StatutMembreDernière intervention 7 mars 2005
-
17 mai 2002 à 11:11
cs_manudel
Messages postés63Date d'inscriptionlundi 29 avril 2002StatutMembreDernière intervention 7 mars 2005
-
18 mai 2002 à 12:06
je vous donne un exemple de fichier texte que j'utilise.
Les champs sont de longueur fixe.
Je récupère avec cette fonction les valeurs des champs :
function TfmMain.GetChamp(Source : String; Champ : Integer) : String;
var i, idx : Integer;
const sf : array[1..6] of Integer = (2,16,7,6,2,5);
begin
idx := 0;
for i := 1 to (Champ-1) do idx := idx + sf[i];
Result := Copy(Source, idx+1, sf[Champ]);
end;
Ces champs sont d'un certain type, comment faire pour remplir les champs textes non
renseignés par des espaces, et les champs numériques non renseignés par des 0 ?
A voir également:
Remplir des champs non renseignés dans un fichier texte
cs_Delphiprog
Messages postés4297Date d'inscriptionsamedi 19 janvier 2002StatutMembreDernière intervention 9 janvier 201332 18 mai 2002 à 10:15
Un solution simple et efficace consiste à s'assurer que la chaine source contient au moins des espaces :
Au lieu de :
Result := Copy(Source, idx+1, sf[Champ]);
on peut mettre :
Result := Copy(Source+' ', idx+1, sf[Champ]);
Pour être plus fin, il faudrait ajouter autant d'espaces que la valeur retournée par sf[champ].
cs_Delphiprog
Messages postés4297Date d'inscriptionsamedi 19 janvier 2002StatutMembreDernière intervention 9 janvier 201332 18 mai 2002 à 10:26
Suite...
Dans le cas d'un champ numérique non renseigné, la fonction retourne donc des espaces.
Pour convertir ces espaces en une valeur nulle (0), j'utiliserais :
StrToIntDef(GetChamp(Source, Champ), 0);
Ainsi, on est sûr de récupérer une valeur numérique.