Produire fichier texte a delphi7

Fermé
mourad84 - 17 févr. 2012 à 19:21
 Profil bloqué - 17 févr. 2012 à 22:03
Bonjour,

Salut tt le monde; je dois créer un fichier texte à partir d'une table paradox. jusque là tout fonctionne bien.... mon problème c'est que le fichier text contient des colonne a longueur variable
code : en delphi 7
****************
procedure TForm1.Button3Click(Sender: TObject);
var
fic : TextFile;
i : Integer;
begin
AssignFile(fic, 'C:\test.txt');
Rewrite(fic);
with table1 do begin
open;
First;
table1.DisableControls; // eviter de re-peindre l'écran
while not Eof do begin
for i:=0 to FieldCount - 1 do begin
if i > 0 then Write(fic, '');// le séparateur un blanc
Write(fic, Fields[i].AsString);
end;
WriteLn(fic);
Next;
end;
end;
table1.EnableControls;
CloseFile(fic);
********************
le résultat obtenu est :

Compte clef Nom montant
244034220033;12 ;ali MESSAOUD;12100
326012214454146;4;NOUAR ahmed;7200
48713805842;18;SLIMAN MED;7800
255123029540243;2;moustafa MEBAREK ;6200

mon souhait est obtenir un fichier text avec des champ de longueur fixe ...exemple avec le champ "compte" 20 caractère et "clef" 2 caractère .... donc il faut complété les champs moins a des 0
exemple
Compte clef Nom montant
00000000244034220033;12;000ali MESSAOD;0012100

merci pour tout les réponce....


A voir également:

1 réponse

Bonjour

Je te conseille de t'inscrire sur le site si tu veux que la communauté s'interesse à t'aider car beaucoup postent des questions sans jamais y retourner le moins les commenter.

Pour ce qui est de ton problème, puisque les champs de la table sont de type STRING, le formatage est un outil puissant pour manipuler les chaines et les nombres, dans ton cas il est inutil d'affecter un espace ou une virgule les valeurs de tableau Fields sont copiés avec un espace de séparation sauf le dernier.

Si les champs de la tables sont statiques, donc leur nombre est connu d'avance la ligne (WriteLn 3) de ce fragment de code illustre qu'on peut renseigner directement les valeurs Fields de la table par leurs indices respectifs, les zero dans le specificateur de format sert à équilibrer la taille des champs selon le besoin, les espaces sert de separateurs :

A toi d'en apprecier

--------------------------

program ChaineFormat;

{$APPTYPE CONSOLE}

uses
SysUtils;

var

S1, s2, S3, S4 : String;
Table : Array[0..3] of String;

begin

S1 := '5678';
S2 := '1';
S3 := 'Quelqun';
S4 := '25';

Write(format('00000000000%S ', [S1]));
Write(format('00%S ', [S2]));
Write(format('%S ', [S3]));
Write(format('000%S', [S4]));

WriteLn;
WriteLn;

Table[0] := S1;
Table[1] := S2;
Table[2] := S3;
Table[3] := S4;
WriteLn(format('00000000000%S 00%S %S 000%S',
[ Table[0], Table[1], Table[2], Table[3] ]));

ReadLn;

end.
0