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

C++Builder Discussion :

VB Array(1, 2) correspondance en C++


Sujet :

C++Builder

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre confirm�
    Profil pro
    Inscrit en
    Ao�t 2004
    Messages
    94
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Ao�t 2004
    Messages : 94
    Par d�faut VB Array(1, 2) correspondance en C++
    Bonjour,
    Je du code en VB qui est :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    Workbooks.OpenText Filename:="C:\zz.txt", Origin:=xlMSDOS(3), StartRow:=1(1), _
            DataType:=xlDelimited(1), TextQualifier:=xlDoubleQuote(1), ConsecutiveDelimiter _
            :=False(), Tab:=False(), Semicolon:=True(), Comma:=False(), Space:=False(), _
            Other:=False(), FieldInfo:=Array(Array(1, 2), Array(2, 2)), TrailingMinusNumbers:=True
    que je voudrais convertir en C++
    vXLWorkbooks.OleFunction("Open", NomCheminFichier.c_str(), 3, 1, 1, 1, 0, 0, 1, 0, 0, 0, ARRAY_CPP, 1); //vXLWorkbooks �tant un Variant
    le seul pb est que je n'arrive pas � faire le ARRAY_CPP,
    j'ai fait pas mal de test mais en vain, je me retourne vers vous pour de l'aide.
    Merci d'avance.

  2. #2
    Membre confirm�
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    118
    D�tails du profil
    Informations personnelles :
    �ge : 48
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 118
    Par d�faut
    Bonjour,

    dans le cadre de mon logiciel, j'ai d�velloppez un bout de code avec la fonction
    "OpenText" pour l'OLE Excel. Avec �a tu devrais facilement r�pondre � ton
    probl�me. N'h�site pas � me recontacter pour plus d'infos.

    http://www.developpez.net/forums/sho...d.php?t=169835

    @+

    Xav

  3. #3
    Membre confirm�
    Profil pro
    Inscrit en
    Ao�t 2004
    Messages
    94
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Ao�t 2004
    Messages : 94
    Par d�faut
    Bonjour et merci Xav++ mais pourrais-tu me donner le fichier que tu ouvre car moi j'ai fait un test avec un fichier txt s�par� par points virgules avec 4 colonnes ou 3 ou 2 ou 1 mais c'est pareil �a marche pas, j'ai toujours l'erreur suivante :
    Le projet Project1.exe a provoqu� une classe d'exception EOleSysError avec le message 'Type de variable incorrect'. Processus stopp�. Utilisez Pas-�-pas ou Ex�cuter pour continuer.
    Je s�che apr�s plusieurs modifications en vain.
    Merci d'avance.

  4. #4
    Membre confirm�
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    118
    D�tails du profil
    Informations personnelles :
    �ge : 48
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 118
    Par d�faut
    As tu essay� de d�bogger pas � pas ? Sur quelle ligne l'erreur se produit-elle ?
    Mon fichier est un fichier texte de 3 colonnes s�par�s par un ";". Rien de
    sp�cifique

    Pouurais tu �galement mettre ton code que je regarde tout cela

    @+

    Xav

  5. #5
    Membre confirm�
    Profil pro
    Inscrit en
    Ao�t 2004
    Messages
    94
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Ao�t 2004
    Messages : 94
    Par d�faut
    J�ai fait un copier coller du bout de code de ton post et je rempla�ais la variable nf sur la ligne de code
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    AnsiString vFileName = nf; //nom du fichier
    par "c:\\test.txt" ce dernier �tant un fichier texte avec trois colonnes s�par�s par points virgules.
    et �a bloque � l'appel de la fonction OpenText vXLWorkbook = vXLWorkbooks.OleFunction(""OpenText", ...
    le fichier "sysvari.h" s'ouvre sur les lignes de codes suivantes :
    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
      template <class P1, class P2, class P3, class P4, class P5,
                class P6, class P7, class P8, class P9, class P10,
                class P11, class P12, class P13>
      Variant Variant::OleFunction(const String& name,
        P1 p1, P2 p2, P3 p3, P4 p4, P5 p5,
        P6 p6, P7 p7, P8 p8, P9 p9, P10 p10,
        P11 p11, P12 p12, P13 p13)
      {
        TAutoArgs<13> args;
        args[1] = p1;  args[2] = p2;  args[3] = p3;
        args[4] = p4;  args[5] = p5;  args[6] = p6;
        args[7] = p7;  args[8] = p8;  args[9] = p9;
        args[10] = p10;  args[11] = p11;  args[12] = p12;
        args[13] = p13;
        return OleFunction(name, static_cast<TAutoArgsBase*>(&args));
      }
    surlign� sur la derni�re ligne (return ...)

  6. #6
    Membre confirm�
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    118
    D�tails du profil
    Informations personnelles :
    �ge : 48
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 118
    Par d�faut
    Pour le moment la seule diff�rence que je vois c'est que mon fichier texte a une extension .xls et non .txt (je sais je triche un peu ) mais bon

    Au niveau de vFieldInfo, tu a repris mon tableau avec les m�mes valeurs ou tu en as mis d'autres ?

  7. #7
    R�dacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Par d�faut
    Je suis ton post qui est tres interressant Xav++

    j'ai juste modifie la declaration de vFileName et le nom de chemin du fichier a charger, si j'ouvre sans m'occuper des champs pas de probleme.
    String vFileName;

    vFileName = "C:\\Documents and Settings\\blondelle\\Mes documents\\plan_gps\\PLAN_GPS\\t�l�graphe";
    je charge un fichier csv qui va remplir 21 colonnes j'ai egalement une erreur comme sony351 et je suis sur que cela vient de la declaration vFieldInfo
    vFieldInfo = VarArrayCreate(OPENARRAY(int, (0, 2, 0, 1)), varInteger);
    et
    vFieldInfo.PutElement(1,0,0); //on affecte 1 (Colonne Excel N�1) � la ligne 0 colonne 0 du tab
    vFieldInfo.PutElement(2,0,1); //on affecte 2 (Format Texte = 2) � la ligne 0 colonne 1 du tab
    j'ai consulte l'aide en ligne pour OPENARRAY ,mais je n'ai pas compris comment cela marche, dans la declaration Create a quoi correspondent les differents champs, idem dans la declaration PutElement.
    merci pour la reponse que tu apportera.

  8. #8
    Membre confirm�
    Profil pro
    Inscrit en
    Ao�t 2004
    Messages
    94
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Ao�t 2004
    Messages : 94
    Par d�faut
    Merci beaucoup Monsieur Xav++ et Monsieur blondelle
    :-p

  9. #9
    Membre confirm�
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    118
    D�tails du profil
    Informations personnelles :
    �ge : 48
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 118
    Par d�faut
    de rien, n'oublie pas le petit

  10. #10
    R�dacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Par d�faut
    Xav++ a ecrit
    En effet, �a parait tellemnt �vident que je ne comprends m�me pas comment
    j'ai pu mettre "" au lieu de NULL
    J'essaierai cela chez moi ce soir.

    Par contre as tu r�ussi � enregistrer ton fichier apr�s modification ?????
    Rappelle toi, c'�tait mon probl�me et je ne l'ai jamais r�solu

    On va finir par y arriver � utiliser ce p***** de logiciel de microsoft

    Xav
    J'ai corrige une derniere petite erreur si on veut un separateur autre il faut ecrire.
    Variant vOtherChar = ';'; // ici ca marche
    Si on utilise ";" il y a une erreur deVariant

    J'arrive a ouvrir mon fichier de typt csv je vais faire l'essai avec un fichier texte pour voir

    Pour enregistrer un fichier sous j'ai reussi il y a eut un post je recherche le lien et je te le donne

  11. #11
    R�dacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Par d�faut
    Xav++ a ecrit
    Par contre as tu r�ussi � enregistrer ton fichier apr�s modification ?????
    Rappelle toi, c'�tait mon probl�me et je ne l'ai jamais r�solu
    le lien pour la sauvegarde SaveSous
    Je n'ai pas tout resolu mais ca marche quand meme
    S'il te manque quelque chose fais le savoir.

  12. #12
    R�dacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Par d�faut
    Je viens de faire un essai avec mon fichier au format txt et ca fonctionne le fichier se charge correctement mes colonnes sont bien au format txt.ton programme est super et meriterait d'etre dans la FAQ parceque l'ouverture des fichiers texte a deja donne lieu a de nombreux post.
    Je donne le code complet qui fonctionne chez moi il n'est pas optimise ce n'etait qu'un essai.

    le code:
    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
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
     
    #include <vcl.h>
    #pragma hdrstop
     
    #include "OPEN_FICHIER_TXT.h"
    //---------------------------------------------------------------------------
    #pragma package(smart_init)
    #pragma resource "*.dfm"
    TForm1 *Form1;
    //---------------------------------------------------------------------------
    __fastcall TForm1::TForm1(TComponent* Owner)
            : TForm(Owner)
    {
    String vFileName;
    // Ouverture d'Excel et traitement du fichier
     Variant vXLWorkbooks, vXLWorkbook, vMSExcel;
     vFileName = "C:\\Documents and Settings\\blondelle\\Mes documents\\plan_gps\\PLAN_GPS\\télégraphe1.txt"; //nom du fichier
     Variant vOrigin = 1; // = xlWindows format Windows (par défaut)
     Variant vStartRow = 1; // on commence à la 1ère ligne (par défaut)
     Variant vDataType = 1; // = xlDelimited format délimité (par défaut)
     Variant vTextQualifier = 1; // = xlTextQualifierDoubleQuote qualificateur de texte (par défaut)
     Variant vConsecutiveDelimiter = false; // pas de délimitateur consécutif
     Variant vTab = false; // pas délimitateur tab
     Variant vSemicolon = true; // délimitateur ";"
     Variant vComma = false; // pas délimitateur virgule
     Variant vSpace = false; // pas délimitateur espace
     Variant vOther = false; // pas délimitateur autre
     Variant vOtherChar = NULL; // délimitateur Other non actif = NULL, actif = ':'
     
     Variant vFieldInfo;    // On veut {{1,2},{2,2},{3,4}}
    //vFieldInfo = VarArrayCreate(OPENARRAY(int, (N° de ligne, NB de colonnes, X, X)), varInteger);
     vFieldInfo = VarArrayCreate(OPENARRAY(int, (0, 10, 0, 1)), varInteger);
     
    //vFieldInfo.PutElement(N° de la Colonne Excel, ligne 0 du tableau, colonne 0 du tableau);// du tableau
    //vFieldInfo.PutElement(Format Texte = 2 de la colonne, ligne 0 du tableau, colonne 1 du tableau);// du tableau
     vFieldInfo.PutElement(1,0,0); //on affecte 1 (Colonne Excel N°1) à la ligne 0 colonne 0 du tab
     vFieldInfo.PutElement(2,0,1); //on affecte 2 (Format Texte = 2) à la ligne 0 colonne 1 du tab
     
     vFieldInfo.PutElement(2,1,0); //on affecte 2 (Colonne Excel N°2) à la ligne 1 colonne 0 du tab
     vFieldInfo.PutElement(2,1,1); //on affecte 2 (Format Texte = 2) à la ligne 1 colonne 1 du tab
     
     vFieldInfo.PutElement(3,2,0); //on affecte 3 (Colonne Excel N°3) à la ligne 2 colonne 0 du tab
     vFieldInfo.PutElement(2,2,1); //on affecte 2 (Format Date JMA = 4) à la ligne 2 colonne 1 du tab
     
     vFieldInfo.PutElement(4,3,0); //on affecte 1 (Colonne Excel N°4) à la ligne 3 colonne 0 du tab
     vFieldInfo.PutElement(2,3,1); //on affecte 2 (Format Texte = 2) à la ligne 3 colonne 1 du tab
     
     vFieldInfo.PutElement(5,4,0); //on affecte 2 (Colonne Excel N°5) à la ligne 4 colonne 0 du tab
     vFieldInfo.PutElement(2,4,1); //on affecte 2 (Format Texte = 2) à la ligne 4 colonne 1 du tab
     
     vFieldInfo.PutElement(6,5,0); //on affecte 3 (Colonne Excel N°6) à la ligne 5 colonne 0 du tab
     vFieldInfo.PutElement(2,5,1); //on affecte 2 (Format Date JMA = 4) à la ligne 5 colonne 1 du tab
     
     vFieldInfo.PutElement(7,6,0); //on affecte 1 (Colonne Excel N°7) à la ligne 6 colonne 0 du tab
     vFieldInfo.PutElement(2,6,1); //on affecte 2 (Format Texte = 2) à la ligne 6 colonne 1 du tab
     
     vFieldInfo.PutElement(8,7,0); //on affecte 2 (Colonne Excel N°8) à la ligne 7 colonne 0 du tab
     vFieldInfo.PutElement(2,7,1); //on affecte 2 (Format Texte = 2) à la ligne 7 colonne 1 du tab
     
     vFieldInfo.PutElement(9,8,0); //on affecte 3 (Colonne Excel N°9) à la ligne 8 colonne 0 du tab
     vFieldInfo.PutElement(2,8,1); //on affecte 2 (Format Date JMA = 4) à la ligne 8 colonne 1 du tab
     
     vFieldInfo.PutElement(10,9,0); //on affecte 1 (Colonne Excel N°10) à la ligne 9 colonne 0 du tab
     vFieldInfo.PutElement(2,9,1); //on affecte 2 (Format Texte = 2) à la ligne 9 colonne 1 du tab
     
     vFieldInfo.PutElement(11,10,0); //on affecte 2 (Colonne Excel N°11) à la ligne 10 colonne 0 du tab
     vFieldInfo.PutElement(2,10,1); //on affecte 2 (Format Texte = 2) à la ligne 10 colonne 1 du tab
     
    // vFieldInfo.PutElement(12,11,0); //on affecte 3 (Colonne Excel N°12) à la ligne 11 colonne 0 du tab
    // vFieldInfo.PutElement(2,11,1); //on affecte 2 (Format Date JMA = 4) à la ligne 11 colonne 1 du tab
     
    // vFieldInfo.PutElement(13,12,0); //on affecte 1 (Colonne Excel N°13) à la ligne 12 colonne 0 du tab
    // vFieldInfo.PutElement(2,12,1); //on affecte 2 (Format Texte = 2) à la ligne 12 colonne 1 du tab
     
    // vFieldInfo.PutElement(14,13,0); //on affecte 2 (Colonne Excel N°14) à la ligne 13 colonne 0 du tab
    // vFieldInfo.PutElement(2,13,1); //on affecte 2 (Format Texte = 2) à la ligne 13 colonne 1 du tab
     
    // vFieldInfo.PutElement(15,14,0); //on affecte 3 (Colonne Excel N°15) à la ligne 14 colonne 0 du tab
    // vFieldInfo.PutElement(2,14,1); //on affecte 2 (Format Date JMA = 4) à la ligne 14 colonne 1 du tab
     
    // vFieldInfo.PutElement(16,15,0); //on affecte 1 (Colonne Excel N°16) à la ligne 15 colonne 0 du tab
    // vFieldInfo.PutElement(2,15,1); //on affecte 2 (Format Texte = 2) à la ligne 15 colonne 1 du tab
     
    // vFieldInfo.PutElement(17,16,0); //on affecte 2 (Colonne Excel N°17) à la ligne 16 colonne 0 du tab
    // vFieldInfo.PutElement(2,16,1); //on affecte 2 (Format Texte = 2) à la ligne 16 colonne 1 du tab
     
    // vFieldInfo.PutElement(18,17,0); //on affecte 3 (Colonne Excel N°18) à la ligne 17 colonne 0 du tab
    // vFieldInfo.PutElement(2,17,1); //on affecte 2 (Format Date JMA = 4) à la ligne 17 colonne 1 du tab
     
    // vFieldInfo.PutElement(19,18,0); //on affecte 1 (Colonne Excel N°19) à la ligne 18 colonne 0 du tab
    // vFieldInfo.PutElement(2,18,1); //on affecte 2 (Format Texte = 2) à la ligne 18 colonne 1 du tab
     
    // vFieldInfo.PutElement(20,19,0); //on affecte 2 (Colonne Excel N°20) à la ligne 19 colonne 0 du tab
    // vFieldInfo.PutElement(2,19,1); //on affecte 2 (Format Texte = 2) à la ligne 19 colonne 1 du tab
     
    // vFieldInfo.PutElement(21,20,0); //on affecte 3 (Colonne Excel N°21) à la ligne 20 colonne 0 du tab
    // vFieldInfo.PutElement(2,20,1); //on affecte 2 (Format Date JMA = 4) à la ligne 20 colonne 1 du tab
     
     vMSExcel = Variant::CreateObject("Excel.Application");
     vMSExcel.OlePropertySet("Visible", true);
     vXLWorkbooks = vMSExcel.OlePropertyGet("Workbooks");
    vXLWorkbook = vXLWorkbooks.OleFunction("OpenText", vFileName.c_str(), vOrigin, vStartRow, vDataType, vTextQualifier, vConsecutiveDelimiter, vTab, vSemicolon, vComma, vSpace, vOther, vOtherChar, vFieldInfo);
     }
    dis moi si ca fonctionne pour toi Xav++ a y etre que ca fonctionne correctement

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. correspondances entre arrays
    Par Jasmine80 dans le forum Langage
    R�ponses: 2
    Dernier message: 14/11/2007, 08h41
  2. TStringList en array of string
    Par JediKerian dans le forum Langage
    R�ponses: 2
    Dernier message: 20/03/2003, 15h37
  3. R�ponses: 2
    Dernier message: 23/02/2003, 00h49
  4. passage en param�tre d'un array dynamique 2D
    Par Guigui_ dans le forum Langage
    R�ponses: 4
    Dernier message: 27/11/2002, 19h47

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