Newsgroup: it.comp.macintosh
Titolo: Cocoa e NSpipe

Salve.
Grazie anche hai tutorial pubblicati su tevac ho deciso di imparere a 
programmare con il c++ e cocoa.
Sto quindi facendo i primi passi.
Ora vorrei capire come e` possible catturare l'output di un programma 
lanciato su terminale, in pratica quello che nel debugger di Xcode si trova 
nella finestra console.
Ho capito come fare per lanciare un programma, ma ora avrei bisogno di 
cattuare l'ouput di quel programma al fine di inserirlo in un array o almeno 
in una stringa.
Qualcuno mi puo` spiegare come fare ?
Spulciando su internet ho capito che bisogna usare il comando MSpipe:
[Miotask setStandardOutput: [NSPipe pipe]];
dove miotask e` il task che lancia il programma, ma piu` di li non vado.
Qualcuno po` darmi una mano ?
-- 
Riccardo Saettone
Per rispondere togliere Alfa e Beta dall'indirizzo

 wrote:

------------------------------------------------------------------------
// init
if (aTask) [aTask release];
aTask = [[NSTask alloc] init];
 
// set options
[aTask setLaunchPath: [NSString stringWithFormat:@"%@/rar",[[NSBundle
mainBundle] resourcePath]]];
[aTask setArguments: parms]; // parameters
[aTask setStandardOutput: [NSPipe pipe]]; // set the output
[aTask setStandardError: [aTask standardOutput]];
 
NSLog(@"rar %@",[parms componentsJoinedByString:@" "]);
 
// background work
[[NSNotificationCenter defaultCenter] addObserver: self selector:
@selector(_progression:) name: NSFileHandleReadCompletionNotification
object: [[aTask standardOutput] fileHandleForReading]];
 
// read and start
[[[aTask standardOutput] fileHandleForReading]
readInBackgroundAndNotify]; // background notify
[aTask launch]; // launch it
------------------------------------------------------------------------
il testo te lo ritrovi nella funzione _progression:
------------------------------------------------------------------------
- (void) _progression:(NSNotification *) notif {
NSString *string= [[NSString alloc] initWithData: [[notif userInfo]
objectForKey:NSFileHandleNotificationDataItem] encoding:
NSASCIIStringEncoding];
 
        // fai qualcosa.....
 
[string release];
}
------------------------------------------------------------------------
-- 
NewsCarrier. OpenSource Cocoa Usenet Reader
http://www.criticalkernel.com/newscarrier
mail: 
malco...@fuckspam.gmail.com
aim: malcombsd

 aTask = [[NSTask alloc] init];
Grazie lo provo subito.


 Grazie lo provo subito.
di niente figurati.


 programmare con il c++ e cocoa.
Visto che ti ha risposto (ottimamente) malcom, io faccio solo una
precisazione.
Da quanto ho visto tu stai facendo un tutorial di programmazione ObjectiveC
e Cocoa. 
C++ e ObjectiveC sono due linguaggi profondamente diversi! Lo so che e`
solo un typo, ma per chi dovesse leggere, cosi` e` piu` chiaro.
-- 
[ RiK0                                ]
[ non credo negli schemi non vincenti ]
[ two is an odd prime number          ]

 solo un typo, ma per chi dovesse leggere, cosi` e` piu` chiaro.
Si hai ragione non mi sono espresso charamente io. 
Tra l'altro chi mi puo consigliare un manuale di ObjectiveC adatto per chi 
non conosce il C ?
Ho magari meglio ancora un manuale dedicato espressamente a cocoa e 
ObjectiveC che parta dal presupposto che un il C in vita sua non l'abbia mai 
visto ?
Chiedo questo perche` tutti i manuali che ho trovato finora partono dal 
presupposto che uno conosca gia` per lo meno il C se non il C++.
Mentre a me servirebbe un manuale per principianti assoluti.
In pratica ora come ora per capirci qualcosa prima devo vedere come fare una 
certa cosa in C per poi scripre come si fa in ObjectiveC e cocoa.
Il che non mi rende affato facili le cose.


 non conosce il C ?
In molti casi il C neanche ti servirà. Comunque un ottimo manuale è
sicuramente quello del creatore, Dennis Ritchie. Dovrebbe semplicemente
chiamarsi "Manuale C". Altrimenti c'è "Programming in Objective-C"
(
http://www.samspublishing.com/title/0672325861
) di Kochan. Quando sarai
pronto c'è anche  Objective-C Pocket Reference (di A.M. Duncan), una
sorta di riassunto dell'Objective-C (che è già un riassunto di per se!)


 sorta di riassunto dell'Objective-C (che è già un riassunto di per se!)
pefetto grazie mille.
Quindi mi conviene comprare il "Programming in Objective-C" e poi integrarlo 
con le api cocoa ?
Dove lo trvo un bel manuale su cocoa uno del gener che spieghi come fare per 
far dialogare l'interfaccia grafica con il codice, imput e output ecc.



<
http://developer.apple.com/samplecode/SimpleCocoaApp/SimpleCocoaApp.htm
l>
<file:///Developer/ADC%20Reference%20Library/documentation/Cocoa/Concept
ual/CocoaObjects/index.html#//apple_ref/doc/uid/10000155i>
Se proprio vuoi un parere sui libri, tra tutti preferisco quello di
Scott Anguish, "Cocoa Programming"
<
http://www.amazon.com/exec/obidos/tg/detail/-/0672322307/qid=1104790582
/sr=1-4/ref=sr_1_4/103-0089808-7194275?v=glance&s=books>
Una volta che ti sei spappolato quel coso c'è anche Bill Cheeseman -
"Cocoa Recipies" - che non è altro che un'insieme di esempi riguardo le
classi più usate
<
http://www.amazon.com/exec/obidos/tg/detail/-/0201878011/qid=1104790582
/sr=1-2/ref=sr_1_2/103-0089808-7194275?v=glance&s=books>
Altri libri in tema sono:
- Building Cocoa Applications - A Step by Step Guide
- Cocoa in a Nutshell 
- Cocoa Programming for Mac OS X
Dovresti trovare anche questi su Amazon.


 aTask = [[NSTask alloc] init];
Ho proavto a usare il codice che mi hai dato mettendolo in un progetto nuovo 
di xcode.
ma non ho trovato verso di farlo compilare.
mi da sempre errore.
error: parse error before '[' token
error: parse error before '=' token
error: parse error before "wgetinfo"
evidentemente sbaglio qualcosa di ancora piu` basilare.
Mi puoi ancora aiutare per favore ?


 Mi puoi ancora aiutare per favore ?
hai dichiarato NSTask?
metti nell'interface della tua classe NSTask *aTask;
Se hai problemi posso mandarti un esempio al volo.


 Se hai problemi posso mandarti un esempio al volo
Si quello lo fatto ma non e` cambiato nulla
mi puoi mandare un esempio al volo.
se ti serve sono anche su ichat.


 se ti serve sono anche su ichat.
che nick?


 
saettoneatmacpuntocom


 con le api cocoa ?
Prova a chiedere sul ng anglofono su objc... c'era un manuale che
consigliavano a chi non sapeva nulla di C. Potrebbe anche essere quello che
consiglia malcom, proprio non ricordo. Ricordo ce ne era uno fatto apposta.


 visto ?
Beh.. ti ho detto nell'altro sottothread.


 consiglia malcom, proprio non ricordo. Ricordo ce ne era uno fatto apposta.
è quello :-)


 č quello :-)
Ok. Bella li.


 
http://www.criticalkernel.com/newscarrier
Dice che 'non ho il permesso'


 Dice che 'non ho il permesso'
opz
http://www.criticalkernel.com/newscarrier/home.html
-- 
NewsCarrier. OpenSource Cocoa Usenet Reader
http://www.criticalkernel.com/newscarrier/home.html
mail: 
malco...@fuckspam.gmail.com
aim: malcombsd

 
http://www.criticalkernel.com/newscarrier/home.html
meglio :)
-- 
RiK0
Non credo negli schemi non vincenti.