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

Résolu
cs_satellite34 Messages postés 688 Date d'inscription mercredi 6 avril 2005 Statut Membre Dernière intervention 2 juin 2006 - 13 août 2005 à 03:05
cs_satellite34 Messages postés 688 Date d'inscription mercredi 6 avril 2005 Statut Membre Dernière intervention 2 juin 2006 - 24 août 2005 à 15:59
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

cs_satellite34 Messages postés 688 Date d'inscription mercredi 6 avril 2005 Statut Membre Dernière intervention 2 juin 2006 1
23 août 2005 à 15:29
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............
3
xterminhate Messages postés 371 Date d'inscription dimanche 4 janvier 2004 Statut Membre Dernière intervention 23 septembre 2009
13 août 2005 à 09:33
Tu veux décomposer la réponse d'un serveur FTP à la commande LIST (ou autre) ?...

Cordialement,
Xterminhate.
0
fredcl Messages postés 547 Date d'inscription mercredi 8 janvier 2003 Statut Membre Dernière intervention 7 octobre 2007 1
13 août 2005 à 15:22
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
0
cs_satellite34 Messages postés 688 Date d'inscription mercredi 6 avril 2005 Statut Membre Dernière intervention 2 juin 2006 1
13 août 2005 à 16:06
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............
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_satellite34 Messages postés 688 Date d'inscription mercredi 6 avril 2005 Statut Membre Dernière intervention 2 juin 2006 1
23 août 2005 à 14:47
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............
0
fredcl Messages postés 547 Date d'inscription mercredi 8 janvier 2003 Statut Membre Dernière intervention 7 octobre 2007 1
24 août 2005 à 09:11
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
0
cs_satellite34 Messages postés 688 Date d'inscription mercredi 6 avril 2005 Statut Membre Dernière intervention 2 juin 2006 1
24 août 2005 à 15:59
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............
0
Rejoignez-nous