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 :

OpenDialog provoque erreurs


Sujet :

Delphi

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2016
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2016
    Messages : 48
    Points : 32
    Points
    32
    Par défaut OpenDialog provoque erreurs
    Bonjour,

    J'ai un petit soucis étonnant. Je veux ouvrir un TOpenDialog pour sélectionner une image et la charger dans mon programme...

    Le problème c'est qu'une fois le TOpenDialog fermé, l'image se charge mais mon programme ne fonctionne plus correctement. Je n'arrive plus à charger d'autres images ou à lire/écrire dans un fichier. Je crois que je peux tout simplement plus interagir avec d'autres fichier.

    Tout fonctionne jusqu'à la fermeture du TOpenDialog SAUF si je ferme la TOpenDialog avec la croix et que je ne charge rien.

    Voilà mon bout de code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    procedure TFormConfigTache.ChoosePicture(Sender: TObject);
    var
      str     : string;
    begin
     
      //Ouvre directory
      if (Dialog_PictureFile.Execute)then
      begin
        P_Apercu.Picture.LoadFromFile(Dialog_PictureFile.FileName);
      end;
     
    end;
    Vous avez une idée ?

  2. #2
    Membre averti Avatar de Moez.B
    Homme Profil pro
    Développeur Delphi
    Inscrit en
    Mars 2006
    Messages
    219
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Tunisie

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

    Informations forums :
    Inscription : Mars 2006
    Messages : 219
    Points : 370
    Points
    370
    Par défaut
    Bonjour,
    il faut tester si le FileName est renseigné
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
      if (Dialog_PictureFile.FileName<>'') Then
        P_Apercu.Picture.LoadFromFile(Dialog_PictureFile.FileName);
    "L'homme supérieur est celui qui a une bienveillance égale pour tous, et qui est sans égoïsme et sans partialité." [Confucius]
    "Celui qui n'évolue pas disparaît." [Charles Darwin]
    “Without requirements or design, programming is the art of adding bugs to an empty text file.” [Louis Srygley]

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2016
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2016
    Messages : 48
    Points : 32
    Points
    32
    Par défaut
    C'est vrai que je ne le test pas mais ce n'est pas le soucis. Le FileName est bien renseigné puisqu'il charge l'image. Et j'ai vérifié en debug ^^

  4. #4
    Membre averti Avatar de Moez.B
    Homme Profil pro
    Développeur Delphi
    Inscrit en
    Mars 2006
    Messages
    219
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Tunisie

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

    Informations forums :
    Inscription : Mars 2006
    Messages : 219
    Points : 370
    Points
    370
    Par défaut
    Dialog_PictureFile est un composant posé sur la fiche TFormConfigTache ou bien créé quelque part en code ?
    "L'homme supérieur est celui qui a une bienveillance égale pour tous, et qui est sans égoïsme et sans partialité." [Confucius]
    "Celui qui n'évolue pas disparaît." [Charles Darwin]
    “Without requirements or design, programming is the art of adding bugs to an empty text file.” [Louis Srygley]

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2016
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2016
    Messages : 48
    Points : 32
    Points
    32
    Par défaut
    Posé sur la fiche. :/

  6. #6
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 030
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 030
    Points : 40 928
    Points
    40 928
    Billets dans le blog
    62
    Par défaut
    Bonjour,

    et si, déjà, on avait connaissance de la version de Delphi et de l'OS ?
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2016
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2016
    Messages : 48
    Points : 32
    Points
    32
    Par défaut
    Dac. Delphi 5 sur Windows 7 x64

  8. #8
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 030
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 030
    Points : 40 928
    Points
    40 928
    Billets dans le blog
    62
    Par défaut
    Re,

    c'est déjà mieux de le savoir, hélas je n'ai pas de D5 installé. Tout ce que je peux dire c'est que j'ai déjà fait ce genre de code (utilisation de opendialog pour charger une image) en D3 et que je n'ai jamais eu de problème (ni de remontée sur cette fonctionnalité, depuis 10 ans au moins )

    AMHA le problème vient d'ailleurs . Dans la procédure probablement , mais comme on a seulement un "bout de code", selon tes propres termes, on ne voit ni l'initialisation de Dialog_PictureFile , ni à quoi sert la variable str, je ne m'avancerai pas plus
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  9. #9
    Membre éprouvé
    Avatar de Cirec
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    467
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 467
    Points : 1 072
    Points
    1 072
    Par défaut
    Bonjour à tous,

    histoire d'avancer un peu je mettrais cette ligne en commentaire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    //P_Apercu.Picture.LoadFromFile(Dialog_PictureFile.FileName);
    ce qui permettrait de savoir si c'est le TImage ou le TOpenDialog qui pose problème

    @++ Cirec

  10. #10
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2016
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2016
    Messages : 48
    Points : 32
    Points
    32
    Par défaut
    C'est le TOpenDialog qui pose problème. Même si je ne charge pas d'image sauf si je clique sur la croix de la fenêtre...

    La variable "str" me sert à avoir le répertoire du fichier sélectionné mais comme je fais des tests elle n'est pas utilisé en ce moment. Le problème à l'air d'être entre l'ouverture du TOpenDialog et ça fermeture...

  11. #11
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 855
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Biologiste ; Progr(amateur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 855
    Points : 11 288
    Points
    11 288
    Billets dans le blog
    6
    Par défaut
    Je n'ai aucun problème (D5 Pro, Win 7 64 bits) avec ce code (composants tous sur la fiche principale) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    procedure TForm1.Button1Click(Sender: TObject);
    begin
      if OpenDialog1.Execute then
      begin
        Image1.Picture.LoadFromFile(OpenDialog1.FileName);
      end;
      if FileExists(OpenDialog1.FileName) then ShowMessage('existe');
    end;
    Sauf si format d'image non supporté... mais dans ce cas, c'est signalé par une exception.
    Delphi 5 Pro - Delphi 11.3 Alexandria Community Edition - CodeTyphon 6.90 sous Windows 10 ; CT 6.40 sous Ubuntu 18.04 (VM)
    . Ignorer la FAQ Delphi et les Cours et Tutoriels Delphi nuit gravement à notre code !

  12. #12
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2016
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2016
    Messages : 48
    Points : 32
    Points
    32
    Par défaut
    C'est surprenant... Moi par exemple j'ai cette fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ButtonNext.Glyph.LoadFromFile('images\icones\flecheDroite.bmp');
    que j'utilise dans ma Form qui s’exécute plusieurs fois mais dès que j'ouvre mon TOpenDialog et que je ferme cette fenêtre autrement qu'avec la croix rouge j'ai une classe d’exception EFOpenError sur cette ligne (ou les autres aussi).

    Pour remédier au problème je suis donc passé par les TBitMap et la fonction Assign() mais ducoup j'ai le reste qui fonctionne plus (lecture/ecriture dans les fichiers).

    Et le problème n'est pas que dans la Form où j'utilise mon TOpenDialog... il est dans tout mon programme !

  13. #13
    Membre chevronné

    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2002
    Messages
    1 288
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2002
    Messages : 1 288
    Points : 1 936
    Points
    1 936
    Par défaut
    Après l'appel à TOpenDialog, tu changes le répertoire courant de l'application (par défaut celui où est l'exécutable), donc tu vas chercher les images là où était positionné le TOpenDialog.

    Répertoire courant: C:\MonAppli\
    Appel à OpenDialog, tu vas chercher une image dans D:\MesImages, le répertoire courant devient D:\MesImages

    Du coup, il essaie de charger cette image D:\MesImages\images\icones\flecheDroite.bmp

    Je ferais quelque chose du genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    function GetApplicationPath:string;
    begin
      Result := ExtractFilePath(ParamStr(0));
    end;
    ButtonNext.Glyph.LoadFromFile(getApplicationPath+'images\icones\flecheDroite.bmp');
    Delphi 7/XE2/XE3
    C#
    Oracle 9i à 12c
    SQL Server 2008 à 2014

  14. #14
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2016
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2016
    Messages : 48
    Points : 32
    Points
    32
    Par défaut
    ah ok ! J'ignorais qu'il ferait ça !

    J'ai testé et ça fonctionne !

    Merci beaucoup pour votre aide !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. refresh page provoque erreur
    Par kate59 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 21/09/2011, 22h00
  2. Fonction array_push() provoque erreur
    Par Arres dans le forum Langage
    Réponses: 2
    Dernier message: 31/05/2010, 19h29
  3. Réponses: 2
    Dernier message: 04/10/2009, 01h59
  4. DROP TABLE provoque erreur de syntaxe 3295
    Par AndréPe dans le forum Requêtes et SQL.
    Réponses: 7
    Dernier message: 08/12/2008, 19h44
  5. [Spip] Plugin perso provoque erreur http 302
    Par mama07 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 1
    Dernier message: 31/12/2007, 17h13

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