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 :

Un projet sans Form liée


Sujet :

Delphi

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    116
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 116
    Par défaut Un projet sans Form liée
    Bonjour à tous,

    voila mon problème :

    Je cherche a créer un projet pr lequel je n'ai pas de form principale liée.
    Par défaut, si l'on crée un nouveau projet de type application il crée automatiquement une form. J'aimerai ne pas avoir de form liée (comme une unité) ceci car dans cette unité je créerai dynamiquement les forms a afficher.

    J'ai essayé en modifiant les fichiers projets, tout avais l'air de bien se passer mais j'ai une violation d'accès que j'arrive pas a débugger, j'ai pourtant bien enlevé toutes les anciennes références à la form en question,

    merci de votre aide

    Fred

  2. #2
    rsc
    rsc est déconnecté
    Membre émérite
    Avatar de rsc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2004
    Messages
    711
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : France, Côte d'Or (Bourgogne)

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

    Informations forums :
    Inscription : Juin 2004
    Messages : 711
    Par défaut
    Citation Envoyé par fred64
    mais j'ai une violation d'accès que j'arrive pas a débuggerFred
    Sur quelle ligne précisément ?

  3. #3
    Membre émérite Avatar de Yurck
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 16
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2005
    Messages : 682
    Par défaut
    Bonjour,

    Si tu enlève toutes les fiches créées auto de ton projet via la boîte projets/options onglet fiches alors tu n'as plus aucune fiche de crée.

    Mais dans ce cas si dans ton Programm tu ne crée pas de fiche avec l'instruction application.run alors ton programme sans planter se referme dès son ouverture puisqu'il n'a aucun objet windows de crée en attente de message.

    Pour ce qui est de ton bogue, tu dois pouvoir déboguer et nous dire au moins si tu rentre dans ton programm jusqu'à la ligne application.run

    a+

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    116
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 116
    Par défaut
    Merci à vous, j'ai simplifié le problèle voila le code :

    Project1.dpr
    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
     
    program Project1;
     
    uses
      Forms,
      Unit1 in 'Unit1.pas' {Form1},
      Unit2 in 'Unit2.pas';
     
     
    {$R *.res}
     
    begin
      Application.Initialize;
      Main.Test;
      Application.Run;
    end.
    Unit1:
    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
    unit Unit1;
     
    interface
     
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs;
     
    type
      TForm1 = class(TForm)
      private
        { Private declarations }
      public
        { Public declarations }
      end;
     
    var
      Form1: TForm1;
     
    implementation
     
    {$R *.dfm}
     
    end.
    Unit2 :
    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
    unit Unit2;
     
    interface
     
    uses
     Forms, Dialogs, Unit1;
     
    type
    	TMain = class
        private
    	public
            procedure Test;
    	end;
     
    var
    	Main: TMain;
     
    implementation
     
    procedure TMain.Test;
    begin
    Form1.Create(Application);
    end;
     
     
    end.
    Ca plante avant Application.Run;, ca doit etre evident mais je ne trouve pas

  5. #5
    Membre émérite Avatar de Yurck
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 16
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2005
    Messages : 682
    Par défaut
    Du coup ça saute aux yeux.

    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
    program Project1;
    
    uses
      Forms,
      Unit1 in 'Unit1.pas' {Form1},
      Unit2 in 'Unit2.pas';
    
    
    {$R *.res}
    
    begin
      Application.Initialize;
      Application.CreateForm(TMain, Main);
      Main.Test;
      Application.Run;
    end.
    Tu ne peux pas appeler un objet qui n'est pas créé.

    a+

  6. #6
    Membre émérite Avatar de Yurck
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 16
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2005
    Messages : 682
    Par défaut
    Excuse moi j'ai faim et je m'emballe.

    Tu peux le faire si tu déclare ta fonction Test comme étant une procédure de class.

    a table.

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    116
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 116
    Par défaut
    merci, je viens d'essayer avec une procédure de classe et ca ne change rien du tout

  8. #8
    rsc
    rsc est déconnecté
    Membre émérite
    Avatar de rsc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2004
    Messages
    711
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : France, Côte d'Or (Bourgogne)

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

    Informations forums :
    Inscription : Juin 2004
    Messages : 711
    Par défaut
    A mon sens, avec
    Tu appelles un objet qui n'a pas été instancié ; ce n'est donc pas étonnant si ça plante.

    Dans ton exemple, tu n'as pas besoin que test soit une méthode de classe. D'autre part, il y a une erreur dans la création de ta Form. Il suffiet d'écrire ceci :
    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
    unit Unit2;
    
    interface
    
    uses
     Forms, Dialogs, Unit1;
     
    procedure Test;
        
    implementation
    
    procedure Test;
    begin
    Form1 := TForm1 .Create(Application);
    end;
    
    end.

  9. #9
    Membre émérite Avatar de Yurck
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 16
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2005
    Messages : 682
    Par défaut
    Avec une procédure de class tu corrigerai ta première erreur.
    cad le fait d'appeler une méthode de l'objet Main sans qu'il soit créé.
    Mais cela ne changerai pas le fait que dans la méthode de class Main.test il ne faudrait pas non plus appeler de nouveau un objet sans l'instancier.

    Donc comme le dit rsc dans ta méthode quelle soit de class ou non il ne faut pas non plus appeler une méthode (en l'occurence ici le constructeur Create) sur un objet non instancier sauf si cette méthode est une procédure de class (ce qui n'est pas le cas du constructeur create)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    class procedure TMain.test;
    begin
      Form1 := TForm1 .Create(Application);
      Form1.show;
    end;
    a+

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    116
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 116
    Par défaut
    Merci de vos réponses,

    je code avec delphi depuis un moment pr faire des petits trucs mais je ne m'etais pas jusqu'à présent posé de questions existentielles, j'ai compris le mécanisme, merci à vous de votre aide

    Fred

  11. #11
    rsc
    rsc est déconnecté
    Membre émérite
    Avatar de rsc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2004
    Messages
    711
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : France, Côte d'Or (Bourgogne)

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

    Informations forums :
    Inscription : Juin 2004
    Messages : 711
    Par défaut
    Si c'est bon, balise

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

Discussions similaires

  1. Créer un Timer (ou équivalent) dans un projet sans Form
    Par avigeilpro dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 13/05/2007, 18h52
  2. ActiveX dans un projet sans interface graphique
    Par Nalfouille dans le forum MFC
    Réponses: 6
    Dernier message: 04/01/2006, 18h30
  3. Utilisation de composant sans Form est elle possible
    Par Hypollite76 dans le forum Composants VCL
    Réponses: 26
    Dernier message: 01/12/2005, 13h07
  4. Réponses: 4
    Dernier message: 07/07/2004, 18h52
  5. composant visible sans forme précise. Avez vous un miracle ?
    Par yoghisan dans le forum Composants VCL
    Réponses: 5
    Dernier message: 10/02/2004, 01h29

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