C# - Compact Framework lister fichiers

Signaler
Messages postés
126
Date d'inscription
jeudi 16 janvier 2003
Statut
Membre
Dernière intervention
9 novembre 2009
-
Messages postés
126
Date d'inscription
jeudi 16 janvier 2003
Statut
Membre
Dernière intervention
9 novembre 2009
-
Bonjour à tous!

Encore une question concernant Windows Mobile...

J'ai fait une petite application contenant une listbox dans laquelle j'affiche les fichiers (et dossiers) que contient le sous-dossier "test" où est installée mon application.

Le programme marche très bien sous l'émulateur Win Mobile 6.1 Pro - CF3.5 et me liste mes fichiers mais pas sur mon PPC (HTC TyTN2 WinMobile 6.1 Pro - CF 3.5).

Y a-t-il une erreur dans mon code?

using

System;

using

System.Diagnostics;
using

System.IO.Compression;
using

System.Runtime.InteropServices;
using

System.Linq;
using

System.Collections.Generic;
using

System.ComponentModel;
using

System.Data;
using

System.Drawing;
using

System.Text;
using

System.Windows.Forms;
namespace

testlistfolder{

public
partial
class
FrmMain :
Form{

public
string strCurrentDir = System.IO.
Path.GetDirectoryName(System.Reflection.
Assembly.GetExecutingAssembly().GetName().CodeBase);

public FrmMain(){

InitializeComponent();

lsSkinList.Items.Clear();

strCurrentDir = strCurrentDir +

"\\test\";AllFilesInDirectory(strCurrentDir);

}

private
void btnLoadSkins_Click(
object sender,
EventArgs e){

try{

// Since the FindString loops infinitely, determine if we found first item again and exit.

if (lsSkinList.SelectedItem.ToString() ==
"\\.."){
strCurrentDir "";strCurrentDir System.IO.

Path.GetDirectoryName(System.Reflection.
Assembly.GetExecutingAssembly().GetName().CodeBase);AllFilesInDirectory(strCurrentDir);

}

else{

try{

MessageBox.Show(lsSkinList.GetItemText(lsSkinList.SelectedItem));

}catch(
Exception ex)

{

//handle any errors that occurred

MessageBox.Show("ERROR: no file selected. " + ex.Message);strCurrentDir "";strCurrentDir System.IO.

Path.GetDirectoryName(System.Reflection.
Assembly.GetExecutingAssembly().GetName().CodeBase);AllFilesInDirectory(strCurrentDir);

}

}

}

catch (
Exception ex){

//handle any errors that occurred

MessageBox.Show(ex.Message);}

}

private
void lsSkinList_SelectedIndexChanged(
object sender,
EventArgs e){

}

public
void AllFilesInDirectory(
string dir){

//always use a try...catch to deal

//with any exceptions that may occur

try{

//first make sure the directory exists

//if it doesnt and we try to delete the

//files an exception is thrown

if (!System.IO.
Directory.Exists(dir)){

//error

MessageBox.Show(
"Folder " + dir +
" cannot be found! Please retry your request");}

else{

// add root folder

// lsSkinList.Items.Add("\\..");lsSkinList.Items.Clear();

//retrieve all the files and put them into a string array

string[] files = System.IO.
Directory.GetFiles(dir);

string[] folders = System.IO.
Directory.GetDirectories(dir);

string str;lsSkinList.BeginUpdate();

//now loop through all the folders

foreach (
string folder
in folders){

foreach (
string file
in files){

// Replace string str = file;

str = str.Replace(strCurrentDir,

"");

// lsSkinList.Items.Add(folder);lsSkinList.Items.Add(str);

}

}

lsSkinList.EndUpdate();

//let the user know it was successful

// MessageBox.Show("All files added successfully!");}

}

catch (
Exception ex){

//handle any errors that occurred

MessageBox.Show(ex.Message);}

}

private
void btnRefresh_Click(
object sender,
EventArgs e){

try{
strCurrentDir "";strCurrentDir strCurrentDir +

"\\cab";AllFilesInDirectory(strCurrentDir);

}

catch (
Exception ex){

//handle any errors that occurred

MessageBox.Show(ex.Message);}

}

}

}

4 réponses

Messages postés
2375
Date d'inscription
jeudi 12 juillet 2001
Statut
Modérateur
Dernière intervention
15 décembre 2018
22
Bonjour,
Où se trouve ton appli sur un support amovible ? Est-tu sur du chemin du répertoire à rechercher ? Existe-t-il sur ton mobile ?
Une erreur est-elle levée ?

++
Messages postés
126
Date d'inscription
jeudi 16 janvier 2003
Statut
Membre
Dernière intervention
9 novembre 2009
2
Bonjour Wili.

Mon appli se trouve dans Program Files\nom_appli du mobile.

Ce qui m'étonne c'est que théoriquement le programme ne doit pas en tenir compte puisque j'utilise:
strCurrentDir = System.IO.Path.GetDirectoryName(System.Reflection.
Assembly.GetExecutingAssembly().GetName().CodeBase);

J'ai testé sur l'émulateur avec succès et j'ai vérifié sur mon mobile que la config soit identique (ce qui est le cas). Mon but est justement de pouvoir faire tourner l'appli dans n'importe quel dossier et de lister le dossier lui-méme et ses sous-dossiers...

Une idée?

Non, il n'y a pas d'erreur malgré le try-catch...
Messages postés
630
Date d'inscription
samedi 15 février 2003
Statut
Modérateur
Dernière intervention
9 octobre 2011
1
Oui mais dans Main ya ça
strCurrentDir = strCurrentDir +"\\test\"
;

Si ce répertoire n'existe pas il y a une erreur
Le savoir n'est que le filtre de l'experience
Messages postés
126
Date d'inscription
jeudi 16 janvier 2003
Statut
Membre
Dernière intervention
9 novembre 2009
2
Oui mais dans Main ya ça
strCurrentDir = strCurrentDir +"\\test\"
;

Si ce répertoire n'existe pas il y a une erreur

Ben oui, si je ne m'abuse strCurrentDir me retourne le chemin de l'application et tout ce que je fais c'est de lui dire de chercher dans le dossier "test" qui est contenu dans le même dossier.

Et comme je l'ai dit, je pars du principe que j'ai créé le dossier, c'est à dire qu'effectivement je le crée manuellement AVANT s'il n'existe pas..