Génération des fichiers filtres ASCII multiplateformes

Thomas Schlumberger

Génération des fichiers filtres ASCII multiplateformes

- Titre : Génération des fichiers filtres ASCII multiplateformes

- Auteur : Thomas Schlumberger

- Parution : 27 décembre 2005

- Licence : Copyright ® 2005 4D s.a. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.

Sommaire

Produit : 4D 2004  ·  Plateforme : Mac & Win ♪

Même s'il existe des commandes pour convertir des fichiers selon la plateforme (sachant que les données dans 4D sont toujours au format Macintosh), il faut quelquefois utiliser un fichier Filtre ASCII pour gérer les conversions de texte.

Voici une méthode utilitaire qui permet de créer ces fichiers de filtre ASCII.

Ici, si vous choisissez « 3 » dans le dialogue, un filtre « Filtre_Mac_vers_Windows.4FI » prêt à l'emploi sera enregistré à côté du fichier de structure.

Note : pour un filtre personnalisé, vous pouvez adapter la méthode pour un autre contenu.

1. C_ENTIER LONG($i)

2. C_TEXTE($vtContenu_Filtre)

3. C_ENTIER LONG($vlplateforme)

4. C_TEXTE($vtChemin;$vtFiltreASCII)

5. C_BLOB($vxBlob)

6. C_ENTIER LONG($vlplateforme;$vlSystem;$vlmachine)

8. PROPRIETES PLATE FORME($vlplateforme;$vlSystem;$vlmachine)

10. $vtReponse:=Demander("1=M>ISO, 2=ISO>M, 3=M>W, 4=W>M";"1 (Mac vers ISO)";"Créer le Filtre ASCII")

12. Si ((Num($vtReponse)>0) & (Num($vtReponse)<5))  `Choix valide ("1", "2", "3" ou "4")

13. $vlTypeFiltre:=Num($vtReponse)

14. FIXER TAILLE BLOB($vxBlob;256)

15. Boucle ($i;0;255)

16. $vxBlob{$i}:=$i

17. Fin de boucle

18. $vtContenu_Filtre:=BLOB vers texte($vxBlob;Texte sans longueur )

20. ` ----- remplacer le contenu des 128 derniers caractères -----

21. Au cas ou

22. : ($vlTypeFiltre=1)

23. Boucle ($i;129;256)

24. $vtContenu_Filtre[[$i]]:=Mac vers ISO(Caractere($i-1))

25. Fin de boucle

26. $vtFiltreASCII:="Mac vers ISO"

27. : ($vlTypeFiltre=2)

28. Boucle ($i;129;256)

29. $vtContenu_Filtre[[$i]]:=ISO vers Mac(Caractere($i-1))

30. Fin de boucle

31. $vtFiltreASCII:="ISO vers Mac"

32. : ($vlTypeFiltre=3)

33. Boucle ($i;129;256)

34. $vtContenu_Filtre[[$i]]:=Mac vers Windows(Caractere($i-1))

35. Fin de boucle

36. $vtFiltreASCII:="Mac vers Windows"

37. : ($vlTypeFiltre=4)

38. Boucle ($i;129;256)

39. $vtContenu_Filtre[[$i]]:=Windows vers Mac(Caractere($i-1))

40. Fin de boucle

41. $vtFiltreASCII:="Windows vers Mac"

42. Fin de cas

44. $vtChemin:=Demander("Nom du nouveau filtre ASCII ("+$vtFiltreASCII+")";"Filtre_"+Remplacer chaine($vtFiltreASCII;" ";"_")+".4FI")

46. Si (OK=1)

47. $vhDocRef:=Creer document($vtChemin)  `Crée le fichier avec la bonne extension.

48. Si (OK=1)

49. ENVOYER PAQUET($vhDocRef;$vtContenu_Filtre)

50. FERMER DOCUMENT($vhDocRef)  `Ferme le document

51. Si ($vlplateforme#Windows )

52. CHANGER CREATEUR DOCUMENT($vtChemin;"4D06")

53. CHANGER TYPE DOCUMENT($vtChemin;"FILT")

54. Fin de si

55. Fin de si

56. Fin de si

58. Fin de si