Manipuler une chaine de caractere wxString ..................

Résolu
Signaler
Messages postés
688
Date d'inscription
mercredi 6 avril 2005
Statut
Membre
Dernière intervention
2 juin 2006
-
Messages postés
688
Date d'inscription
mercredi 6 avril 2005
Statut
Membre
Dernière intervention
2 juin 2006
-
Bonjour,

Je développe une application comprenant un wxListCtrl qui est composé de 6 colonnes : nom, type, taille, date, heure et permissions.Vous l' aurai compris il s'agit d' une chaine de caractere représentant un fichier.

Par exemple : -rw-r--r-- 1 web site 864 Aug 11 14:20 formulaire.htm
Je récupere cette chaine et je l' ecrit dans mon wxListCtrl avec :

wxArrayString dirs;
if(!ftp->GetDirList(dirs, ""))
{
Commandes->AppendText("impossible de récuperer la liste\n");
return;
}
wxArrayString files;
if(!ftp->GetFilesList(files,""))
{
Commandes->AppendText("impossible de récuperer la liste\n");
return;
}
//aidé par fredcl : http://www.cppfrance.com/forum.v2.aspx?ID=530582
size_t numFiles = dirs.GetCount();

DistantSite->DeleteAllItems();
for (size_t i =0; i<numFiles; i++)
{
long m_count = DistantSite->GetItemCount();
DistantSite->InsertItem(m_count, 0);

//DistantSite->SetItem(m_count, 5, files.Item(i));
DistantSite->SetItem(m_count, 0, dirs.Item(i));
}

Donc, mon souhait serai de récuperer dans des variables , que -rw-r--r-- ,que 1 web site, que 864 etc......

Mais voila, aucune fonction ne permet de recuperer par exemple les permissions et puis j' ai essayé avec le calcul de la taille de fichier mais ca rend le listage super lent vu qu' il calcule dans la boucle for;Donc , vu qu' il y a toutes les infos dans une seule chaine de caractere j' aimerai n' utiliser que celle ci et la manipuler.

j' ai regardé dans la librairie standart les fonctions qui manipule des chaines de caracteres mais je n' ai pas trouvé ce qu' il me fallait ou alors j' y suis passé dessus sans me rendre compte, ou alors ca fait partie de ce que je capte pas encore(ce qui est fort possible) ;lol.

Je me rends un peu fou avec ce probleme....Merci pour votre aide ;-)


2+Sat = Dieu ;
Recherche entreprise développement à Montpellier pour BTS Informatique de Gestion en alternance............

7 réponses

Messages postés
688
Date d'inscription
mercredi 6 avril 2005
Statut
Membre
Dernière intervention
2 juin 2006
1
Bon, ben désolé pour le dérangement mais je viens d'arriver a mes fins avec :

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, 15));
DistantSite->SetItem(m_count, 2, dirs.Item(i).AfterFirst(' ').substr(16, 6));
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));
}


A+

Recherche entreprise développement à Montpellier pour BTS Informatique de Gestion en alternance............
Messages postés
371
Date d'inscription
dimanche 4 janvier 2004
Statut
Membre
Dernière intervention
23 septembre 2009

Tu veux décomposer la réponse d'un serveur FTP à la commande LIST (ou autre) ?...

Cordialement,
Xterminhate.
Messages postés
547
Date d'inscription
mercredi 8 janvier 2003
Statut
Membre
Dernière intervention
7 octobre 2007
1
Tu as largement le choix de fonctions pour manipuler des wxString



Left, Right, Mid, Find, BeforeFisrt, BeforeLast, AfterFisrt, AfterLast



Le tout est de bien savoir ce qu'il faut faire.



A+



FredCL
Messages postés
688
Date d'inscription
mercredi 6 avril 2005
Statut
Membre
Dernière intervention
2 juin 2006
1
voila, xterminate c'est exactement ca mais fredcl a donné la réponse qu' il mefaut, en effet j' avais deja vu ces AfterFirst, AfterLast et tutiquanti mais je ne savais pos trop ou les utiliser marci a vous deux , je vais essayer....


De toute facon, ca fait partie de wxWIG+DGETS ces mots clés donc je vais me référer a la doc.

marci a vous deux , je vais essayer....


2+Sat = Dieu ;
Recherche entreprise développement à Montpellier pour BTS Informatique de Gestion en alternance............
Messages postés
688
Date d'inscription
mercredi 6 avril 2005
Statut
Membre
Dernière intervention
2 juin 2006
1
Re,
j'arrive donc maintenant a récuperer des parties de ma chaine (cool), mais je bloque depuis quelques jours sur un truk;

je m'explique :

-rw-r--r-- 1 web site 864 Aug 11 14:20 formulaire.htm
j' ai cette chaine et je veux recuperer 1 web site, j' arrive a "isoler" -rw-r--r-- et formulaire.htm mais pas un nombre défini de caracteres a partir de tel caractere;

mon code :

//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(' '));
wxString msg1;
msg1.Printf(wxString::Format(dirs.Item(i).AfterFirst(' ')));
DistantSite->SetItem(m_count, 1, msg1.Alloc(size_t = 10)); //ca pose probleme
DistantSite->SetItem(m_count, 5, dirs.Item(i).Left(10));
}
//fin de l' aide
result();

avec ca j' arrive bien a recuperer les caracteres aprés le premier espace et dans la collonne 1 mais pas a limiter cette "sous-chaine" a 10 caracteres;
J' ai essayé avec un tablo dynamique mais ca ne marche pas , ou je m' y prends mal;

merci pour votre aide

A+

Recherche entreprise développement à Montpellier pour BTS Informatique de Gestion en alternance............
Messages postés
547
Date d'inscription
mercredi 8 janvier 2003
Statut
Membre
Dernière intervention
7 octobre 2007
1
Bonjour,

As-tu vérifié que le format des chaines fourni par le serveur FTP est le même sur d'autres système (Windows par exemple)?

Si ce n'était pas le cas il faudrait modifier ta fonction afin qu'elle détermine quel format est fourni afin d'employer le découpage adéquate.

A+

FredCL
Messages postés
688
Date d'inscription
mercredi 6 avril 2005
Statut
Membre
Dernière intervention
2 juin 2006
1
Oui, en effet, il ne retourne pas la meme chaine sous unix que sous windows.
Quelle condition utiliser?
un truk du styler:

if(unix)
ma_chaine
else
ma nu_chaine_pour_windows

Bon, ben je vais me mettre a ca alors
merci.

A+

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