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

Langage Delphi Discussion :

[form] Create Auto et manuel ..


Sujet :

Langage Delphi

  1. #1
    Membre confirmé

    Inscrit en
    Novembre 2002
    Messages
    748
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 748
    Points : 500
    Points
    500
    Par défaut [form] Create Auto et manuel ..
    Bonjours a tous , je suis à la recherche d'un bugg qui arrive tout les 15 du mois , donc pas de piste reelle a suivre . Tous ce que je sais c'est que le message est un "OutOfMemory".

    Mon projet est composé d'un executable ,de dlls ...

    En fait je viens de me rendre compte que dans les "options" de mon projet , onglet " Fiches".

    Plusieurs de mes fiches que je crée en dynamique au besoin de leur utilisation ( qui devrai se trouver dans la liste "Fiches disponibles" )
    sont aussi creer automatiquement au lancemeent de mon application ( elles se trouve dans la liste "fiches crées automatiquement) " .

    quelle incidence cela peut il avoir ? recreer des fiches qui sont deja cree automatiquement au lancement du projet n'est pas propre certe , mais cela peut il etre source de bugg ?

    ne sachant pas ou chercher pour trouver ce bugg , je regarde partout !

    merci .

  2. #2
    Membre confirmé
    Avatar de Manopower
    Inscrit en
    Décembre 2003
    Messages
    516
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 516
    Points : 453
    Points
    453
    Par défaut
    Bonjour,
    Quelle version de Delphi as tu ? Ce message apparaissait souvent chez moi avec Delphi 4. Fermer Delphi et le relancer réglait toujours le soucis.
    Sinon il est toujours mieux de n'avoir qu'une seule fiche créée automatiquement et le reste créé dynamiquement et supprimé quand on en a plus besoin, tout ça pour économiser la mémoire.

    Bon courage !

  3. #3
    Membre confirmé

    Inscrit en
    Novembre 2002
    Messages
    748
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 748
    Points : 500
    Points
    500
    Par défaut
    En effet apres correction , je n'ai conserver que les fiches qui sont souvent solicités ( 3 ou 4 ) toutes les autres sont crées et detruites en fin d'utilisation .
    je suis sous Xp et delphi7 , en effet quand je redemarre le probleme est passé , mais reviens aleatoirement , et je n'arrive donc pas a creer une demarche de recherche de mon defaut.
    Quand je plante , souvent c'est en phase de creation d'une fenetre qui ne "dessine" pas complement ! et defois j'ai aussi un message " ne peut "inserer la ligne dans le richedit" ou " ne peut dessiner les schrollbar"

    Je cherche , mais je sais pas ou !!

  4. #4
    Rédacteur
    Avatar de Pedro
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    5 411
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 5 411
    Points : 8 078
    Points
    8 078
    Par défaut
    Mmmmh tu n'as pas installé des composants "exotiques" que tu utilises sur la Form qui pose problème?

  5. #5
    Membre confirmé

    Inscrit en
    Novembre 2002
    Messages
    748
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 748
    Points : 500
    Points
    500
    Par défaut
    Le seul qui ne soit pas natif de delphi c'est "synedit" et un tit truc de calcul qui est rarement solicité !

    donc non !

    bye

  6. #6
    Membre expert
    Avatar de LadyWasky
    Femme Profil pro
    Inscrit en
    Juin 2004
    Messages
    2 932
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 53
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 932
    Points : 3 565
    Points
    3 565
    Par défaut
    C'est peut être le " tit truc de calcul" sollicité tout les 15 du mois qui génère un "out of memory", lui aussi tout les 15 du mois.

    Tu dois certainement avoir un problème de récursivité là-dedans.. ou ailleurs !

  7. #7
    Membre confirmé

    Inscrit en
    Novembre 2002
    Messages
    748
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 748
    Points : 500
    Points
    500
    Par défaut
    Non çà plante aussi le 10 du mois !! , et meme si " le tit truc de calcul " n'as pas ete crée !

    Je vais par exemple faire 50 fois la meme action ( par exemple ouvrir une form dans une Dll ) , çà marche bien bien , et de temps en temps je vais avoir mon OutOffMemory !

    je cherche toujours ! et aimerai planter plus souvent !

    bye et merci

  8. #8
    Membre expert
    Avatar de LadyWasky
    Femme Profil pro
    Inscrit en
    Juin 2004
    Messages
    2 932
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 53
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 932
    Points : 3 565
    Points
    3 565
    Par défaut
    Savais tu que si tu crées une fiche Delphi et que tu la détruit, tu perds 4Ko ? Ca vaut aussi quand tu fais Bitmap.release, puis bitmap.free au lieu de Bitmap.free en direct... (si, si !)

    C'est pas grand chose pris isolément, mais répété un certain nombre de fois, ça commence à faire...

  9. #9
    Membre expert
    Avatar de LadyWasky
    Femme Profil pro
    Inscrit en
    Juin 2004
    Messages
    2 932
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 53
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 932
    Points : 3 565
    Points
    3 565
    Par défaut
    ...Sinon, en passant, tu oublies peut-etre de detruire une fiche et tu recrée par dessus. par exemple si la fiche Form1 existe déjà et que par dessus tu fait :
    Form1:=TForm.Create;

    1) ta fiche précédente n'est pas détruite et reste en mémoire
    2) fai x fois ça ne vas plus du tout !!! --> Out Of Memory.

    essaies peut être avant tes creates de faire, pour que le programme s'assure de ne pas recrer une fiche par-dessus une fiche existante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    if Form1<>nil then
    begin
      Form1.free;
      Form1:=nil;
    end;
    Form1:=TForm.Create;

  10. #10
    Membre confirmé

    Inscrit en
    Novembre 2002
    Messages
    748
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 748
    Points : 500
    Points
    500
    Par défaut
    tu peux un peu developper ton dernier post...je ne saisie pas tous !

    Ma gestion d'ouverture et fermeture de toutes mes form est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
        ....
        Ftoto:=Tftoto.create(application);
        Try
            Ftoto.Showmodal;
            .....
        finally
            Ftoto.release;
            Ftoto:=Nil;
        end;
         ....
    Merci .

    bye

  11. #11
    Membre confirmé

    Inscrit en
    Novembre 2002
    Messages
    748
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 748
    Points : 500
    Points
    500
    Par défaut
    Oui en effet !! j'aurai pu tester l'existance ou pas de mes fiches avant de les creer.. je vais aussi corriger cela çà ne sera que plus propre de toutes maniere.
    merci

  12. #12
    Membre expert
    Avatar de LadyWasky
    Femme Profil pro
    Inscrit en
    Juin 2004
    Messages
    2 932
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 53
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 932
    Points : 3 565
    Points
    3 565
    Par défaut
    Citation Envoyé par petitcoucou31
    tu peux un peu developper ton dernier post...je ne saisie pas tous !

    Ma gestion d'ouverture et fermeture de toutes mes form est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
        ....
        Ftoto:=Tftoto.create(application);
        Try
            Ftoto.Showmodal;
            .....
        finally
            Ftoto.release;
            Ftoto:=Nil;
        end;
         ....
    Merci .

    bye
    Haha, essaies ça à la place :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
        ....
        if Assigned(Foto) then
        begin
          Ftoto.release;
          Ftoto:=Nil;
        end;
        Ftoto:=Tftoto.create(application);
        Try
            Ftoto.Showmodal;
            .....
        finally
            Ftoto.release;
            Ftoto:=Nil;
        end;
         ....

  13. #13
    Membre expert
    Avatar de LadyWasky
    Femme Profil pro
    Inscrit en
    Juin 2004
    Messages
    2 932
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 53
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 932
    Points : 3 565
    Points
    3 565
    Par défaut
    Citation Envoyé par waskol
    Savais tu que si tu crées une fiche Delphi et que tu la détruit, tu perds 4Ko ? Ca vaut aussi quand tu fais Bitmap.release, puis bitmap.free au lieu de Bitmap.free en direct... (si, si !)

    C'est pas grand chose pris isolément, mais répété un certain nombre de fois, ça commence à faire...
    J'explique :
    Ta fiche est une variable locale, donc tu as a ta disposition comme mémoire vive disponible pour cette fiche, la Taille de la Pile (qui est de $00100000 octets max par defaut sous delphi, ce qui fait 1Mo)

    1) Tu as 1 Mo de memoire vive pour la pile de ton application : c'est l'état initial
    2) tu crées une fiche de 50 Ko : tu as 1Mo-50Ko
    3) tu détruit la fiche (release, nil), tu perds non pas 50Ko, mais 46Ko !
    4) Etat final : tu as 1Mo-4Ko disponible


    Tu fais ça 256 fois et tu te retrouves avec 1Mo-(4Ko*256) = 0 octets !

  14. #14
    Membre confirmé

    Inscrit en
    Novembre 2002
    Messages
    748
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 748
    Points : 500
    Points
    500
    Par défaut
    Ah OUI !! çà pourrait expliquer des choses ...

    bon Certes je ne connais pas la taille de mes forms a l'execution ( y a t il un moyen de la connaitre ? )

    Ensuite j'ai des forms qui s'affichent comme des showmessage , pour indiquer a l'utilisateur les actions a suivres suivant un script etabli.
    Mais ces forms ont la taille de l'ecran pour pouvoir ecrire le plus gros possible ,et pouvoir lire ce qui est a l'ecran de loin .

    donc j'ai beaucoup de ces fenetre qui peuvent s'afficher en fonction des script ! et donc au final tomber sur le probleme que tu indiques ..

    Donc ma derniere question y a t il un moyen de detourner ce probleme de vidance memoire a ta connaissance ?

    merci!

  15. #15
    Membre expert
    Avatar de LadyWasky
    Femme Profil pro
    Inscrit en
    Juin 2004
    Messages
    2 932
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 53
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 932
    Points : 3 565
    Points
    3 565
    Par défaut
    Je n'en ai aucune idée !

Discussions similaires

  1. définir l'auto increment manuellement à un nombre donné
    Par cortex024 dans le forum Modélisation
    Réponses: 11
    Dernier message: 28/06/2007, 12h34
  2. définir l'auto increment manuellement à un nombre donné
    Par cortex024 dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 25/05/2007, 09h43
  3. Réponses: 7
    Dernier message: 02/03/2007, 09h37
  4. lors d'ouverture du form saisie auto du nom ?
    Par moxo01 dans le forum Access
    Réponses: 2
    Dernier message: 22/11/2006, 09h24
  5. [FORMS 6i] Auto refresh des données
    Par Nounoursonne dans le forum Forms
    Réponses: 4
    Dernier message: 21/11/2006, 14h50

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