IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

Parcours de fichier avec le Compact Framework (VB.NET)


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Février 2005
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 40
    Par défaut Parcours de fichier avec le Compact Framework (VB.NET)
    Bonjour à tous,

    Je suis actuellement sur un développement mobile sur Windows CE 6 en VB.NET avec le Compact Framework 2.0. J'aimerais trouver une solution pour rechercher la présence ou non d'une référence dans un fichier local de façon instantané.

    Je m'explique :

    J'ai un fichier sur un serveur distant du type :

    Référence1;Libellé1
    Référence2;Libellé2
    Référence3;Libellé3
    Référence4;Libellé4

    J'aimerais que quand l'utilisateur saisisse une référence puis valide, le programme vérifie si la référence se trouve ou non dans ce fichier.

    Le problème est que ce fichier est très très volumineux (actuellement 630 000 lignes ).

    J'ai essayé plusieurs solutions avec des temps de réponse variés mais toujours trop long :

    Solution 1 : Charger le fichier au démarrage dans une ArrayList et rechercher dans celle-ci => 4m34s pour le chargement et 19sec pour la recherche avec en plus la taille de la mémoire virtuelle allouée à l'application qui explose (OutOfMemoryException)

    Solution 2 : Réécrire le fichier local depuis le fichier distant au démarrage et recherche LIGNE par LIGNE à la validation => 2m30s pour réécrire le fichier et 52sec pour la recherche

    Solution 3 : Créer un fichier vide sur le PDA avec simplement en nom la référence puis vérification de la présence du fichier à la recherche => 13000 lignes en 37min mais une recherche en 0s, instantanée

    Je voulais donc savoir si quelqu'un aurait une idée pour aboutir à des temps de réponse correct s'il vous plait ?
    Serait-il possible de commencer la lecture de mon fichier à partir d'une certaine ligne ?

    Merci d'avance pour avoir lu mon "pavé"
    Je compte sur vous

    Spfo

  2. #2
    Membre éprouvé
    Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Juillet 2002
    Messages
    121
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2002
    Messages : 121
    Par défaut
    Bonjour,

    Et tu ne peux pas du tout utiliser une base embarqué SQLite ?
    Ca te permet d'avoir toutes les facilitées du langage SQL ainsi que tout les
    mécanismes de d'indexs et de cléfs sans te prendre la tête avec ca.

    Si tu veux garder ton fichier, je pense que tu vas devoir gérer un système d'index que tu devras garder a jour lors de tes manipulations sur le fichier.

    Ce qui a mon sens reviens a redévelopper ce qui existe deja et qui fonctionne plutot bien avec SQLite.

  3. #3
    Membre averti
    Inscrit en
    Février 2005
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 40
    Par défaut
    Cette option de recherche étant une infime partie de l'application qui elle travaille directement sur des bases distantes par WebService, nous ne préfèrerions pas rajouter de base embarquée.

    Le seul problème, c'est que lors de cette recherche de référence, le WIFI est indisponible pour des raisons de structures donc les WebServices ne peuvent être envisagés.

    J'ai pensé à cette solution d'index des lignes pour le fichier par exemple, mais comment lire le fichier à partir de cette index et non pas depuis la première ligne ?

    Merci pour ta réponse en tout cas

  4. #4
    Membre éprouvé
    Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Juillet 2002
    Messages
    121
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2002
    Messages : 121
    Par défaut
    Tu peux utiliser un FileStream avec la methode Seek qui te permet de te deplacer a la position passée en paramètre dans ton flux pour faire des accès aléatoire dessus.


    http://msdn.microsoft.com/fr-fr/libr...ilestream.aspx

  5. #5
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Février 2003
    Messages
    2 194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2003
    Messages : 2 194
    Par défaut
    Citation Envoyé par Lharuun Voir le message
    Tu peux utiliser un FileStream avec la methode Seek qui te permet de te deplacer a la position passée en paramètre dans ton flux pour faire des accès aléatoire dessus.


    http://msdn.microsoft.com/fr-fr/libr...ilestream.aspx
    Euh pour utiliser cette méthode il faut que ton fichier soit correctement formaté
    Même taille pour chaque ligne (donc compléter les libelles par des espaces) et pas de trou dans les références
    Apres tu fais un
    Seek(IdRechercher*TailleLigne)

  6. #6
    Membre averti
    Inscrit en
    Février 2005
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 40
    Par défaut
    Citation Envoyé par Lharuun Voir le message
    Tu peux utiliser un FileStream avec la methode Seek qui te permet de te deplacer a la position passée en paramètre dans ton flux pour faire des accès aléatoire dessus.


    http://msdn.microsoft.com/fr-fr/libr...ilestream.aspx

    Merci beaucoup Lharuun.

    Je vais mettre cette solution de côté pour la tester dès que possible (je suis passé sur un autre projet).
    mais je vous informe dès que j'ai testé pour voir si cela fonctionne.

    Encore merci

  7. #7
    Membre éprouvé
    Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Juillet 2002
    Messages
    121
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2002
    Messages : 121
    Par défaut
    Et bien courage et bonne continuation

Discussions similaires

  1. [WB14]Parcours de fichier avec condition et tri
    Par Nic550 dans le forum WebDev
    Réponses: 12
    Dernier message: 09/09/2009, 12h49
  2. [JDOM]Help parcour de fichier avec ambiguité
    Par Nabil_z dans le forum Documents
    Réponses: 0
    Dernier message: 28/04/2009, 18h16
  3. Réponses: 2
    Dernier message: 04/04/2008, 12h15
  4. [C#] Démarrer avec le Compact framework
    Par Sucden dans le forum Windows Mobile
    Réponses: 4
    Dernier message: 08/10/2007, 14h25
  5. [C#] Démarrer avec le Compact framework
    Par Sucden dans le forum Général Dotnet
    Réponses: 1
    Dernier message: 07/10/2007, 20h16

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo