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

  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
    Mai 2006
    Messages
    118
    D�tails du profil
    Informations personnelles :
    �ge : 48
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 118
    Par d�faut
    Bon je vais essay� de relire mon code

    Dans notre cas vFieldInfo est un tableau d'entiers � 2 dimensions,
    Dans notre exemple :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
     
    vFieldInfo = VarArrayCreate(OPENARRAY(int, (0, 2, 0, 1)), varInteger);
    int et varInteger : on veut un tableau d'entiers
    0,2,0,1 : un tableau de 3 lignes num�rot�es de 0 � 2 et de 2 colonnes num�rot�es de 0 � 1

    En gros on veut �a : avec x et y les coordonn�es
    ______________
    | x0;y0 | x0;y1 |
    ______________
    | x1;y0 | x1;y1 |
    ______________
    | x2;y0 | x2;y1 |
    _________ _____

    Si on appelle z la valeur affect�e au point de coordonn�es (x,y), on remplit le tableau avec le code :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
     
    vFieldInfo.PutElement(z,x,y); //on affecte z au point (x,y) du tableau
    Donc si tu veux formater l'ensemble de tes 21 colonnes au format texte par exemple du dois faire :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
     
    vFieldInfo = VarArrayCreate(OPENARRAY(int, (0, 20, 0, 1)), varInteger); //21 lignes pour tes 21 colonnes Excel !
    for (int i = 0; i<21; i++)
     {
      vFieldInfo.PutElement(i+1,i,0);  // i+1 correspond au N° de colonne Excel de 1 à 21
      vFieldInfo.PutElement(2,i,y);  // 2 = format texte
     }
    Voil� j'esp�re avoir �t� clair Mais c'est pas facile avec ces lignes et colonnes

    Xav

  9. #9
    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
    Merci pour ta reponse Xav++.
    C'est ce que j'avais cru comprendre et j'ai fait un essai mais pas dans une boucle j'ai repris ton principe de codage. Je suis partis sur un format texte meme pour les nombres parceque Excel gerant des variants ca ne le gene absolument pas si on recupere ces valeur pour des calculs.
    J'ai quand meme une erreur "Type de variable incorrecte" et dans l'onglet "sysvari.h" qui s'ouvre l'argument m_Arrayest est a {????} j'en deduit que le probleme est dans le tableau.
    Je poste le code je n'ai pas vu l'erreur
    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
    104
     
     
    #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égraphe"; //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 = ""; // délimitateur Other non actif
     
     Variant vFieldInfo;    // On veut {{1,2},{2,2},{3,4}}
    //vFieldInfo = VarArrayCreate(OPENARRAY(int, (X, NB de colonnes, X, X)), varInteger);
     vFieldInfo = VarArrayCreate(OPENARRAY(int, (0, 20, 0, 1)), varInteger);
     
    //vFieldInfo.PutElement(Colonne Excel, ligne 0, colonne 0);// du tableau
    //vFieldInfo.PutElement(Format Texte = 2, ligne 0, colonne 1);// 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);
    }
    dommage que l'aide bcb ne soit pas aussi claire que ton explication
    je te remercie Xav++

  10. #10
    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

    Bon chez moi �a fonctionne sur mon exemple. Plusieurs possibilit� :

    1) mon fichier a l'extension .xls et toi aucune ! J'y crois qd m�me pas trop.
    2) je suis sous bcb5 et toi sur une autre version peut �tre
    3) essaye en modifiant ton code comme suit :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    vXLWorkbook = vXLWorkbooks.OleFunction("OpenText", vFileName.c_str(), vOrigin, vStartRow, vDataType, vTextQualifier, vConsecutiveDelimiter, vTab, vSemicolon, vComma, vSpace, vOther, vOtherChar); //, vFieldInfo);
    Si �a fonctionne on sera sur que cela vient du tableau

    Je pourrais tester ton code avec mon programme demain en fin d'apr�s midi.
    Tiens moi au courant d'ici l�.

    Xav

  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
    Bon chez moi �a fonctionne sur mon exemple. Plusieurs possibilit� :

    1) mon fichier a l'extension .xls et toi aucune ! J'y crois qd m�me pas trop.
    2) je suis sous bcb5 et toi sur une autre version peut �tre
    3) essaye en modifiant ton code comme suit :
    mon fichier a une extension csv en recopiant je l'ai efface, le delimiteur est le ";"
    en supprimant "//, vFieldInfo);" j'ai encore l'erreur
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
     
    vXLWorkbook = vXLWorkbooks.OleFunction("OpenText", vFileName.c_str(), vOrigin, vStartRow, vDataType, vTextQualifier, vConsecutiveDelimiter, vTab, vSemicolon, vComma, vSpace, vOther, vOtherChar);//, vFieldInfo);
    comme cela ca fonctionne
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
     
     vXLWorkbook = vXLWorkbooks.OleFunction("OpenText", vFileName.c_str());
    j'utilise BCB 6.

    Je te remercie Xav++

  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 proceder par elimination et la ca fonctionne.

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
     
    // Variant vOtherChar = ""; // délimitateur Other non actif
     
    vXLWorkbook = vXLWorkbooks.OleFunction("OpenText", vFileName.c_str(), vOrigin, vStartRow, vDataType, vTextQualifier, vConsecutiveDelimiter, vTab, vSemicolon, vComma, vSpace, vOther);//, vOtherChar);//, vFieldInfo);
    apparement ce serait "vOtherChar" qui provoque l'erreur il serait interressant de savoir la version de BCB de sony351 et si il a procede au meme essai de suppression de "vOtherChar" qui est pourtant declare comme Variant si je trouve une solution je la poste.

  13. #13
    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
    J'ai trouve la solution c'est trop NULL c'est le cas de le dire

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
     Variant vOtherChar = NULL; // d�limitateur Other non actif
    Il suffit simplement de remplacer la chaine vide par NULL et ca fonctionne c'est a pleurer tellement c'est bete.

    Si tu essai sur ta version de BCB est ce que cela va marcher??? , ce serait interressant de le savoir y a t'il une difference entre BCB5 et BCB6.

    merci Xav++

  14. #14
    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
    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

  15. #15
    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

  16. #16
    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

  17. #17
    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

  18. #18
    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.

  19. #19
    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

  20. #20
    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
    Merci Blondelle pour les infos d'enregistrement et les corrections.
    Je regarde �a ce soir et je te tiens au courant

    Si les modo veulent ajouter le code � la FAQ je me tiens � leur dispo pour r�diger l'article.

    Xav

+ R�pondre � la discussion
Cette discussion est r�solue.
Page 1 sur 2 12 Derni�reDerni�re

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