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

Apple Discussion :

[DEV] Cocoa/Obj-C : première appli : TODO


Sujet :

Apple

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

    Informations forums :
    Inscription : Avril 2004
    Messages : 189
    Points : 60
    Points
    60
    Par défaut [DEV] Cocoa/Obj-C : première appli : TODO
    Bonjou,

    j'ai commencé hier à me familiariser avec XCode pour développer une première application Cocoa/Obj-C. Mon idée est de faire une application bidon genre qui permet de créer une tâche à effectuer, avec ou sans rappel.

    Pour le moment, j'aimerai simplement afficher dans un NSTableView les différentes tâches qui je rajoute au fur et à mesure. J'ai donc un bouton Add, qui m'ouvre une deuxieme fenetre dans laquelle je saisi un texte puis je la valide en appuyant sur un bouton Valider. Pour le moment le texte tappé s'affiche sur la sortie standard(NSLog) mais le reloadData ne fait pas afficher le texte le NSTableView. Pourtant je pense avoir correctement implémenter le controleur de Datasource.

    SI vous pouviez m'éclairer ce serait sympa.

    Voici mes deux classes :

    TODO.h
    /* TODO */

    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
    #import <Cocoa/Cocoa.h>
    
    @interface TODO : NSObject
    {
    	IBOutlet NSTableView* tableTodo ;
    	IBOutlet NSTableView* tableDone ;
    	NSMutableArray* todoList ;
    	IBOutlet NSTabView* tabView ;
    	IBOutlet NSButton* buttonAdd ;
    	IBOutlet NSTextField* textTodo ;
    }
    
    - (id)initTODO:(id)sender;
    - (IBAction)addTodo:(id)sender;
    - (IBAction)deleteTodo:(unsigned int)ident;
    - (IBAction)doneTodo:(unsigned int)ident;
    
    
    @end
    TODO.m

    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
    32
    33
    34
    35
    36
    37
    38
    39
    40
    #import "TODO.h"
    
    @implementation TODO
    
    - (id)initTODO:(id)sender
    {
    	if(![super init])
    	return nil ;
    	
    	todoList = [NSMutableArray arrayWithCapacity:10]  ;
    	//[tableTodo setDataSource: todoList];
    
    	
    	return self ;
    
    }
    
    
    - (IBAction)addTodo:(id)sender
    {
    	[todoList addObject:[textTodo stringValue]] ;
    	[todoList reloadData];
    	
    }
    
    - (IBAction)deleteTodo:(unsigned int)ident
    {
    	[todoList removeObjectAtIndex:ident];
    
    
    }
    
    - (IBAction)doneTodo:(unsigned int)ident
    {
    
    
    }
    
    
    @end
    listController.h
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    
    /* listController */
    
    #import <Cocoa/Cocoa.h>
    
    @interface listController : NSObject
    {
    	@private
    	NSArray     *aBuffer;
    }
    @end
    listController.m
    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
    #import "listController.h"
    
    @implementation listController
      - (int)numberOfRowsInTableView:(NSTableView *)aTable
    {
    		return ([aBuffer count]);
    }
           
    - (id)tableView:(NSTableView *)aTable objectValueForColumn:(NSTableColumn *)aCol row:(int)aRow
    {
    		return ([aBuffer objectAtIndex:aRow]);
    }
           
        
    @end

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    308
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 308
    Points : 373
    Points
    373
    Par défaut
    Je sais pas si c'est tellement bidon... comme application. Enfin toujours est-il que t'essaye de faire une "grosse" application sans base Cocoa ni Objective-C...

    Pour commencer, essaye de faire des noms conventionnels pour tes classes, le nom de la classe commence avec une majuscule puisque chaque nouveau mot contient une majuscule, donc il vaudrait mieux faire une classe ToDo et une classe ListController.

    À part ça. Dans ton nib tu dois avec une instance de la classe TODO... À part les objets déjà implémentés dans IB, tous les autres reçoivent un message "init" pour être initialisé, alors je te conseille de supprimer ton initTODO: par un simple -init.

    Ensuite, le data source d'un NSTableView ne peut être un NSMutableArray, il faut que tu crées un classe (ou que tu utilises ta TODO) qui sera la classe Data Source et qui fournira les données que la NSTableView demande (d'ailleurs évite de considérer return comme une fonction, les parenthèses ne servent à rien autour des messages Objective-C).

    À mon avis ta classe listController est inutile. Ce qu'il faut que tu fasses c'est définir ta classe ToDo comme data source de tes deux NSTableView et selon la NSTableView qui réclame ses données tu choisis de quel tableau tu veux retourner les données. Donc tes méthodes -tableView:objectValueForTableColumn:row: et numberOfRowsInTableView: doivent être définies dans ta classe.
    Tu peux aussi définir la méthode -tableView:setObjectValue:forTableColumn:row: pour pouvoir modifier les données directement dans le tableau.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    189
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 189
    Points : 60
    Points
    60
    Par défaut
    d'accord,

    j'ai donc effectué les modifications au niveau des noms de fichier et de classe, puis j'ai supprimé la classe listController.

    Par contre, je ne vois pas comment transformer ma classe Todo pour que celle-ci soit controller d'un NSTableView qu'elle contient.

    Les 3 méthodes à implémentées doivent être dans la classe Todo ?

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    308
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 308
    Points : 373
    Points
    373
    Par défaut
    ToDo ne contient pas la NSTableView, elle possède une référence vers la NSTableView. Ce qu'il faut faire c'est soit tu lies ton NSTableView et ton ToDo dans IB soit tu le fais dans l'initialisation de ToDo.
    La prelière technique tu fais un ctrl + clic sur ton NSTableView dans IB et tu glisses vers le cube qui représentes l'instance de ToDo, tu choisis "dataSource" dans l'inpsecteur.

    Ou alors 2ème technique :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    - (id)init
    {
        self = [super init]
        if(self != nil)
        {
            todoList = [[NSMutableArray alloc] initWithCapacity:10];
            [tableTodo setDataSource:self];
        }
        return self;
    }
    Il ne faut pas oublier de faire la méthode -dealloc pour faire un release sur "todoList".

    Et ensuite les 3 méthodes que je t'ai indiqué tu les fais donc bien dans ta classe ToDo.

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    189
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 189
    Points : 60
    Points
    60
    Par défaut
    pour le moment j'ai quelque chose comme celà :

    Todo.h
    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
    #import <Cocoa/Cocoa.h>
    
    
    @interface Todo : NSObject
    {
    	IBOutlet NSTableView* tableTodo ;
    	IBOutlet NSTableView* tableDone ;
    	NSMutableArray* todoList ;
    	IBOutlet NSTabView* tabView ;
    	IBOutlet NSButton* buttonAdd ;
    	IBOutlet NSTextField* textTodo ;
    	
    }
    
    - (id)init:(id)sender;
    - (IBAction)addTodo:(id)sender;
    - (IBAction)deleteTodo:(unsigned int)ident;
    - (IBAction)doneTodo:(unsigned int)ident;
    - (int)numberOfRowsInTableView:(NSTableView *)aTable;       
    - (id)tableView:(NSTableView *)aTable objectValueForColumn:(NSTableColumn *)aCol row:(int)aRow;
    - (void)tableView:(NSTableView *)aTableView setObjectValue:anObject forTableColumn:(NSTableColumn *)aTableColumn row:(int)rowIndex;
    Todo.m
    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
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    #import "TODO.h"
    
    @implementation Todo
    
    - (id)init:(id)sender
    {
    	if(![super init])
    	return nil ;
    	
    	todoList = [NSMutableArray array] ;
    	
    	[tableTodo setDataSource:self];
    	
    	return self ;
    
    }
    
    
    - (IBAction)addTodo:(id)sender
    {
    	[todoList addObject:[textTodo stringValue]] ;
    	[tableTodo reloadData];
    	
    	
    }
    
    - (IBAction)deleteTodo:(unsigned int)ident
    {
    	[todoList removeObjectAtIndex:ident];
    	[tableTodo reloadData];
    
    }
    
    - (IBAction)doneTodo:(unsigned int)ident
    {
    
    
    }
    
    - (int)numberOfRowsInTableView:(NSTableView *)aTable
    {
    		return ([todoList count]);
    }
           
    - (id)tableView:(NSTableView *)aTable objectValueForColumn:(NSTableColumn *)aCol row:(int)aRow
    {
    		return ([todoList objectAtIndex:aRow]);
    }
    
    - (void)tableView:(NSTableView *)aTableView setObjectValue:anObject forTableColumn:(NSTableColumn *)aTableColumn row:(int)rowIndex
    {
    	[todoList addObject:[textTodo stringValue]];
    }
    
    @end

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    189
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 189
    Points : 60
    Points
    60
    Par défaut
    pourquoi ma classe Todo ne contiendrait pas mon NSTableView ? C'est comme un NSButton ... il faut faire le lien entre le "NSOutlet NSButton *bouton" de la classe et le bouton de IB... mais ce sont pas des objets ce sont des références (NSButton *) avec lesquels on fait le lien avec le glisser déposer.

    l'ajout dans mon NSMutableArray doit se faire

    dans la méthode addTodo() ou dans la méthode à implémenter permettant d'ajouter un élément dans le DataSource ?

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    308
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 308
    Points : 373
    Points
    373
    Par défaut
    Déjà tu lis à moitié, quand j'ai dit "elle ne contient pas la NSTableView" j'ai rajouté "elle contient une référence vers la NSTableView" ce n'est pas pareil. Ensuite, pourquoi tu mets un argument à init ? D'où il sort le (id)sender ? C'est pas une action ! La méthode c'est :

    Rien de plus ! Ton application ne peut pas appeler -init: sur un objet d'une archive NIB. Donc tu me vires ce -init: et dans l'interface et dans IB !

    Ensuite, si tu utilises la méthode : +[NSArray array] pour créer ta ToDo list je te garantit un plantage après le premier clic, car l'objet qui en résultera sera supprimé très rapidement. Il faut soit que tu envoies un message -retain à l'objet soit que tu utilises le couple alloc/init.

    Sinon addTodo: et deleteTodo: semble... bonnes, pour le reste tu t'y prends vraiment à l'arrache, j'aimerais savoir si t'as seulement chercher à comprendre l'intérêt des méthodes que je t'ai indiqué, regarde la doc ! et tu verras que ta tableView:setObjectValue:... c'est de la <bip>...

    L'ajoute de nouveaux todo doit se faire dans addTodo: pas autre part, il faut être cohérent. tableView:setObjectValue: permet de MODIFIER le contenu d'un de tes todo en lui donnant la valeur de l'argument setObjectValue:...

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    189
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 189
    Points : 60
    Points
    60
    Par défaut
    En fait, je pensais que la méthode tableView:setObjectValue faisait la même chose que ma méthode addTodo ... j'ai fait les modifications je sais pas si c'est correct. Mais l'enervement que tu as pu déceler dans mon post ne t'était pas destiné ... désolé si tu l'as pris comme celà.
    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
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    #import "TODO.h"
    
    @implementation Todo
    
    - (id)init
    {
    	if(![super init])
    	return nil ;
    	
    	todoList = [[NSMutableArray alloc] initWithCapacity:10];
    	//[tableTodo setDataSource:self];
    	
    	return self ;
    
    }
    
    
    - (IBAction)addTodo:(id)sender
    {
    	[todoList addObject:[textTodo stringValue]] ;
    	[tableTodo reloadData];
    	
    	
    }
    
    - (IBAction)deleteTodo:(unsigned int)ident
    {
    	[todoList removeObjectAtIndex:ident];
    	[tableTodo reloadData];
    
    }
    
    - (IBAction)doneTodo:(unsigned int)ident
    {
    
    
    }
    
    - (int)numberOfRowsInTableView:(NSTableView *)aTable
    {
    		return ([todoList count]);
    }
           
    - (id)tableView:(NSTableView *)aTable objectValueForColumn:(NSTableColumn *)aCol row:(int)aRow
    {
    		return ([todoList objectAtIndex:aRow]);
    }
    
    - (void)tableView:(NSTableView *)aTableView setObjectValue:anObject forTableColumn:(NSTableColumn *)aTableColumn row:(int)rowIndex
    {
    	[todoList replaceObjectAtIndex:rowIndex withObject:anObject];
    }
    
    @end

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    308
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 308
    Points : 373
    Points
    373
    Par défaut
    Ça me semble déjà un peu mieux...

    Il faut bien comprendre comment fonctionne une NSTableView. La NSTableView va demander quelles informations elle doit afficher, ce n'est pas toi qui lui dira quoi faire.

    Elle va d'abord demander combien de ligne elle doit afficher, elle va donc envoyer le message -numberOfRowsInTableView: à son data source, le seul argument de la méthode étant la NSTableView qui demande l'information, comme c'est le cas pour toutes méthodes déléguées (le data source est une sorte de delegate en Objective-C)

    Ensuite, pour chaque case du tableau elle va demander au data source la valeur qu'elle doit mettre dedans, donc elle va envoyer le message :
    -tableView:objectValueForTableColumn:row:, le premier argument étant elle-même, le deuxième c'est la colonne dans laquelle se trouve la case à remplir (chez toi il n'y en a qu'une alors ce sera toujours la même), et le troisième argument correspond à la ligne à laquelle appartient la case à remplir (ça tu l'as bien compris).

    Pour finir, le message tableView:setObjectValue:forTableColumn:row: est envoyé au data source lorsque l'utilisateur modifie une case du tableau.
    Le premier argument correspond à la NSTableView modifiée, le deuxième argument c'est la valeur qui a été insérée, le troisième argument c'est la colonne dans laquelle se trouve la case modifiée et le dernier argument c'est la ligne dans laquelle se trouve la case modifiée.

    À première vu, dans ce que tu m'as donné tout est respecté, donc ça devrait passer... Et vire moi ces parenthèses autour des messages sur les lignes des return !

    Par contre, tu n'as toujours pas définit une méthode -dealloc pour ta classe todo !

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

    Informations forums :
    Inscription : Avril 2004
    Messages : 189
    Points : 60
    Points
    60
    Par défaut
    ok

    j'ai viré les parenthèses et j'ai rajout mon dealloc :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    - (void)dealloc 
    {
        [todoList release];
    }
    je pense que c'est correct.

    par contre, lorsque je lance l'appli et que je veux ajouter une tâche, elle ne s'affiche pas dans la liste.

    Je crois savoir ... lol

    mon main ressemble à ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    #import <Cocoa/Cocoa.h>
    
    int main(int argc, char *argv[])
    {
    	
        return NSApplicationMain(argc,  (const char **) argv);
    }
    je suppose qu'il faut instancier ma classe Todo non ? Je pense pas que celà soit fait automatiquement comme le lancement de l'interface graphique si ?

  11. #11
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    308
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 308
    Points : 373
    Points
    373
    Par défaut
    Non ta méthode dealloc n'est pas correct, voilà à quoi elle devrait ressembler :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    - (void)dealloc
    {
        // désallocations spécifiques à ta classe puis :
        [super dealloc];
    }
    Il faut toujours appeler la méthode de désallocation de la super classe pour que l'objet se supprime correctement, donc dans ton cas ça donne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    - (void)dealloc
    {
        [todoList release];
        [super dealloc];
    }
    Dans le cas d'une application Cocoa, le main tu n'y touches pas. Il y a déjà tout ce qu'il faut dedans. Sinon, si dans ton nib tu as bien mis une instance de ToDo et que tu as fait les links qu'il fallait, alors ton objet et bel et bien instancié et utilisé. Encore faut-il que tu aies bien fait les connections, sinon ça risque pas de marcher.
    D'ailleurs je m'excuse, il faut que tu changes ton -init, vire le [tableTodo setDatasource:self]; que je t'ai fait mettre, et ajoute cette méthode dans l'implémentation de ta classe ToDo :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    - (void)awakeFromNib
    {
        [tableTodo setDataSource:self];
    }
    La message -awakeFromNib est envoyé à tous les objets contenus dans un NIB après qu'ils aient été chargé et que leurs outlets aient été reliés. Avant ça, et donc dans l'-init, ton objet ne connaît pas encore le tableTodo.
    Cependant, si tu as fait la connexion de ton NSTableView vers ton instance de ToDo alors tu ne devrais pas avoir à faire ça.

  12. #12
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    189
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 189
    Points : 60
    Points
    60
    Par défaut
    oui pourtant j'ai tout bien relié ... je vais essayer de réinstancier la classe Todo et de reglisser/poser le .h

  13. #13
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    189
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 189
    Points : 60
    Points
    60
    Par défaut
    et bien j'ai relié ma classe Todo à tous les objets de mon IB. De même j'ai relié le bouton ADD à la méthode addTodo et j'ai indiqué le datasource, et désormais j'arrive à afficher la taille du tableau à chaque ajout.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    [Session started at 2007-10-21 20:29:46 +0200.]
    2007-10-21 20:29:49.165 TODO[400] 1
    2007-10-21 20:29:52.444 TODO[400] 2
    2007-10-21 20:29:54.668 TODO[400] 3
    2007-10-21 20:29:56.391 TODO[400] 4
    par contre, le NSTableView n'est pas mis à jour ...

  14. #14
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    308
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 308
    Points : 373
    Points
    373
    Par défaut
    Il faut que tu mettes des NSLog() un peu partout, notamment à l'jaout pour voir si l'élément a été correctement ajouté (si la valeur est la bonne), et aussi dans les 3 méthodes que la NSTableView est censée appeler, tu affiches ce qui est passé en paramètres. Il faut voir si tous les appels se font bien.

  15. #15
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    189
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 189
    Points : 60
    Points
    60
    Par défaut
    L'application n'effectue aucun (id)tableView:objectValueForColumn:row et aucun tableView:setObjectValue:forTableColumn:row

  16. #16
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    308
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 308
    Points : 373
    Points
    373
    Par défaut
    T'as bien relié l'outlet tableTodo à ta NSTableView???

  17. #17
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    189
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 189
    Points : 60
    Points
    60
    Par défaut
    oui lol je ne comprend pas arf

    j'arrive à afficher les éléments via NSLog().

    J'ai aussi précisé dans les paramètres de la NSTableView que mon tableau aura une seule colonne
    il faut peut être relier le NSTableView à une colonne spécifique aussi ?

  18. #18
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    308
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 308
    Points : 373
    Points
    373
    Par défaut
    Bah euh... Non normalement...

  19. #19
    Membre expérimenté Avatar de Ceylo
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2007
    Messages
    1 216
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 216
    Points : 1 312
    Points
    1 312
    Par défaut
    Peux-tu poster une archive de ton projet (en ayant viré le dossier build qui prend de la place est n'est pas nécessaire pour la compilation) ?

  20. #20
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    189
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 189
    Points : 60
    Points
    60
    Par défaut
    le zip est ici

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [MySQL] MySql et Php, première appli
    Par Ganza57 dans le forum PHP & Base de données
    Réponses: 0
    Dernier message: 14/03/2013, 09h15
  2. Ma première appli vb
    Par fdthierry dans le forum Windows Forms
    Réponses: 7
    Dernier message: 23/05/2009, 17h40
  3. Première appli simple
    Par House MD dans le forum Flex
    Réponses: 3
    Dernier message: 25/03/2009, 11h26
  4. Première Appli JSF rien ne marche
    Par pure_blue dans le forum JSF
    Réponses: 9
    Dernier message: 01/10/2007, 08h59
  5. Quel lg et IDE pour dev 1 appli multi-plateformes?
    Par Langelot dans le forum Langages de programmation
    Réponses: 7
    Dernier message: 03/02/2005, 23h36

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