begin process at 2012 05 30 12:39:54
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

wxListCtrl --> pb avec majuscule en premier caractere (trés bizzarre)


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

wxListCtrl --> pb avec majuscule en premier caractere (trés bizzarre)

lundi 29 août 2005 à 15:55:39 | wxListCtrl --> pb avec majuscule en premier caractere (trés bizzarre)

satellite34

Bonjour,

je crée un wxListCtrl avec plusieurs colonnes qui prends comme items le listage d' un repertoire sur un serveur ftp, mon probleme c'est que lorsque le premier caractere de la premiere colonne est en majuscule ca buggue severe , a savoir que ca zappe toutes les autres colonnes sur toutes les lignes du listctrl qui se situent en dessus de l' item concerné; en + ca ne liste plus correctement aprés, c a d que ca erronne les infos.

voila mon code :

DistantSite =  new wxListCtrl(this, ID_DISTANTSITE, wxPoint(215,255),wxSize(480,315)  ,
    wxVSCROLL | wxHSCROLL | wxLC_EDIT_LABELS | wxLC_REPORT | wxLC_SORT_ASCENDING );
   
 DistantSite->InsertColumn(0,_("nom"),wxLIST_FORMAT_LEFT, -1);
 DistantSite->InsertColumn(1,_("type"),wxLIST_FORMAT_LEFT, -1);
 DistantSite->InsertColumn(2,_("taille"),wxLIST_FORMAT_LEFT, -1);
 DistantSite->InsertColumn(3,_("date"),wxLIST_FORMAT_LEFT, -1);
 DistantSite->InsertColumn(4,_("heure"),wxLIST_FORMAT_LEFT, -1 );
 DistantSite->InsertColumn(5,_("permissions"),wxLIST_FORMAT_LEFT, -1 );
   
 Commandes =  new wxTextCtrl(this, ID_COMMANDES,"Bienvenue sur SatFTPclient\n", wxPoint(6,60),wxSize(690,182)  ,
    wxTE_MULTILINE | wxTE_READONLY | wxTE_WORDWRAP);
 Commandes->AppendText("Historique des commandes FTP :\n");

 StatusBar1 =  new wxStatusBar(this, ID_STATUSBAR1 );
   
    ftp = new wxFTP();
   
    SaveFileDlg = new wxFileDialog(this, "" , "" , "" , "", wxSAVE);
   
    OpenFileDlg = new wxFileDialog(this, "" , "" , "" , "", wxOPEN);
   
    m_dirctrl = new wxGenericDirCtrl(this, ID_DIRCTRL,
    wxDirDialogDefaultFolderStr,
    wxPoint(6, 255), wxSize(200, 150),
    wxDIRCTRL_DIR_ONLY|wxSUNKEN_BORDER,
    _("All files (*.*)|*.*"), 0);
   
    fileList = new wxListBox(this, ID_FILELIST,
    wxPoint(6, 415), wxSize(200, 155),
     0, NULL,
    wxLB_EXTENDED|wxSUNKEN_BORDER);
 
 this->SetStatusBar(StatusBar1);
 ToolBar->SetToolBitmapSize(wxSize(35,35));
 ToolBar->Realize();
 this->SetToolBar(ToolBar);
 this->SetSize(8,8,710,650);
 this->SetTitle(_("SatFTPclient"));
 this->Center();
 this->SetIcon(wxNullIcon);
 this->SetBackgroundColour(wxColour(52, 84, 143));
    ////GUI Items Creation End
}

void FTPclientFrm::FTPclientFrmClose(wxCloseEvent& event)
{
    Destroy();
}
 
void FTPclientFrm::ConnecterClick(wxCommandEvent& event)
{
    connect(); 
}

void FTPclientFrm::quitter(wxCommandEvent& event)
{
    Destroy();
}

void FTPclientFrm::connect()
{
    if(!m_timer.IsRunning())
    {
    m_timer.Start(20000);
    }
    wxString adresse = EditAddress->GetValue();
 wxString utilisateur = EditUser->GetValue();
 wxString passe = EditPassword->GetValue();
 wxString directory = EditDir->GetValue();
    ftp->SetUser(utilisateur);
    ftp->SetPassword(passe);
    Commandes->AppendText("Connection.............................."
    "Wait a second\n:>:>:>:>:>:>:>:>:>:>:>:>:>:>:>:>:>:>:>:>:>:>:>:>:>:>:>:>:>:>:>:>:>:>:>:>:>:>:>:>:>:>:>:>:>\n");
   
    if (!ftp->Connect(adresse))
    {
        result();                     
        Commandes->AppendText("impossible de se connecter au serveur\n\nVeuillez vérifier l' adresse du serveur et"
        " vos identifiants\nmerci\n");
        return;
    }
    Commandes->AppendText(wxString::Format("Connecté à ")+adresse+(" dans ")+directory);
    Commandes->AppendText("\n:<:<:<:<:<:<:<:<:<:<:<:<:<:<:<:<:<:<:<:<:<:<:<:<:<:<:<:<:<:<<:<:<:<:<:<:<:<:<:<:<:<:<:<:<\n");
   
    Commandes->AppendText("Commande : USER ");
    Commandes->AppendText(utilisateur);
    Commandes->AppendText("\n");
    result();   
       
    StatusBar1->SetStatusText(wxString::Format("vous etes connecté à ")+utilisateur+("@")+adresse,0);
   
    Commandes->AppendText("Commande : CWD ");
    Commandes->AppendText(directory);
    Commandes->AppendText("\n");
    wxString msg;
    msg.Printf(wxString::Format("cwd "+directory));
    ftp->SendCommand(msg);
    result();
   
   
    Commandes->AppendText("Commande : TYPE I\n");
    ftp->SendCommand("type i");
    result();
       
    Commandes->AppendText("Commande : SYST\n");
    ftp->SendCommand("syst");
    result();
  
if (ftp->GetLastResult()=="215 UNIX Type: L8")
{
    DistantSite->ClearAll();
 DistantSite->InsertColumn(0, _("nom"), wxLIST_FORMAT_LEFT, -1);
 DistantSite->InsertColumn(1, _("type"), wxLIST_FORMAT_LEFT, -1);
 DistantSite->InsertColumn(2, _("taille"), wxLIST_FORMAT_LEFT, -1);
 DistantSite->InsertColumn(3, _("date"), wxLIST_FORMAT_LEFT, -1);
 DistantSite->InsertColumn(4, _("heure"), wxLIST_FORMAT_LEFT, -1);
 DistantSite->InsertColumn(5, _("permissions"), wxLIST_FORMAT_LEFT, -1); 
//aidé par fredcl : http://www.cppfrance.com/forum.v2.aspx?ID=530582      
    wxArrayString dirs;
    if(!ftp->GetDirList(dirs, ""))
    {
        Commandes->AppendText("impossible de récuperer la liste\n");
        return;
    }
    size_t numFiles = dirs.GetCount();
        
    DistantSite->DeleteAllItems();
     
    for (size_t i =0; i<numFiles; i++)
    {
       long m_count = DistantSite->GetItemCount();
       DistantSite->InsertItem(m_count, dirs.Item(i).AfterLast(' '));
      
       DistantSite->SetItem(m_count, 1, dirs.Item(i).AfterFirst(' ').substr(0, 13));
       DistantSite->SetItem(m_count, 2, dirs.Item(i).AfterFirst(' ').substr(14, 8));
       DistantSite->SetItem(m_count, 3, dirs.Item(i).AfterFirst(' ').substr(22, 6));
       DistantSite->SetItem(m_count, 4, dirs.Item(i).AfterFirst(' ').substr(28, 6));
       DistantSite->SetItem(m_count, 5, dirs.Item(i).Left(10));
    }
//fin de l' aide
    result();
}

if (ftp->GetLastResult()=="215 Windows_NT")
{
    DistantSite->ClearAll();                        
    DistantSite->InsertColumn(0,_("nom"),wxLIST_FORMAT_LEFT, -1);
 DistantSite->InsertColumn(1,_("taille"),wxLIST_FORMAT_LEFT, -1);
 DistantSite->InsertColumn(2,_("date"),wxLIST_FORMAT_LEFT, -1);
 DistantSite->InsertColumn(3,_("heure"),wxLIST_FORMAT_LEFT, -1);
   
    wxArrayString dirs;
    if(!ftp->GetDirList(dirs, ""))
    {
        Commandes->AppendText("impossible de récuperer la liste\n");
        return;
    }
    size_t numFiles = dirs.GetCount();
        
    DistantSite->DeleteAllItems();
     
    for (size_t i =0; i<numFiles; i++)
    {
       long m_count = DistantSite->GetItemCount();
       DistantSite->InsertItem(m_count, dirs.Item(i).AfterLast(' '));
      
       DistantSite->SetItem(m_count, 1, dirs.Item(i).AfterFirst(' ').substr(19, 10));
       DistantSite->SetItem(m_count, 2, dirs.Item(i).BeforeLast(' ').substr(0, 10));
       DistantSite->SetItem(m_count, 3, dirs.Item(i).BeforeLast(' ').substr(10, 14));
    }
    result();
}
}

En fait, je crois bien  que ca buggue uniquement avec les serveurs unix mais bon, ac reste a vérifier;
+Sérieusement j' ai vraiment a coeur de réler ce pb car c'est un projet d'études que je fais en avance pour etre plus trankil dans l' année donc il faut que ca marche nikel et que je comprenne bien le pkoi du comment de ce pb mystique.

Merci pour votre aide;

A+

Recherche entreprise développement à Montpellier pour BTS Informatique de Gestion en alternance............

lundi 29 août 2005 à 17:31:46 | Re : wxListCtrl --> pb avec majuscule en premier caractere (trés bizzarre)

fredcl

Bonjour,

si à la place de ça :
       DistantSite->SetItem(m_count, 1, dirs.Item(i).AfterFirst(' ').substr(0, 13));
       DistantSite->SetItem(m_count, 2, dirs.Item(i).AfterFirst(' ').substr(14, 8));
       DistantSite->SetItem(m_count, 3, dirs.Item(i).AfterFirst(' ').substr(22, 6));
       DistantSite->SetItem(m_count, 4, dirs.Item(i).AfterFirst(' ').substr(28, 6));
       DistantSite->SetItem(m_count, 5, dirs.Item(i).Left(10));

tu met 

       DistantSite->SetItem(m_count, 1, "Chaine 1");
       DistantSite->SetItem(m_count, 2, "Chaine 2");
       DistantSite->SetItem(m_count, 3, "Chaine 3");
       DistantSite->SetItem(m_count, 4, "Chaine 4");
       DistantSite->SetItem(m_count, 5, "Chaine 5");

ton affichage bien que faux fonctionne t'il correctement?
lundi 29 août 2005 à 23:40:28 | Re : wxListCtrl --> pb avec majuscule en premier caractere (trés bizzarre)

satellite34

Non, ca fait exactement pareil, je suis perdu complet avec ce pb!!!J'ai fait une capture d' écran pour donner une idée :
[ Lien ]

Mais de toutes facons , ca ne pouvait que faire pareil;
Je suis sous wxDevCpp 6.7, je vais essayer avec 6.8 ,  on sait jamais, mais c'est pareil ,  je suis convaincu que ca va faire le meme probleme, logiquement;
Doit y avoir une erreur dans mon code ou un oubli.....
Hum, la, y a du cassage de cr@ne pour pas grand chose;
mdr;

A+

Recherche entreprise développement à Montpellier pour BTS Informatique de Gestion en alternance............

mardi 30 août 2005 à 00:32:38 | Re : wxListCtrl --> pb avec majuscule en premier caractere (trés bizzarre)

satellite34

Bon ben je viens de tester avec 6.8 et alors la , c'est panique à bord!!!!!
je met bien 26 a la place de 25 dans l'editeur de liens mais rien n'y fait, y a des erreurs a tous les endroits du fichier, pourtant je copie les options du projet venant du template wx, c'est ce que j'ai fait avec mon player avi mais la, avec ce code, ca ne marche pas;; hum, c'est bien mystique tt ca!

@+

Cherche projets à réaliser en communauté en wxWIDGETS............

mardi 30 août 2005 à 09:09:15 | Re : wxListCtrl --> pb avec majuscule en premier caractere (trés bizzarre)

fredcl

J'ai pas le temps de regarder ça maintenant (je bosse), mais je regarderais ça ce soir.
Si tu pouvais me poster quelques lignes complètes que te renvois le FTP ce serais super.
mardi 30 août 2005 à 11:58:23 | Re : wxListCtrl --> pb avec majuscule en premier caractere (trés bizzarre)

fredcl

Bonjour,

Je crois que ton problème viens de ta façon de découper les chaines.
Voici un exemple qui reprends le type de chaines que tu reçois d'un serveur Unix :
[DEBUT FICHIER mainframe.h]
/////////////////////////////////////////////////////////////////////////////
// Name:        mainframe.h
// Purpose:    
// Author:      Fred Cailleau-Lepetit
// Modified by:
// Created:     08/30/05 10:33:05
// RCS-ID:     
// Copyright:   Copyright (c) 2005 Fred Cailleau-Lepetit.
// Licence:    
/////////////////////////////////////////////////////////////////////////////

#ifndef _MAINFRAME_H_
#define _MAINFRAME_H_

#if defined(__GNUG__) && !defined(__APPLE__)
#pragma interface "mainframe.cpp"
#endif

#include "wx/frame.h"
#include "wx/listctrl.h"

#define MAINFRAME_TITLE _("Test wxListCtrl")

#define ID_FRAME     10000
#define ID_LISTCTRL  10001
#define ID_BUTTON    10002

class wxMainFrame: public wxFrame
{   
   DECLARE_CLASS(wxMainFrame)
   DECLARE_EVENT_TABLE()

   public:
     
      wxMainFrame(){}
     
      wxMainFrame(wxWindow* parent, wxWindowID id = ID_FRAME,
                  const wxString& caption = MAINFRAME_TITLE,
                  const wxPoint& pos = wxDefaultPosition,
                  const wxSize& size = wxDefaultSize,
                  long style = wxDEFAULT_FRAME_STYLE);

      bool Create(wxWindow* parent, wxWindowID id = ID_FRAME,
                  const wxString& caption = MAINFRAME_TITLE,
                  const wxPoint& pos = wxDefaultPosition,
                  const wxSize& size = wxDefaultSize,
                  long style = wxDEFAULT_FRAME_STYLE);

      void CreateControls();
     
   protected:
     
      void OnButtonClick(wxCommandEvent& event);
     
   private:
     
      wxListCtrl* TheListCtrl;
     
      void AddElement(const wxString& element);
     
};

#endif   // _MAINFRAME_H_

[FINFICHIER mainframe.h]

[DEBUT FICHIER mainframe.cpp]
/////////////////////////////////////////////////////////////////////////////
// Name:        mainframe.cpp
// Purpose:    
// Author:      Fred Cailleau-Lepetit
// Modified by:
// Created:     08/30/05 10:33:05
// RCS-ID:     
// Copyright:   Copyright (c) 2005 Fred Cailleau-Lepetit.
// Licence:    
/////////////////////////////////////////////////////////////////////////////

#if defined(__GNUG__) && !defined(__APPLE__)
#pragma implementation "mainframe.h"
#endif

// For compilers that support precompilation, includes "wx/wx.h".
#include "wx/wxprec.h"

#ifdef __BORLANDC__
#pragma hdrstop
#endif

#ifndef WX_PRECOMP
#include "wx/wx.h"
#endif
#include "mainframe.h"

IMPLEMENT_CLASS(wxMainFrame, wxFrame)

BEGIN_EVENT_TABLE(wxMainFrame, wxFrame)
   EVT_BUTTON( ID_BUTTON, wxMainFrame::OnButtonClick )
END_EVENT_TABLE()

wxMainFrame::wxMainFrame(wxWindow* parent, wxWindowID id,
                         const wxString& caption, const wxPoint& pos,
                         const wxSize& size, long style)
{
   Create( parent, id, caption, pos, size, style );
}

bool wxMainFrame::Create(wxWindow* parent, wxWindowID id,
                         const wxString& caption, const wxPoint& pos,
                         const wxSize& size, long style)
{
   wxFrame::Create( parent, id, caption, pos, size, style );

   CreateControls();
   return TRUE;
}

void wxMainFrame::CreateControls()
{   
   wxBoxSizer* bSizer1 = new wxBoxSizer(wxVERTICAL);
   SetSizer(bSizer1);

   TheListCtrl = new wxListCtrl(this, ID_LISTCTRL, wxDefaultPosition,
                                wxDefaultSize, wxLC_REPORT);
   bSizer1->Add(TheListCtrl, 1, wxGROW, 0);
   TheListCtrl->InsertColumn(0, _("Name"));
   TheListCtrl->InsertColumn(1, _("Type"));
   TheListCtrl->InsertColumn(2, _("Size"));
   TheListCtrl->InsertColumn(3, _("Date"));
   TheListCtrl->InsertColumn(4, _("Time"));
   TheListCtrl->InsertColumn(5, _("Right"));

   wxButton* AddBtn = new wxButton(this, ID_BUTTON, _("Add Element"),
                                   wxDefaultPosition, wxDefaultSize, 0);
   bSizer1->Add(AddBtn, 0, wxALIGN_CENTER_HORIZONTAL|wxALL, 5);
}

void wxMainFrame::OnButtonClick(wxCommandEvent& event)
{
   // pour ne pas envoyer toujours la même chaine de caractères pour le test
   // on prend parmis 6 chaines différentes
   static int index = 0;
   wxString str;
   switch (index)
   {
      case 0 : str = "-r--r--r--   1 guilhem  lavaux      12738 Jan 16 20:17 cmndata.cpp";
         break;
      case 1  : str = "-r--r--r--   1 guilhem  lavaux      10866 Jan 24 16:41 Config.cpp";
         break;
      case 2  : str = "-rw-rw-rw-   1 guilhem  lavaux      29967 Dec 21 19:17 cwlex_yy.c";
         break;
      case 3  : str = "-rw-rw-rw-   1 guilhem  lavaux      14342 Jan 22 19:51 Cwy_tab.c";
         break;
      case 4  : str = "-r--r--r--   1 guilhem  lavaux      13890 Jan 29 19:18 date.cpp";
         break;
      default : str = "-r--r--r--   1 guilhem  lavaux       3989 Feb  8 19:18 Datstrm.cpp";
   }

#if defined(__WXMSW__)
   static bool pass = true;   // Astuce pour MS Windows uniquement
   // Attention dans une wxFrame deux évènement EVT_BUTTON sont générés
   // Ce qui n'est pas le cas dans un wxDialog (voir remarque dans source wxWidgets)
   if (pass)
   {
#endif
      AddElement(str);
     
      index++; // Incrémentation de l'index des chaines pour le test
      if (index > 5) index = 0;  // Remise à zéro pour bouclage
     
#if defined(__WXMSW__)
   }
   pass = !pass;
#endif
  
   event.Skip();
}

void wxMainFrame::AddElement(const wxString& element)
{
   long index = TheListCtrl->GetItemCount();
   TheListCtrl->InsertItem(index, element.Mid(55));      // Name
   TheListCtrl->SetItem(index, 1, element.Mid(11, 3));  // Type
   TheListCtrl->SetItem(index, 2, element.Mid(31, 10));  // Size
   TheListCtrl->SetItem(index, 3, element.Mid(42, 6));  // Date
   TheListCtrl->SetItem(index, 4, element.Mid(49, 5));   // Time
   TheListCtrl->SetItem(index, 5, element.Mid(0, 10));    // Right
}

[FIN FICHIER mainframe.cpp]

Regardes bien la fonction wxMainFrame::AddElement c'est elle qui fait la découpe de la chaine passée en argument

Cordialement

FredCL

mardi 30 août 2005 à 20:37:19 | Re : wxListCtrl --> pb avec majuscule en premier caractere (trés bizzarre)

satellite34

Bonsoir,

Je viens d' essayer avec la méthode mid et j' arrive a un résultat identique c'est à  dire qu' il y a toujours ce probleme de majuscule.
Sinon, j'ai réussi à passer mon projet sous 6.8 (j'avais oublié d'effacer les objets;hihi), mais rien n'y fait;

En + c'est clair que ca vient de mon programme car free me balance la meme chaine (sans buggues) avec ou sans majuscule en 1er caractere;

Ca commence à devenir vraiment mysthique comme probleme car j' ai découpé mes chaines de pleins de facons pendant tte la journée mais rien n' y fait.

AU SECOURS !!!!!

@+

Cherche projets à réaliser en communauté en wxWIDGETS............

mercredi 31 août 2005 à 08:56:15 | Re : wxListCtrl --> pb avec majuscule en premier caractere (trés bizzarre)

fredcl

Bonjour,

vérifie si les pointeurs que tu utilise sont bien alloué correctement. Que tu n'écraserait pas un espace mémoire en manipulant une mauvaise adresse.
As-tu essayer ton programme en mode DEBUG avec GDB? Je sais que l'interface de Dev-Cpp pour GDB n'est pas terrible, mais faut essayer ça peut aider!

Cordialement

FredCL
samedi 3 septembre 2005 à 15:42:05 | Re : wxListCtrl --> pb avec majuscule en premier caractere (trés bizzarre)

satellite34

bonjour,


erf, la ca va un peu trop loin pour moi, on utilise GDB de quelle maniere pour faire ce que tu dis???

Sinon, bah, je pense avoir essayé ttes les facons de découper cette satannée chaine;
Si t' a un tit moment, pour regarder ma source http://satellitesound.free.fr/Clientftp.rar

Voila, sinon, vraiment j' aimerai qu' on  m' explique le pkoi du comment car je ne comprends vraiment pas la cause de ce pb;

event.Merci();
@+;
ROOT_DIEU Alias satellite34



Cette discussion est classée dans : format, left, commandes, insertcolumn, distantsite


Répondre à ce message

Sujets en rapport avec ce message

wxFTP --> lister le répertoire distant dans les collonnes d' un wxListCtrl ....... [ par satellite34 ] Bonjour,Je développe actuellement un petit client FTP (pour mes études).Donc, mon probléme c'est que j' arrive bien a lister le répertoire du site dis Manipuler une chaine de caractere wxString .................. [ par satellite34 ] Bonjour,Je développe une application comprenant un wxListCtrl qui est composé de 6 colonnes : nom, type, taille, date, heure et permissions.Vous l' au !!! Petit sondage !!! [ par yoyo269 ] Alors voilà. Je souhaite vous sonder (en tout bien tout honneur bien sûr) sur une source à déposer ou non. Il y a qq temps j'ai programmé un petit pro Couper des fichiers [ par Pinky84 ] Lorsque que je coupe un fichier dans explorer et le colle dans mon app, la copie de fait se fait parfaitement sauf qu'il me reste a dire a l'explorer Probleme Exception win32 non gérée [ par sylvainsmias ] Salut à tous, j'ai problème qui date de 2 ans je crois, voilà je vous en donne le diag: Le code tout d'abord:         // Changement de référence ??? string-->Comment y caller un " et un % [ par satellite34 ] Bonjour,J' ai un petit souci : mon programme doit envoyer des commandes dos simples du type del , deltree, mkdir etc....;J' envoi ces commandes par l' Générer fichier XML avec gcc [ par kox007 ] Bonjour, Je travaille sur un projet dont l'objectif est de parser un fichier texte dont le format est propriétaire et de créer en sortie un fichier XM Format Toolbar [ par Toutoun13 ] Bonjour, Je souhaiterais inclure dans mon appli une "Format Toolbar", qui me permet de selectionner une police, sa taille, gras ...etc Ou puis-je trou Format 3D [ par SAKingdom ] Je voudrais savoir tous les formats (ou ceux que vous connaissez) de model 3D que OpenGL peut prendre (le format OBJ  par example (je connais pas le v Musique format XM [ par frayst ] Bonjour,J'aimerais faire part de mon application une petit musique au format XM.J'ai donc utilise l'api "Playsound", celui ci peut lire que les musiqu


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,499 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales