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

Composants VCL Delphi Discussion :

Erreur avec le SaveDialog!Ne fonctionne pas!


Sujet :

Composants VCL Delphi

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    177
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 177
    Points : 74
    Points
    74
    Par défaut Erreur avec le SaveDialog!Ne fonctionne pas!
    Voilà mon souci c'est que je souhaite enregistrer comme précédement avec ce code :

    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
    17
    18
    19
    20
    21
    22
    23
    24
    var
    tsl:tstringlist ;
    s:string ;
    y,x:integer;
    begin
    if edit1.text='' then
       ShowMessage('Veuillez saisir un Nom pour votre fichier texte!')
    else begin
        if FileExists(edit1.text+'.Txt') then
           if MessageDlg('Voulez Vous Ecraser le Fichier déjà Existant '+edit1.text+'.txt ?'+chr(13)+chr(10),mtWarning ,[mbYes,mbNo],0)=mrNo then
        exit;
       tsl:=tstringlist.create ;
       for y:=0 to stringgrid1.RowCount-1 do
       begin
         s:='' ;
         for x:=0 to stringgrid1.ColCount-1 do
           s:=s+stringgrid1.cells[x,y]+';' ;
         tsl.add(s) ;
       end ;
       tsl.savetofile(edit1.text+'.txt') ;
       tsl.free ;
     
       ShowMessage('Transfert Données Effectué!!!');
    end;
    en y utilisant cette fois ci le SaveDialog :

    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
    17
    18
    var
    tsl:tstringlist ;
    s:string ;
    y,x:integer;
    begin
       tsl:=tstringlist.create ;
       for y:=0 to stringgrid1.RowCount-1 do
       begin
         s:='' ;
         for x:=0 to stringgrid1.ColCount-1 do
           s:=s+stringgrid1.cells[x,y]+';' ;
         tsl.add(s) ;
       end ;
       tsl.savetofile(SaveDialog1.FileName) ;
       tsl.free ;
     
       ShowMessage('Transfert Données Effectué!!!');
    end;
    mais il me fait l'erreur :

    Project IEPS.exe raised exception class EFCreateError with message 'Cannot create file'. Process stopped. Use Step or Run to continue.

    Voila si on peut m'aider ca serait cool et je me doute que cela vient de moi mais bon

  2. #2
    rbh
    rbh est déconnecté
    Membre confirmé Avatar de rbh
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    384
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Janvier 2004
    Messages : 384
    Points : 473
    Points
    473
    Par défaut
    Salut
    A aucun moment tu n'affiche ta boite de dialogue...

    tu devrais faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
       if SaveDialog1.Execute then
         tsl.savetofile(SaveDialog1.FileName) 
      else
         {Faire autre chose si il clique sur annuler}

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    177
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 177
    Points : 74
    Points
    74
    Par défaut
    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    procedure TForm5.SauvegarderSousClick(Sender: TObject);
    var
    tsl:tstringlist ;
    s:string ;
    y,x:integer;
    begin
    tsl:=tstringlist.create ;
                if SaveDialog1.execute then
                        if SaveDialog1.FileName=' .txt' then//(1)
                        ShowMessage('Veuillez saisir un Nom pour votre fichier texte!')//(2)
                        else
                            if FileExists(SaveDialog1.FileName) then
                                    if MessageDlg('Voulez Vous Ecraser le Fichier déjà Existant '+SaveDialog1.FileName+' ?'+chr(13)+chr(10),mtWarning ,[mbYes,mbNo],0)=mrNo then
                                    exit
                                    else
                                        begin
                                        for y:=0 to stringgrid1.RowCount-1 do
                                            begin
                                            s:='' ;
                                            for x:=0 to stringgrid1.ColCount-1 do
                                            s:=s+stringgrid1.cells[x,y]+';' ;
                                            tsl.add(s) ;
                                            end ;
                                            tsl.SaveToFile(savedialog1.FileName);
                                            ShowMessage('Transfert Données Effectué!!!');
                                        end;
       tsl.free ;
     
     
     
    end ;
    Mon code marche mais la ligne (1) et (2) ne marche pas, il ne reconnais pas l'espace.

    SaveDialog.FileName renvoi un truc du genre NomDuFichier.txt donc je ne comprends pas pourquoi cela ne marche pas car sinon le reste marche.

    aussi un autre souci. Imaginez j'ai un fichier "Salut.text" avec ma comparaison si je met "salut.text" ca passe à travers le contôle du nom de fichier et cela me le renregistre par dessus.(je sais pas si ce verbe existe vraiment mdr).

    Y a-t-il une solution à ce problème??

  4. #4
    rbh
    rbh est déconnecté
    Membre confirmé Avatar de rbh
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    384
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Janvier 2004
    Messages : 384
    Points : 473
    Points
    473
    Par défaut
    Salut
    Je ne comprends pas la présence de l'espace à la ligne (1).
    Pour ce qui est de la différence majuscules|minuscules, la fonction FileExists() ne fait la difference que si la différence est faite par ton système de fichier.
    je m'explique : dans la plupart des cas (XP, 2k), tu ne peux pas avoir un fichier 'a.txt' et un fichier 'A.txt' dans le même dossier.
    Par contre, sur 98, si une certaine options est activé, ces 2 fichiers peuvent cohabiter et alors, tu n'auras pas de problème 'salut.text' sera un fichier différent de 'Salut.text'

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    177
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 177
    Points : 74
    Points
    74
    Par défaut
    c'est Windows2000 donc pour ma part je sais pas.

    je tombe tellemetn sur des neuneus que je me dis y en a bien un qui va dire je comprends pas ca n'enregistre pas alors qu'ils ont rien rempli donc voilà!(je suis tombé sur ce genre de neuneu).

  6. #6
    Membre habitué Avatar de Guile
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    130
    Détails du profil
    Informations personnelles :
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Avril 2002
    Messages : 130
    Points : 144
    Points
    144
    Par défaut
    Ton test :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if SaveDialog1.FileName=' .txt' then...
    est inutile ! Le TSaveDialog n'accepte pas normalement un nom de fichier invalide.

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    177
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 177
    Points : 74
    Points
    74
    Par défaut
    ah ben dsl les neuneus devront comprendre d'eux même alors lol!merci!

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

Discussions similaires

  1. [AJAX] simple affichage avec Ajax.Request ne fonctionne pas
    Par karimphp dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 18/12/2007, 09h35
  2. Réponses: 3
    Dernier message: 06/06/2007, 18h45
  3. Réponses: 2
    Dernier message: 01/05/2007, 18h50
  4. Formulaire avec pièce jointe ne fonctionne pas
    Par Icesik dans le forum Langage
    Réponses: 6
    Dernier message: 08/02/2007, 14h55
  5. simple select avec date, mais ne fonctionne pas
    Par ralcoc dans le forum Oracle
    Réponses: 5
    Dernier message: 03/07/2006, 22h59

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