IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 Delphi Discussion :

Conversion et de String ASCII vers EBCDIC 037 et inverse


Sujet :

Delphi

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2012
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2012
    Messages : 4
    Points : 4
    Points
    4
    Par défaut Conversion et de String ASCII vers EBCDIC 037 et inverse
    Bonjour,

    Il y a de cela une semaine, mon manager m'as donné comme tâche d'ecrire deux fonctions permettant de répondre a l'enoncé indiqué plus haut afin de les integrer à un outils déjà existant.

    Mon probléme est que je n'ai jamais fait de telles conversion ainsi que du Delphi(ou pascal objet). je fait du perl et du haskell habituellement.

    J'ai reussi à trouver les ressources suivantes:
    - http://en.wikipedia.org/wiki/EBCDIC_037
    - Voici exactement ce que je veux faire : http://www-01.ibm.com/support/docvie...id=swg21229962 mais en COBOL...
    - http://theroadtodelphi.wordpress.com...-using-delphi/
    - http://pic.dhe.ibm.com/infocenter/ii...on_Tables.html

    Si je resume, ce que j'ai compris, il y a deux maniéres de le faire:
    1) Mettre la chaine(EBCDIC ou ASCII) dans un tableau de bytes et faire la convertion voulue
    2) Mettre la chaine(EBCDIC ou ASCII dans un tableau de bytes et manipuler les bytes.

    Dans l'un ou l'autre des cas je suis incapable de voir une solution.
    Merci de bien me donner des pointeurs ou meme une solution si quelqu'un l'a déjà fait.
    Je vais bien sur poster ma solution si jamais j'y arrive de moi-meme.

    Cordialement,
    Sarfraz

  2. #2
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 457
    Points
    28 457
    Par défaut
    il suffit d'avoir une table de conversion valide

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
     
    { ANSI to EBCDIC translation }
    const
     A2E:array[#0..#255] of char=(
      #$00,#$01,#$02,#$03,#$37,#$2D,#$2E,#$2F,#$16,#$05,#$25,#$0B,#$0C,#$0D,#$0E,#$0F,
      #$10,#$11,#$12,#$13,#$3C,#$3D,#$32,#$26,#$18,#$19,#$3F,#$27,#$1C,#$1D,#$1E,#$1F,
      #$40,#$4F,#$7F,#$B1,#$5B,#$6C,#$50,#$7D,#$4D,#$5D,#$5C,#$4E,#$6B,#$60,#$4B,#$61,
      #$F0,#$F1,#$F2,#$F3,#$F4,#$F5,#$F6,#$F7,#$F8,#$F9,#$7A,#$5E,#$4C,#$7E,#$6E,#$6F,
      #$44,#$C1,#$C2,#$C3,#$C4,#$C5,#$C6,#$C7,#$C8,#$C9,#$D1,#$D2,#$D3,#$D4,#$D5,#$D6,
      #$D7,#$D8,#$D9,#$E2,#$E3,#$E4,#$E5,#$E6,#$E7,#$E8,#$E9,#$90,#$48,#$B5,#$5F,#$6D,
      #$A0,#$81,#$82,#$83,#$84,#$85,#$86,#$87,#$88,#$89,#$91,#$92,#$93,#$94,#$95,#$96,
      #$97,#$98,#$99,#$A2,#$A3,#$A4,#$A5,#$A6,#$A7,#$A8,#$A9,#$51,#$BB,#$54,#$BD,#$07,
      #$20,#$21,#$22,#$23,#$24,#$15,#$06,#$17,#$28,#$29,#$2A,#$2B,#$2C,#$09,#$0A,#$1B,
      #$30,#$31,#$1A,#$33,#$34,#$35,#$36,#$08,#$38,#$39,#$3A,#$3B,#$04,#$14,#$3E,#$FF,
      #$41,#$AA,#$B0,#$7B,#$9F,#$B2,#$DD,#$5A,#$A1,#$B4,#$9A,#$8A,#$BA,#$CA,#$AF,#$BC,
      #$4A,#$8F,#$EA,#$FA,#$BE,#$79,#$B6,#$B3,#$9D,#$DA,#$9B,#$8B,#$B7,#$B8,#$B9,#$AB,
      #$64,#$65,#$62,#$66,#$63,#$67,#$9E,#$68,#$74,#$71,#$72,#$73,#$78,#$75,#$76,#$77,
      #$AC,#$69,#$ED,#$EE,#$EB,#$EF,#$EC,#$BF,#$80,#$FD,#$FE,#$FB,#$FC,#$AD,#$AE,#$59,
      #$7C,#$45,#$42,#$46,#$43,#$47,#$9C,#$E0,#$D0,#$C0,#$52,#$53,#$58,#$55,#$56,#$57,
      #$8C,#$49,#$CD,#$CE,#$CB,#$CF,#$CC,#$E1,#$70,#$6A,#$DE,#$DB,#$DC,#$8D,#$8E,#$DF
     );
     
    { EBCDIC to ANSI translation }
    Const
     E2A:array[#0..#255] of char=(
      #$00,#$01,#$02,#$03,#$9C,#$09,#$86,#$7F,#$97,#$8D,#$8E,#$0B,#$0C,#$0D,#$0E,#$0F,
      #$10,#$11,#$12,#$13,#$9D,#$85,#$08,#$87,#$18,#$19,#$92,#$8F,#$1C,#$1D,#$1E,#$1F,
      #$80,#$81,#$82,#$83,#$84,#$0A,#$17,#$1B,#$88,#$89,#$8A,#$8B,#$8C,#$05,#$06,#$07,
      #$90,#$91,#$16,#$93,#$94,#$95,#$96,#$04,#$98,#$99,#$9A,#$9B,#$14,#$15,#$9E,#$1A,
      #$20,#$A0,#$E2,#$E4,#$40,#$E1,#$E3,#$E5,#$5C,#$F1,#$B0,#$2E,#$3C,#$28,#$2B,#$21,
      #$26,#$7B,#$EA,#$EB,#$7D,#$ED,#$EE,#$EF,#$EC,#$DF,#$A7,#$24,#$2A,#$29,#$3B,#$5E,
      #$2D,#$2F,#$C2,#$C4,#$C0,#$C1,#$C3,#$C5,#$C7,#$D1,#$F9,#$2C,#$25,#$5F,#$3E,#$3F,
      #$F8,#$C9,#$CA,#$CB,#$C8,#$CD,#$CE,#$CF,#$CC,#$B5,#$3A,#$A3,#$E0,#$27,#$3D,#$22,
      #$D8,#$61,#$62,#$63,#$64,#$65,#$66,#$67,#$68,#$69,#$AB,#$BB,#$F0,#$FD,#$FE,#$B1,
      #$5B,#$6A,#$6B,#$6C,#$6D,#$6E,#$6F,#$70,#$71,#$72,#$AA,#$BA,#$E6,#$B8,#$C6,#$A4,
      #$60,#$A8,#$73,#$74,#$75,#$76,#$77,#$78,#$79,#$7A,#$A1,#$BF,#$D0,#$DD,#$DE,#$AE,
      #$A2,#$23,#$A5,#$B7,#$A9,#$5D,#$B6,#$BC,#$BD,#$BE,#$AC,#$7C,#$AF,#$7E,#$B4,#$D7,
      #$E9,#$41,#$42,#$43,#$44,#$45,#$46,#$47,#$48,#$49,#$AD,#$F4,#$F6,#$F2,#$F3,#$F5,
      #$E8,#$4A,#$4B,#$4C,#$4D,#$4E,#$4F,#$50,#$51,#$52,#$B9,#$FB,#$FC,#$A6,#$FA,#$FF,
      #$E7,#$F7,#$53,#$54,#$55,#$56,#$57,#$58,#$59,#$5A,#$B2,#$D4,#$D6,#$D2,#$D3,#$D5,
      #$30,#$31,#$32,#$33,#$34,#$35,#$36,#$37,#$38,#$39,#$B3,#$DB,#$DC,#$D9,#$DA,#$9F
     );
     
    procedure AnsiToEbcdic(var s:string);
    var
      i:integer;
    begin
      for i:=1 to length(s) do s[i]:=A2E[s[i]];
    end;
     
    procedure EbcdicToAnsi(var s:string);
    var
      i:integer;
    begin
      for i:=1 to length(s) do s[i]:=E2A[s[i]];
    end;
    mais ça me semble léger comme requête...j'ai une longue expérience sur Delphi et l'AS/400 si toutefois...

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2012
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2012
    Messages : 4
    Points : 4
    Points
    4
    Par défaut
    Bonjour,

    Mes excuses pour le delai j'étais off work.
    C'est exactement ce que je voulais. Je me sens un peu bete je pensais que c'étais plus complexe (vu que jeux de caracteres differents).

    Une question toutefois. J'ai fais quelques recherches mais je n'ai pas trouvé ce que les symboles #$ veulent dire dans les tableaux.

    Il me semble avoir lu que le $ convertit en hexadecimal, mais le #? et les deux de suite?

    Cordialement,
    Sarfraz

  4. #4
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 586
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 586
    Points : 25 262
    Points
    25 262
    Par défaut
    # pour dire que c'est un char
    $ pour dire que c'est un nombre hexa
    #$ pour dire que l'on exprime un char en hexa

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Conversion d'un string vers un type particulier
    Par Xorgnem dans le forum C++
    Réponses: 4
    Dernier message: 27/06/2007, 13h26
  2. Conversion texte Ascii vers Image ou Pdf
    Par davydreyAXESS dans le forum Windows
    Réponses: 2
    Dernier message: 04/04/2006, 15h45
  3. conversion ASCII vers EBCEDIC
    Par Mü dans le forum C++Builder
    Réponses: 1
    Dernier message: 04/12/2005, 19h06
  4. conversion d'un type Extended vers un string
    Par matterazzo dans le forum Langage
    Réponses: 2
    Dernier message: 28/10/2005, 19h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo