Importation vers txt

Signaler
Messages postés
2
Date d'inscription
mardi 29 décembre 2015
Statut
Membre
Dernière intervention
3 janvier 2016
-
Messages postés
675
Date d'inscription
jeudi 17 avril 2008
Statut
Membre
Dernière intervention
19 février 2019
-
Bonjour;
lorsque j'enregistre:
  • 50000002403339Ait salim didou1254

mais je voulais qu'il m'affiche comme ça:
  • 50000002403339(2 Blancs)Ait salim didou(12 Blancs) puis 1254

c'est a dire :
(*) sa longuer est 1
Ait salim didou) sa longuer est 27 mais pas 15 il faut qu'il m'affiche les Blancs
(içi un espace de 12 blanc+les 15 caracteres (Ait salim didou)=27
(1254) sa longuer est 4
il fallait pas qu'il me scotche (1254) avec Ait salim didou
merci

2 réponses

Messages postés
675
Date d'inscription
jeudi 17 avril 2008
Statut
Membre
Dernière intervention
19 février 2019
12
Salut
Montre comment tu enregistres "50000002403339Ait salim didou1254"
on pourra peut être faire quelque chose
Messages postés
2
Date d'inscription
mardi 29 décembre 2015
Statut
Membre
Dernière intervention
3 janvier 2016

Voila code source:
var
fic: TextFile;
i: Integer;
Field: TField;
begin
AssignFile(fic, 'D:\DD\FD.txt');
try
Rewrite(fic);
with DD do
try
open;
First;
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
field := fields[i];
//chaines sur 15 caractères
if field is TStringField then
Write(fic, format('%1.400s', [field.AsString]))
else if field is TIntegerField then
// entiers sur 15 caractères
write(fic, field.asInteger: 1)
else if field is TFloatField then
// réels sur 10 caractères dont 2 décimales
write(fic, field.asFloat: 1: 1)
else if field is TDateTimeField then
write(fic, FormatDateTime('mm-YYYY', field.AsDateTime));
end;
WriteLn(fic);
Next;
end;
finally
EnableControls;
end;
finally
CloseFile(fic);
end;
Messages postés
675
Date d'inscription
jeudi 17 avril 2008
Statut
Membre
Dernière intervention
19 février 2019
12
moi perso, je m'orienterais vers ce genre de solution :
je découpe la chaîne de base (z) en 3 morceaux (z1,z2,z3)
ensuite je recrée la chaîne finale ( avec format ou autre méthode assez facile à faire)

Principe du découpage :
après lecture de la chaîne à convertir dans z, j'avance l'index n jusqu'à trouver un caractère non numérique et je découpe
puis je recommence jusqu'à trouver un caractère numérique
Le reste constitue la troisième chaîne

//--------------- lecture chaine
readln(fic,z);
//------- découpe 1
n := 1;
while pos(z[n],'0123456789')>0 do n := n + 1;
z1 := copy(z,1,n-1);
z := copy(z,n,length(z));
//------- découpe 2
n := 1;
while pos(z[n],'0123456789')=0 do n := n + 1;
z2 := copy(z,1,n-1);
//------- découpe 1
z3 := copy(z,n,length(z));

ps : c'est de la syntaxe delphi, donc peut être à adapter à ton pascal (free, turbo, je ne sais pas)