Importation vers txt

Messages postés
2
Date d'inscription
mardi 29 décembre 2015
Statut
Membre
Dernière intervention
3 janvier 2016
- - Dernière réponse : dubois77
Messages postés
693
Date d'inscription
jeudi 17 avril 2008
Statut
Membre
Dernière intervention
19 février 2019
- 3 janv. 2016 à 10:50
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
Afficher la suite 

2 réponses

Messages postés
693
Date d'inscription
jeudi 17 avril 2008
Statut
Membre
Dernière intervention
19 février 2019
10
0
Merci
Salut
Montre comment tu enregistres "50000002403339Ait salim didou1254"
on pourra peut être faire quelque chose
Tatir2016
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;
Commenter la réponse de dubois77
Messages postés
693
Date d'inscription
jeudi 17 avril 2008
Statut
Membre
Dernière intervention
19 février 2019
10
0
Merci
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)
Commenter la réponse de dubois77