Manipuler une chaine de caractere wxString .................. [Résolu]

cs_satellite34 688 Messages postés mercredi 6 avril 2005Date d'inscription 2 juin 2006 Dernière intervention - 13 août 2005 à 03:05 - Dernière réponse : cs_satellite34 688 Messages postés mercredi 6 avril 2005Date d'inscription 2 juin 2006 Dernière intervention
- 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............
Afficher la suite 

Votre réponse

7 réponses

Meilleure réponse
cs_satellite34 688 Messages postés mercredi 6 avril 2005Date d'inscription 2 juin 2006 Dernière intervention - 23 août 2005 à 15:29
3
Merci
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............

Merci cs_satellite34 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 94 internautes ce mois-ci

Commenter la réponse de cs_satellite34
xterminhate 371 Messages postés dimanche 4 janvier 2004Date d'inscription 23 septembre 2009 Dernière intervention - 13 août 2005 à 09:33
0
Merci
Tu veux décomposer la réponse d'un serveur FTP à la commande LIST (ou autre) ?...

Cordialement,
Xterminhate.
Commenter la réponse de xterminhate
fredcl 547 Messages postés mercredi 8 janvier 2003Date d'inscription 7 octobre 2007 Dernière intervention - 13 août 2005 à 15:22
0
Merci
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
Commenter la réponse de fredcl
cs_satellite34 688 Messages postés mercredi 6 avril 2005Date d'inscription 2 juin 2006 Dernière intervention - 13 août 2005 à 16:06
0
Merci
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............
Commenter la réponse de cs_satellite34
cs_satellite34 688 Messages postés mercredi 6 avril 2005Date d'inscription 2 juin 2006 Dernière intervention - 23 août 2005 à 14:47
0
Merci
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............
Commenter la réponse de cs_satellite34
fredcl 547 Messages postés mercredi 8 janvier 2003Date d'inscription 7 octobre 2007 Dernière intervention - 24 août 2005 à 09:11
0
Merci
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
Commenter la réponse de fredcl
cs_satellite34 688 Messages postés mercredi 6 avril 2005Date d'inscription 2 juin 2006 Dernière intervention - 24 août 2005 à 15:59
0
Merci
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............
Commenter la réponse de cs_satellite34

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.