ATOUTFOX
COMMUNAUTÉ FRANCOPHONE DES PROFESSIONNELS FOXPRO
Visual FoxPro : le développement durable

la commande "COPY TO fichier.txt TYPE SDF" différences fpw26 et vfp   



L'auteur

Francis Faure
France France
Membre Actif (personne physique)
# 0000000001
enregistré le 11/10/2004

http://www.wanagain.net
56 ans
Faure Francis
de la société Design Or Decline
Fiche personnelle


Note des membres
19/20
1 vote


Contributions > 01 - PRG : Programmation > Import - Export

la commande "COPY TO fichier.txt TYPE SDF" différences fpw26 et vfp
# 0000000133
ajouté le 08/01/2005 00:22:53 et modifié le 04/01/2014
consulté 11097 fois
Niveau initié

Version(s) Foxpro :
VFP 9.0
VFP 8.0
VFP 7.0
VFP 6.0
VFP 5.0
VFP 3.0
FPW 2.6

Description

je ne sais pas si cela intéresse quelqu'un...

mais si vous utilisez encore du fpw2.6 et des fichiers d'export ASCII,

alors voilà :

la commande :

COPY TO fichier.txt TYPE SDF

génére un fichier texte,

en foxpro 2.6 le fichier contient à la fin, en plus, un chr(26)
alors qu'en VFP il n'y est pas...

cela peut être génant voir blocant dans des échanges type EDI;

je propose la solution suivante :

Code source :
clear all
close all
set talk off
set safety off
clear


create table fichier (test c(10))
append blank
replace test with "1234567890"
copy to fichier.txt type sdf
use

* le fichier ascii devrait contenir le 10 octets du champs + cr (13) + lf (10)
* en vfp 9   : le fichier fait 12 octets
* en vfp 7   : le fichier fait 12 octets
* en vfp 6   : le fichier fait 12 octets
* en fpw 2.6 : le fichier fait 13 octets sur disque ! : il y a un chr(26) en +

? SuppChr26("fichier.txt")  && true en fpw26 et False en vfp7...
return


function SuppChr26
parameters p_file
private v_f, v_r, v_l, v_c
  v_r = .F.
  if File(p_file)
    v_f = Fopen(p_file, 2)
    if v_f>=0
      v_l=Fseek(v_f, -1, 2)  && -1 octets depuis 2=feof(), retourne la position
      v_c = Fread(v_f, 1)
      if Asc(v_c)=26
        if Fchsize(v_f, v_l) >=0
          v_r = .T.
        endif
      endif
      =Fclose(v_f)
    endif
  endif
return v_r

Commentaires
le 04/01/2014, JpG a écrit :
Salut Francis,
Et bien si, tu as bien fais... Lors de la reprise d'un programme en Fox 2.6 pour mettre en place les prélèvements SEPA, j'ai été piégé par ce CHR(26) en fin de fichier...
Juste un petit truc à corriger pour le test :
create table fichier (test c(10)) et non c(1).

Merci à toi.
Jp GRANGER

le 04/01/2014, Francis Faure a écrit :
Ok JP modifié.
(ce n'était qu'un exemple datant de 2005 ^^)


www.atoutfox.org - Site de la Communauté Francophone des Professionnels FoxPro - v3.4.0 - © 2004-2024.
Cette page est générée par un composant COM+ développé en Visual FoxPro 9.0-SP2-HF3