2010-09-23 8 views
1

J'ai été chargé de coder une petite application dans C# qui recherche dans un répertoire un type de fichier donné. Je suis en train de tester avec des fichiers .txt, mais l'application est destinée aux fichiers .epl pour les imprimantes Zebra.Problème de tableau de chaînes lorsque getfile() ne renvoie aucune correspondance

Je suis en train d'écrire de telle sorte que:

aO Si .epl fichier est trouvé, envoyer à l'imprimante, puis supprimer le fichier .epl attendre quelques secondes. Rechercher à nouveau le répertoire pour le fichier .epl, envoyer à l'imprimante, supprimer.

Si le fichier .epl est introuvable, attendez quelques secondes, répétez jusqu'à ce que le fichier .epl soit trouvé. Répéter a)

Le problème survient lorsque Directory.GetFiles (@ s1, "* .txt") ne trouve aucun fichier .txt et essaie de s'exécuter avec le reste du programme.

Je reçois: System.IndexOutOfRangeException: l'index était en dehors des limites du tableau.

Je ne sais pas quoi faire, je crois que c'est à faire avec des exceptions nulles? Mon code n'est pas complet car ce problème m'a bloqué; Je suis aussi novice et ce n'est donc pas le code le plus propre.

Code comme suit: http://pastebin.com/BHNAtTsk

Répondre

2

Vous utilisez sans discrimination filePaths[0] même si le tableau peut être vide. Ce n'est pas vraiment du tout avec des valeurs nulles. GetFiles() retourne toujours un tableau, mais ce sera un tableau vide si aucun fichier correspondant n'est trouvé.

Je crois que vous devriez simplement changer votre condition:

if (filePaths.Length > 0) 
+0

solution simple, a travaillé sans aucun problème. Merci! J'ai besoin de mon café du matin: p – Nemekh

0

Jetez un oeil à ce code:

string[] filePaths = Directory.GetFiles(@s1, "*.txt"); 
if ((filePaths[0]).Length > 1) ..... 

De la documentation:

http://msdn.microsoft.com/en-us/library/07wt70x2.aspx

S'il n'y a pas de fichier s, cette méthode retourne un tableau vide.

Alors que le contrôle approprié est la place:

if (filePaths.Length > 0) 
Questions connexes