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

 Delphi Discussion :

Problème de performance avec remplissages d'une StringGrid ?


Sujet :

Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Août 2007
    Messages
    159
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 159
    Par défaut Problème de performance avec remplissages d'une StringGrid ?
    La stringgird ce remplie grâce a une demande de produit
    La demande et une suit de chiffres comme un code barre
    Chaque code barre nous donne " nom + type + nombre de type + code "
    Avec le nombre de type on a le nombre de Line de la stringgird + la line fixe des label

    La cellule 1 affiche le nom la 2eme affiche le type la 4eme affiche le code grâce a une base de donné externe " pour chaque Line "

    Moi je doit remplir les cellules 5 et 6 de chaque Line ,5 va contenir le nom du fournisseur et la 6 la mark du produit "un produit a plusieurs mark " le fournisseur peut fournir le même produit a différent mark
    Le nombre de fournisseur et fixe y a 5 fournisseurs
    Jusqu’à ce point tout marche très bien pour moi
    Le problème c avec les mark
    y a beaucoup de teste qui réduit les performance de l'application on plus je n’ai pas droit d’utilisé une autre base de donné

    Je me trouve avec le code suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    for i:=0 to MAX_CA_SYSTEMS-1 do
     if copy(MainForm.CA_SYSTEMS.Cells[3,i+1],1,6)='code du produit' then
     begin
     MainForm.CA_SYSTEMS.Cells[4,i+1]:='fourniseur X';
    if MainForm.CA_SYSTEMS.Cells[0,i+1]='nom de produit'then MainForm.CA_SYSTEMS.Cells[5,i+1]:='mark1/mark2...ets' else
    if MainForm.CA_SYSTEMS.Cells[0,i+1]='nom de produit'then MainForm.CA_SYSTEMS.Cells[5,i+1]:='fourniseur X' else
    .
    .
    .
    .
    .
    .
    .
    je me trouve avec une vingtaine de Line comme ça
    ça marche mais coté performance c'est nulle
    y a t il pas un autre moyenne que le if ... else a chaque fois ??

    merci d'avance je suis sur delphi 7

  2. #2
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 236
    Par défaut
    Une Requête + Utiliser une DbGrid serait quand même beaucoup plus simple
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  3. #3
    Membre confirmé
    Inscrit en
    Août 2007
    Messages
    159
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 159
    Par défaut
    Citation Envoyé par Rayek Voir le message
    Une Requête + Utiliser une DbGrid serait quand même beaucoup plus simple
    je croie que tu ne ma pas bien compris l'ami il ne s’agit pas de base de donné

  4. #4
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 041
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 041
    Par défaut
    Utilise la propriété Objects[] pour stocker les informations utiles lors du remplissage de la TStringGrid

    Pour éviter surtout des comparer des chaines mais plutôt des enums ou constantes entièrement typant la donnée, cela peut même se faire par polymorphisme avec TWolfObjectForStringGrid comme ancêtre, ensuite, tu as des TWolfCodeProduitForStringGrid, chaque colonne peut-être pré-typé pour gagner du temps dans les tests

    Ces Objects[] pouvant contenir des liens entre-eux

    Sinon if copy(...,1,6)='code du produit' then sera toujours faux une chaine de 6 caractères ne peut pas être égala à ta constante

    Pour des coordonnées des Cells[], utilise aussi des constantes genre COL_PRODUIT = 3 cela facilitera la maintenance !
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  5. #5
    Membre confirmé
    Inscrit en
    Août 2007
    Messages
    159
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 159
    Par défaut
    Citation Envoyé par ShaiLeTroll Voir le message
    Utilise la propriété Objects[] pour stocker les informations utiles lors du remplissage de la TStringGrid

    Pour éviter surtout des comparer des chaines mais plutôt des enums ou constantes entièrement typant la donnée, cela peut même se faire par polymorphisme avec TWolfObjectForStringGrid comme ancêtre, ensuite, tu as des TWolfCodeProduitForStringGrid, chaque colonne peut-être pré-typé pour gagner du temps dans les tests

    Ces Objects[] pouvant contenir des liens entre-eux

    Sinon if copy(...,1,6)='code du produit' then sera toujours faux une chaine de 6 caractères ne peut pas être égala à ta constante

    Pour des coordonnées des Cells[], utilise aussi des constantes genre COL_PRODUIT = 3 cela facilitera la maintenance !
    quand j'ecrie if copy(...,1,6)='code du produit'j'ai mit 'code produit' juste pour dire que c'est le code c'est un HEX
    comme pour fournisseur X nom produit mark
    c'est juste un exemple dans le vrais code il y a le vrais nom du fournisseur le vrais nom de la mark le code produit c'est un hex les 6 premier donne toujour le code fournisseur

  6. #6
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 041
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 041
    Par défaut
    Du Hexa dans une TStringGrid ?
    Tu caches ces colonnes à l'utilisateur ? sinon le pauvre, je le plains !
    tu compare Hexa comme une chaine ?
    CA_SYSTEMS est-elle une TStringGrid cachée qui contient les données pour une autre TStringGrid affichée ?
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

Discussions similaires

  1. Problème de performance avec une variable
    Par Proxy dans le forum PL/SQL
    Réponses: 9
    Dernier message: 26/11/2012, 14h29
  2. Problème avec remplissage d'une matrice
    Par zimamouche1 dans le forum Général Java
    Réponses: 7
    Dernier message: 26/06/2012, 14h22
  3. Problème de performance avec une regexp
    Par NicoV dans le forum Collection et Stream
    Réponses: 10
    Dernier message: 21/02/2008, 18h46
  4. Problème de performance avec LEFT OUTER JOIN
    Par jgfa9 dans le forum Requêtes
    Réponses: 6
    Dernier message: 17/07/2005, 13h17
  5. [C#] Probléme de performance avec IsDbNull
    Par jab dans le forum Windows Forms
    Réponses: 8
    Dernier message: 04/04/2005, 11h39

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