Cocoa+Terminal

  • Créateur du sujet Membre supprimé 2
  • Date de début
M

Membre supprimé 2

Invité
Est il possible d'utiliser des comandes terminal dans cocoa, c'est a dire en cliquant sur un bouton dans un programme en cocoa executer une ou plusieure comandes terminal?

Merci d'avance
shocked.gif
shocked.gif
 
Merci pour toutes vos réponces

voici le programme que j'éxecute
-------------------------------------
#include <stdio.h>
#include <stdlib.h>

void main(void){


char cde[80];

system("ls");

scanf("%s", cde);
system(cde);

return;
-------------------------------------
Je voudrais que ca m'affiche tout le repertoire mais au lieu de ca j'ai juste droit a:

intermediates
nomduprogramme

Sauriez vous comment faire pour qu'il m'affiche tout le repertoire?
 
<BLOCKQUOTE><font size="1" face="Verdana, Geneva">quote:</font><HR>Posté à l'origine par Natik:
Sauriez vous comment faire pour qu'il m'affiche tout le repertoire?<HR></BLOCKQUOTE>

Euh… Ben c'est ce qu'il est en train de faire… Qu'est ce que tu veux de plus ?

(Au passage, ce n'est pas du Cocoa, ton programme, c'est du C.)
 
Ben non je te dis qu'il m'affiche juste

intermediates
nomduprogramme

moi je veut tout le répertoire.
 
Ben si tu regardes le contenu du dossier build de ton application, tu verras qu'il y a deux éléments :

intermediate
nomduprogramme

Donc je ne vois pas ce qu'il pourrait t'afficher de plus…
rolleyes.gif


Mais bon, comme de toute façon, ce n'est pas du Cocoa, ton code, tu peux faire un nouveau projet dans PB (du type CoreFoundation Tool), tu colles ton code dans le main, tu rajoutes le "}" qui manque à la fin, tu compiles, et maintenant ça fait çà :

Bloc de code:
 
Ma question est plutot comment faire pour executer plusieurs lignes de comandes?

Car a la suite ca marche pas... il reste au meme endroit...
shocked.gif
 
Tu le fais en C ou en Cocoa?

En cocoa tu as ça

This code fragment enumerates the subdirectories and files under /MyAccount/Documents and processes all files with an extension of .doc:

NSString *file;
NSDirectoryEnumerator *enumerator = [[NSFileManager defaultManager]
enumeratorAtPath:mad:"/MyAccount/Documents"];
while (file = [enumerator nextObject]) {
if ([[file pathExtension] isEqualToString:mad:"doc"])
[self scanDocument:file];
}

En fait à la place de [self scanDocument:file]; tu npeux récuperer les file dans un NSArray et les afficher dans une table view. Je te conseille d'aiilleur l'exercice suivant :
Utilise l'objet NSFileManager et crée avec interface Builder une interface avec en haut une zone dans laquelle tu saisies le nom d'un répertoire et en bas une table view t'affichant la liste des documents+ leurs attributs (date etc..) du répertpire. Sers toi de ce code pour générer l'objet Controller de ton interface.
C'est la mailleure façon d'apprendre Cocoa. Car c'est un bon exemple d'utilisation du concept MVC. Modele View Controller. Sauf qu'ici tu n'a pas d'objet model.

Sache que quand tu vaux traiter les fichiers ou repertoires, NSFileManager EST l'objet qui te permet de tout faire car il dispose de plein de methodes.

A+

[15 mai 2002 : message édité par Manu]
 
Merci manu pour ta reponce mais il faud que j'avance doucement, la c'est trop ompliqué pour moi...
grin.gif

Surtout que je m'y connait pas en c et donc encore moin en obj-c...
J'apprends mais c'est dur...
grin.gif
grin.gif
 
Alors pourait t'on m'expliquer en c comment faire pour pouvoir executer pluieurs lignes de commande car la avec:
#include &lt;stdio.h&gt;
#include &lt;stdlib.h&gt;

void main(void){


char cde[80];

system("cd");
system("ls");

scanf("%s", cde);
system(cde);

return;
}

Je ne retourne pas au départ mais je reste dans build...

Merci d'avance
shocked.gif
shocked.gif
shocked.gif
 
la base qu'il te manque pour ton exercice, c'est de l'Unix, pas du C.
il faut d'abord que tu apprennes à bien manipuler les principales commandes d'Unix, dans ton terminal.

par exemple, pour avoir la liste des répertoires depuis ta racine tu peux faire:
ls /

le caractère / étant une commande Unix servant à te déplacer dans les hiérarchies.

tu devrais trouver pas mal d'infos sur le net, en tapant "apprendre UNIX" par exemple dans Yahoo ou Google.
sinon, voici toujours un point de départ:
Unix
 
c pas ca le probleme, j'arrive pas a changer de dossier je suis toujours dans le dossier build et jarrive pas a changer de dossier avec "cd"... Pourquoi? aidez moi ca me prends la tete.

grin.gif

N
A
T
I
K
grin.gif
 
Bon, je n'ai pas encore trop essayé ce genre d'intégration Unix dans un prog (au fait, j'ai pas trop compris ce dans quoi tu essayais de l'intégrer : GUI Cocoa ou tool C ?) mais je pense que changer de dossier avec cd ne fonctionne pas dans un prog pasque le prog ne fonctionne pas comme une session terminal. En fait, cd change la variable d'environnement de ton dossier courant (affichable par pwd ou printenv et le nom de variable correspondant - j'sais plus c'ke c) mais dans un prog ça me parrait moins simple à gérer. Le mieux est donc d'appeler ta commande Unix en fournissant en argument le dossier sur lequel tu veux qu'elle agisse comme ls /Users/nom/Documents...
Que l'on me corrige si j'ai commis la moindre erreur (ce qui ne m'étonnerais pas néanmoins
grin.gif
)
 
Merci pour ta réponse, je n'avait pas pensé, a priori c'est une bonne idée mais ca ne marche pas il m'affiche:

rm: /Users/colin/.Trash/*: No such file or directory

Quelqu'un a t'il une réponse?

Et encore merci...
grin.gif
grin.gif
grin.gif