FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  FAQFAQ  RechercherRechercher  S'enregistrerS'enregistrer  MembresMembres  GroupesGroupes  Connexion  
Derniers sujets
» TourD Version 2
par Minibug Aujourd'hui à 1:50

» La métamatière et le peuple
par JL35 Hier à 21:18

» Capture d'une zone de l'écran total
par JL35 Hier à 18:41

» Logiciel de soutien scolaire en langues.
par Pedro Alvarez Hier à 11:49

» qui peut résoudre mon prb
par pascal10000 Jeu 16 Nov 2017 - 17:30

» évènements et objets système : listage automatique
par Jean Claude Jeu 16 Nov 2017 - 11:15

» Panoramic et la reconnaissance vocale.
par papydall Jeu 16 Nov 2017 - 3:45

» Bizzarerie dans Edge
par Marc 37 Mer 15 Nov 2017 - 17:45

» KGF_dll - nouvelles versions
par Klaus Mer 15 Nov 2017 - 2:08

» Analyser un code Panoramic
par JL35 Lun 13 Nov 2017 - 18:38

» Un bonjour en passant...
par Minibug Dim 12 Nov 2017 - 19:57

» mise a jour calculatrice
par joeeee2017 Dim 12 Nov 2017 - 4:20

» comment accèder à l'heure et à la date d'un fichier
par Klaus Sam 11 Nov 2017 - 0:53

» Compilateur FBPano
par Jicehel Mer 8 Nov 2017 - 15:22

» Mon adresse e-mail
par treehouse Mer 8 Nov 2017 - 14:36

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Novembre 2017
LunMarMerJeuVenSamDim
  12345
6789101112
13141516171819
20212223242526
27282930   
CalendrierCalendrier

Partagez | 
 

 Conversion de fichiers texte OEM vers ANSI

Voir le sujet précédent Voir le sujet suivant Aller en bas 
AuteurMessage
papydall

avatar

Nombre de messages : 5587
Age : 67
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

MessageSujet: Conversion de fichiers texte OEM vers ANSI   Ven 17 Avr 2015 - 1:48

Tout est dans le code. study

Code:

rem ============================================================================
rem        Conversion de fichiers texte OEM vers ANSI
rem                         OEM2ANSI.bas
rem                         Par Papydall
rem ============================================================================
rem OEM  : Original Equipment Manufacturer
rem ANSI : American National Standards Institute

rem Windows ne garde pas en mémoire une, mais deux pages de code courantes :
rem Une utilisée dans la console, une pour les applications graphiques.
rem La page de code utilisée pour la console est appelée la page de code OEM
rem courante.
rem Il s agit généralement, selon la région, de la page 437 ou 850.
rem La page de code utilisée pour les applications graphiques est appelée la
rem page de code ANSI courante.
rem En Occident, il s agit généralement de la page de code 1252.

rem Cette différence se voit généralement quand on tente  d afficher des
rem caractères accentués dans une application console.

rem Ceci a pour effet un défaut d affichage des caractères accentués lorsqu on
rem affiche avec le Bloc-Notes (Notepad.exe), ou Wordpad (Wordpad.exe),
rem le résultat d une redirection d une commande vers un fichier texte.
rem ============================================================================
rem La SUB oem2ansi(source$,destination$)
rem converti un fichier texte OEM vers un fichier texte ANSI.
rem Syntaxe : oem2ansi(source$,destination$)
rem           source$      : fichier source (texte OEM)
rem           destination$ : fichier destination (texte ANSI)
rem ============================================================================
rem Pour tester oem2ansi,on va créer un fichier OEM puis on le convertira en ANSI.
rem Comme exemple : on va générer un fichier texte par la ligne de commande.
rem Ce fichier texte contient l aide d utilisation de la commande DIR.
rem Il est en code OEM puisque généré à partir de la console.
rem On choisira une sortie sur le bloc-notes ou dans un FORM
rem ============================================================================
label choix
dim rep$       : rep$ = dir_current$+"/"
dim fich_OEM$  : fich_OEM$ = rep$ + "TextOEM.txt"
dim fich_ANSI$ : fich_ANSI$ = rep$ + "TextANSI.txt"
dim note$      : note$ = "C:\Windows\System32\notepad.exe"
top 0,200 : left 0,500 : width 0,300 : height 0,200
caption 0, "OEM vers ANSI"
form 3 : full_space 3 : font_bold 3 : font_size 3,10 : font_color 3, 0,0,255 : hide 3
caption 3,"Remarquez la différence de codage OEM / ANSI"
list 4 : parent 4,3 : top 4,20 : left 4,50 : width 4, width(3)/2-50 : height 4,height(3)-100
list 5 : parent 5,3 : top 5,20 : left 5,width(4)+60 : width 5, width(3)/2-50 : height 5,height(3)-100

option 1 :width 1,200 :  caption 1,"Sortie vers le bloc-notes" : on_click 1,choix
option 2 :width 2,200 :  caption 2,"Sortie sur le FORM Panoramic" : on_click 2,choix : top 2,20
button 9 : top 9,80 : left 9,50 : caption 9,"quit" : on_click 9,choix
font_bold 1 : font_bold 2  : font_bold 9

' Création d'un fichier texte codé en OEM
execute_wait "cmd /c dir /? > " + fich_OEM$
' Conversion du texte OEM vers ANSI
OEM2ANSI(fich_OEM$,fich_ANSI$)

end
rem ============================================================================
choix:
    select number_click
        case 1 : Vers_Notepad()
        case 2 : Vers_Form()
        case 9 : terminate
    end_select
return
rem ============================================================================
' Sortie des fichiers sur le bloc-notes
SUB Vers_Notepad()
    hide 3
    execute_wait note$ + " " + fich_OEM$
    execute_wait note$ + " " + fich_ANSI$
END_SUB
rem ============================================================================
' Sortie des fichiers sur FORM
SUB Vers_Form()
    dim_local a$
    show 3
    item_add 4,"Fichier : texte codé OEM" : item_add 4,"======================="
    file_open_read 10,fich_OEM$
    while file_eof(10) <> 1 : file_readln 10,a$ : item_add 4, a$ : end_while
    file_close 10

    item_add 5,"Fichier : texte codé ANSI" : item_add 5,"======================="
    file_open_read 10,fich_ANSI$
    while file_eof(10) <> 1 : file_readln 10,a$ :item_add 5, a$ : end_while
    file_close 10

END_SUB
rem ============================================================================
' Conversion de fichier codé en OEM vers un fichier codé en ANSI
SUB oem2ansi(source$,destination$)
    DIM_LOCAL oem$(16*16),oldline$, newline$, entree, sortie, oldc, newc, i
    entree = 1 : sortie = 2
    IF FILE_EXISTS(source$) = 0
       MESSAGE "Le fichier : " + source$ + " est introuvable !!!" + chr$(13) + "Veuillez vérifier son nom ..."
       TERMINATE
    END_IF
    RESTORE
    FOR i = 0 to 255 : READ oem$(i) : NEXT i
    FILE_OPEN_READ entree,source$
    FILE_OPEN_WRITE sortie,destination$
    WHILE FILE_EOF(entree) <> 1
        file_readln entree,oldline$ : newline$ = ""
        for i = 1 to len(oldline$)
            oldc = asc(mid$(oldline$,i,1))
            newc = HEX(oem$(oldc))
            newline$ = newline$ + chr$(newc)
        next i
        FILE_WRITELN sortie,newline$
    END_WHILE
    FILE_CLOSe entree : FILE_CLOSE sortie

END_SUB
rem ============================================================================

DATA "00","01","02","03","04","05","06","07","08","09","0A","0B","0C","0D","0E","0F"
DATA "10","11","12","13","14","15","16","17","18","19","1A","1B","1C","1D","1E","1F"
DATA "20","21","22","23","24","25","26","27","28","29","2A","2B","2C","2D","2E","2F"
DATA "30","31","32","33","34","35","36","37","38","39","3A","3B","3C","3D","3E","3F"
DATA "40","41","42","43","44","45","46","47","48","49","4A","4B","4C","4D","4E","4F"
DATA "50","51","52","53","54","55","56","57","58","59","5A","5B","5C","5D","5E","5F"
DATA "60","61","62","63","64","65","66","67","68","69","6A","6B","6C","6D","6E","6F"
DATA "70","71","72","73","74","75","76","77","78","79","7A","7B","7C","7D","7E","7F"
DATA "C7","FC","E9","E2","E4","E0","E5","E7","EA","EB","E8","EF","EE","EC","C4","C5"
DATA "C9","E6","C6","F4","F6","F2","FB","F9","FF","D6","DC","F8","A3","D8","D7","83"
DATA "E1","ED","F3","FA","F1","D1","AA","BA","BF","AE","AC","BD","BC","A1","AB","BB"
DATA "A6","A6","A6","A6","A6","C1","C2","C0","A9","A6","A6","2B","2B","A2","A5","2B"
DATA "2B","2D","2D","2B","2D","2B","E3","C3","2B","2B","2D","2D","A6","2D","2B","A4"
DATA "F0","D0","CA","CB","C8","69","CD","CE","CF","2B","2B","A6","5F","A6","CC","AF"
DATA "D3","DF","D4","D2","F5","D5","B5","FE","DE","DA","DB","D9","FD","DD","AF","B4"
DATA "AD","B1","3D","BE","B6","A7","F7","B8","B0","A8","B7","B9","B3","B2","A6","A0"
rem ============================================================================
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://papydall-panoramic.forumarabia.com/
papydall

avatar

Nombre de messages : 5587
Age : 67
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

MessageSujet: Re: Conversion de fichiers texte OEM vers ANSI   Ven 17 Avr 2015 - 5:45

Si ça peut intéresser quelqu’un, c’est tant mieux  sunny , sinon tant pis pour le temps perdu ! lol!

Code:

rem ============================================================================
rem       Conversion de fichier
rem          OEM vers UNICODE
rem         UNICODE vers ANSI
rem ============================================================================

dim rep$         : rep$ = dir_current$ + ""
dim OEMfich$     : OEMfich$ = rep$ + "HelpDirOEM.txt"
dim ANSIfich$    : ANSIfich$ = rep$ + "HelpDirANSI.txt"
dim UNICODEfich$ : UNICODEfich$ = rep$ + "HelpDirUNICODE.txt"
dim note$        : note$ = "C:\Windows\System32\notepad.exe"
width 0, 200 : height 0,100 : font_bold 0 : font_size 0,12 : border_hide 0
font_color 0,255,0,0
execute_wait "cmd /c dir /? > " + OEMfich$ : ' Création d'un fichier   OEM
OEM2Unicode(OEMfich$,UNICODEfich$)         : ' Conversion OEM     ---> UNICODE
Unicode2Ansi(UNICODEfich$,ANSIfich$)       : ' Conversion UNICODE ---> ANSI

print "  Codage OEM"     : execute_wait note$ + " " + OEMfich$     : print
print "  Codage UNICODE" : execute_wait note$ + " " + UNICODEfich$  : print
print "  Codage ANSI"    : execute_wait note$ + " " + ANSIfich$

file_delete OEMfich$ : file_delete ANSIfich$ : file_Delete UNICODEfich$

terminate

rem ============================================================================
' Convertir un fichier texte  OEM vers un fichier texte UNICODE.
' Une manière simple de convertir un fichier encodé en OEM vers un fichier
' UNICODE est d'utiliser la commande TYPE dans une nouvelle instance de CMD.exe
' avec l'option /U et de rediriger la sortie vers un nouveau fichier
SUB OEM2Unicode(OEMfich$,UNICODEfich$)
    execute_wait "cmd /u /c type " + OEMfich$ + " > " + UNICODEfich$
END_SUB
rem ============================================================================
' Convertir un fichier texte UNICODE vers un fichier texte ANSI.
' Une manière simple de convertir un fichier encodé en UNICODE vers un fichier
' ANSI est d'utiliser la commande TYPE dans une nouvelle instance de CMD.exe
' avec l'option /A et de rediriger la sortie vers un nouveau fichier
SUB Unicode2Ansi(UNICODEfich$,ANSIfich$)
    execute_wait "cmd /a /c type " + UNICODEfich$ + " > " + ANSIfich$
END_SUB
rem ============================================================================


Dernière édition par papydall le Sam 18 Avr 2015 - 15:48, édité 1 fois
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://papydall-panoramic.forumarabia.com/
Jean Claude

avatar

Nombre de messages : 5056
Age : 63
Localisation : 83 Var
Date d'inscription : 07/05/2009

MessageSujet: Re: Conversion de fichiers texte OEM vers ANSI   Ven 17 Avr 2015 - 8:55

Rassures-toi Papydall, tu n'as pas perdu ton temps.

J'ai des fichiers qui ont été produits par des programmes écris en QwickBasic, et ces fichiers sont des fichiers textes OEM.
1) je ne savais pas pourquoi le bloc note m'affichais "mal" ces fichiers, maintenant je sais.
2) j'ai fait un test de ton programme (le premier) et la conversion est parfaite.
3) il me suffit de renommer le fichier "TextANSI.txt" obtenu par le nom du fichier de départ et voilà mon fichier converti.

Je prends.... cheers

A+
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Jicehel

avatar

Nombre de messages : 5859
Age : 45
Localisation : 77500
Date d'inscription : 19/04/2011

MessageSujet: Re: Conversion de fichiers texte OEM vers ANSI   Ven 17 Avr 2015 - 9:20

Des procédures a garder sur le site, je pense car ça peut clairement dépanner quand on en a besoin.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
papydall

avatar

Nombre de messages : 5587
Age : 67
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

MessageSujet: Re: Conversion de fichiers texte OEM vers ANSI   Ven 17 Avr 2015 - 14:01

Je suis content cheers
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://papydall-panoramic.forumarabia.com/
Yannick

avatar

Nombre de messages : 7997
Age : 46
Localisation : Bretagne
Date d'inscription : 15/02/2010

MessageSujet: re   Ven 17 Avr 2015 - 18:19

Il n' y a plus qu' à...
...et je les publie !
Laughing
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
JL35



Nombre de messages : 5979
Localisation : 77
Date d'inscription : 29/11/2007

MessageSujet: Re: Conversion de fichiers texte OEM vers ANSI   Ven 17 Avr 2015 - 18:56

Petite remarque en cherchant la petite bête, concernant la sub oem2ansi.
Cette sub n'est pas indépendante du contexte du programme utilisateur.
En effet, elle contient une série de Datas, qui sont lus après un Restore.
Si le programme appelant, ou une autre sub, contient également des Datas, ça va mettre la pagaille.

D'autant plus, en regardant de plus près,  que ces datas ne sont pas dans le corps de la sub, mais en dehors, et lus par la sub...

Dans un cas comme celui-ci, je préconiserais suggérerais (précaution de langage) plutôt que des datas une variable chaîne locale qui contiendrait les mêmes infos et qui elle serait indépendante du reste du programme. Variable intégrée à la sub, ce qui rendrait celle-ci plus transportable.

Du genre:
Code:
DIM_LOCAL a$
a$ =  "000102030405060708090A0B0C0D0E0F"
a$=a$+"101112131415161718191A1B1C1D1E1F"
a$=a$+"202122232425262728292A2B2C2D2E2F"
a$=a$+"303132333435363738393A3B3C3D3E3F"
a$=a$+"404142434445464748494A4B4C4D4E4F"
a$=a$+"505152535455565758595A5B5C5D5E5F"
a$=a$+"606162636465666768696A6B6C6D6E6F"
a$=a$+"707172737475767778797A7B7C7D7E7F"
a$=a$+"C7FCE9E2E4E0E5E7EAEBE8EFEEECC4C5"
a$=a$+"C9E6C6F4F6F2FBF9FFD6DCF8A3D8D783"
a$=a$+"E1EDF3FAF1D1AABABFAEACBDBCA1ABBB"
a$=a$+"A6A6A6A6A6C1C2C0A9A6A62B2BA2A52B"
a$=a$+"2B2D2D2B2D2BE3C32B2B2D2DA62D2BA4"
a$=a$+"F0D0CACBC869CDCECF2B2BA65FA6CCAF"
a$=a$+"D3DFD4D2F5D5B5FEDEDADBD9FDDDAFB4"
a$=a$+"ADB13DBEB6A7F7B8B0A8B7B9B3B2A6A0"
et puis garnir la table oem$() avec des Mid$(a$,... )
Code:
FOR i = 0 to 255 : oem$(i) = MID$(a$,i*2+1,2) : NEXT i
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
papydall

avatar

Nombre de messages : 5587
Age : 67
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

MessageSujet: Re: Conversion de fichiers texte OEM vers ANSI   Ven 17 Avr 2015 - 21:32

Comme il y a beaucoup plus d'idées dans deux têtes que dans un seule, et comme JL35 a trouvé la "grosse petite bête" (c'est-à dire la SUB n'était pas indépendante du contexte du programme), je reprends et j'adhère à son idée de donner son indépendance à la SUB.

Voilà, SUB OEM2ANSI() je te donne ta liberté, tu es désormais indépendante!  Laughing
Tu peux, respectable SUB, remercier JL35 qui est pour beaucoup pour ton indépendance.


Code:

rem ============================================================================
' Conversion de fichier codé en OEM vers un fichier codé en ANSI
SUB oem2ansi(source_OEM$,destination_ANSI$)
   DIM_LOCAL oem$(16*16),oldline$, newline$, entree, sortie, oldc, newc, i, a$
' Chargement du tableao oem$() selon l'excellente idée de JL35
   a$ = a$ + "000102030405060708090A0B0C0D0E0F"
   a$ = a$ + "101112131415161718191A1B1C1D1E1F"
   a$ = a$ + "202122232425262728292A2B2C2D2E2F"
   a$ = a$ + "303132333435363738393A3B3C3D3E3F"
   a$ = a$ + "404142434445464748494A4B4C4D4E4F"
   a$ = a$ + "505152535455565758595A5B5C5D5E5F"
   a$ = a$ + "606162636465666768696A6B6C6D6E6F"
   a$ = a$ + "707172737475767778797A7B7C7D7E7F"
   a$ = a$ + "C7FCE9E2E4E0E5E7EAEBE8EFEEECC4C5"
   a$ = a$ + "C9E6C6F4F6F2FBF9FFD6DCF8A3D8D783"
   a$ = a$ + "E1EDF3FAF1D1AABABFAEACBDBCA1ABBB"
   a$ = a$ + "A6A6A6A6A6C1C2C0A9A6A62B2BA2A52B"
   a$ = a$ + "2B2D2D2B2D2BE3C32B2B2D2DA62D2BA4"
   a$ = a$ + "F0D0CACBC869CDCECF2B2BA65FA6CCAF"
   a$ = a$ + "D3DFD4D2F5D5B5FEDEDADBD9FDDDAFB4"
   a$ = a$ + "ADB13DBEB6A7F7B8B0A8B7B9B3B2A6A0"
   
   FOR i = 0 to 255 : oem$(i) = MID$(a$,i*2+1,2) : NEXT i
   entree = 1 : sortie = 2
   IF FILE_EXISTS(source_OEM$) = 0
      MESSAGE "Le fichier : " + source_OEM$ + " est introuvable !!!" + chr$(13) + "Veuillez vérifier son nom ..."
      TERMINATE
   END_IF

   FILE_OPEN_READ entree,source_OEM$
   FILE_OPEN_WRITE sortie,destination_ANSI$
   WHILE FILE_EOF(entree) <> 1
       file_readln entree,oldline$ : newline$ = ""
       for i = 1 to len(oldline$)
           oldc = asc(mid$(oldline$,i,1))
           newc = HEX(oem$(oldc))
           newline$ = newline$ + chr$(newc)
       next i
       FILE_WRITELN sortie,newline$
   END_WHILE
   FILE_CLOSe entree : FILE_CLOSE sortie

END_SUB
rem ============================================================================


Vive l'indépendance!
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://papydall-panoramic.forumarabia.com/
JL35



Nombre de messages : 5979
Localisation : 77
Date d'inscription : 29/11/2007

MessageSujet: Re: Conversion de fichiers texte OEM vers ANSI   Ven 17 Avr 2015 - 22:32

Je suis pour l'indépendance des subs, mais pas pour leur autodétermination, c'est à dire qu'elles n'en fassent pas qu'à leur tête, quand même ! Mad
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
mindstorm

avatar

Nombre de messages : 540
Age : 48
Localisation : charente
Date d'inscription : 13/02/2013

MessageSujet: Re: Conversion de fichiers texte OEM vers ANSI   Sam 18 Avr 2015 - 11:13

toute mes excuses  cyclops
je ne suis pas sur d'avoir bien compris
faut il remplacer la nouvelle sub dans le programme?


après test, j'ai un gros doute.
mon texte est: éÚÃ
la traduction normal serai :éèà
mais je n'arrive pas à l'obtenir

ou est mon erreur?
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
papydall

avatar

Nombre de messages : 5587
Age : 67
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

MessageSujet: Re: Conversion de fichiers texte OEM vers ANSI   Dim 19 Avr 2015 - 18:57

@mindstorm

La nouvelle SUB oem2ansi(source_OEM$,destination_ANSI$)
est simplement réécrite d’une autre façon pour être indépendante du programme qui l’utiliserait.
Elle converti bien un fichier codé en OEM (donc issu d’une commande de l’invite de commande) vers un fichier codé en ANSI parfaitement lisible par WINDOWS.
D’après mes tests, cette SUB fait bien son boulot.

La conversion OEM / UNICODE / ANSI  semble incorrecte.
Et là, j’atteints la limite de mon savoir ! Embarassed

Désolé !
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://papydall-panoramic.forumarabia.com/
mindstorm

avatar

Nombre de messages : 540
Age : 48
Localisation : charente
Date d'inscription : 13/02/2013

MessageSujet: Re: Conversion de fichiers texte OEM vers ANSI   Lun 20 Avr 2015 - 21:22

merci papydall
de toute façon cela fait plus de 20 ans que j'attends une solution.
Grace à vous et a Panoramic j'ai déjà réalisé pas mal de rêves les plus fou et notamment le redresseur de photo ( étrange que cela n'intéresse pas plus de monde)
a suivre
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Contenu sponsorisé




MessageSujet: Re: Conversion de fichiers texte OEM vers ANSI   

Revenir en haut Aller en bas
 
Conversion de fichiers texte OEM vers ANSI
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: PANORAMIC :: Vos sources, vos utilitaires à partager-
Sauter vers: