Vai al contenuto

Aerys II

Circolo degli Antichi
  • Conteggio contenuto

    8.581
  • Registrato

  • Ultima attività

  • Giorni vinti

    43

Tutti i contenuti di Aerys II

  1. Aerys II

    News generiche...

    Se ha Ubuntu 8.04 e funziona "out of the box" secondo me vai sul Dell.
  2. La domanda/richiesta di M@jere è stata espressa più volte da diversi utenti, e la risposta è sempre stata negativa. Politica del Forum credo.
  3. Ora funge.
  4. Non si vede, e penso che essendo un jpg sia naturale...
  5. Non stai chiedendo un sito dove scaricarli, vero?
  6. Revel, spiega per favore il problema per cui vuoi formattare e le tue esigenze, così una soluzione la troviamo.
  7. Wiz, mi piace davvero un casino quello che stai facendo!
  8. Aerys II

    Capitolo 15: Demolizioni!

    La storia del ferito ricorda un racconto di Dick... una bambolina che dice "Uttini!" a chi indovina quale.
  9. E bravo gattomannaro!
  10. Non ho fatto in tempo a leggere ieri notte, grazie per la dritta. Posso "passare" per char pointer dunque senza incorrere nella tua ira? Ok, fatto. Ora nasce una nuova questione: dovendo ripetere la stessa procedura per diversi file diversi, ho definito naturalmente una funzione da chiamare n volte (5 per ora) con i file di cui sopra come argomento. Due cose: 1) Come posso far sì che una funzione invii al file stream in uscita una stringa? Inizialisso lo stream nel main (es. ofstream output(nome_file);) ), poi lo passo come parametro alla funzione, e all'interno della stessa do il solito output>>stringa;? Così facendo non funge. E' la via giusta e sbaglio qualche dettaglio oppure devo aprire lo stream all'interno della funzione? Non è sconveniente aprire e chiudere un file n volte (tante quante sono le chiamate della funzione)? 2) Argomento su cui sono davvero totalmente digiuno, ovvero le eccezioni. Al momento io devo leggere i file relativi a cinque parti del cervello di x pazienti diversi (quelli identificati con l'id di quattro lettere di cui sopra). Tanto per non compilare e ricompilare di continuo mi sono inventato il barbarico metodo di cui sopra: ho creato per ciascun paziente una directory all'interno di quella principale, e in ciascuna directory ci sono i file relativi al paziente stesso, identificati non più con la caotica stringa con cui mi sono stati inviati ma con il nome della parte del cervello ivi contenuta sotto forma di vtkPolyData. In ogni cartella in pratica dovrei avere un file caudato.vtk, un pallido.vtk, un putamen.vtk, un calloso.vtk e un nbase.vtk. Il problema è che al momento non ho ancora tutti i dati di ciascun paziente: tre pazienti sono "completi", mentre gli altri hanno chi i dati di una sola parte, chi quelli di due, chi di tre... prima di creare la funzione di cui sopra (che mi da in output una valore di tipo "struttura_da_me_definita" che comprende un campo numerico e un campo attore da inviare al rendering) partiva un messaggio di errore, ma il programma lavorava solo sui dati in suo possesso ignorando i mancanti. Poi io provvedevo in uscita a dire "Se il valore è nullo si vede che mancava il dato e scrivi che il dato manca, altrimenti scrivi il valore". Ora con i pazienti "completi" va tutto bene, con gli altri il programma viene terminato nella vergogna. Ho realizzato che l'errore si presenta non nel momento di caricare il file, ma all'interno della funzione, errore del tipo "Qualche puntatore fa il gaglioffo..." (quello sulla memoria che non poteva essere "read"). Mi chiedevo a questo punto come gestire la cosa in modo da evitare questo problema molto fastidioso (che al momento mi costringe a compilare la primitiva versione da 700 righe anziché quella da 500, e soprattutto mi irrita alquanto), e credo che la risposta sia nelle eccezioni. Come dicevo però, si tratta di un argomento a me nuovo. Si trattasse di gestire un'eccezione tipo l'utente pistola che mi da cinque caratteri invece che quattro, come dicevamo, saprei cavarmela semplicemente con quel poco che ho appreso su try, throw, catch, mentre così... boh!!! Devo cercare nella documentazione delle classi che uso il codice d'errore, e dire che se catch riceve un'eccezione di quel genere deve restituire un errore e skippare l'istanza (termine improprio ma ci siamo capiti ) della funzione? Forse dovrei agire prima ancora, nel main, dicendo "Se il reader non trova il file allora lancia questa eccezione e salta "l'istanza"(nuovamente termine improprio)"? O forse niente eccezioni ma un semplice if(il_file_può_essere_aperto_dall'ifstream){fai il tuo dovere} else {skippa la parte del cervello che manca}; ? EDIT: Ho adottato il metodo di cui sopra, con if/else. Per verificare l'esistenza uso una funzione trovata online leggermente modificata da me: bool doesExist(string filepath) { bool exists = false; fstream fin; fin.open(filepath.data() ,ios::in); if( fin.is_open() ) exists=true; fin.close(); return exists; }; Sono soddisfatto così, ora devo capire come gestire la faccenda dell'output da interno funzione, ma non è proprio così necessario. Qualcuno qui ha esperienza nell'uso di FLTK?
  11. Ok, mi sono dato una ripassata rapida, eliminato le cose ridondanti, adesso appare così: string id; cin>>id; string intest="Percorso_solito"; string SurfName1= intest+ id+ "nome_file"; Bene. Ho il problema, ora, di dover passare le stringhe così ottenute come variabili in ingresso a funzioni che vogliono normalmente ingressi del tipo const char*, come la utile (per me) funzione strlwr();, che permette di convertire in lower case tutti i caratteri di una stringa (almeno, con gli array di caratteri funzionava). Cosa ben più importante, è la funzione SetFileName(); della classe reader che devo utilizzare in modo massiccio a volere in ingresso un const char*;, ma anche con ofstream output(NOMEFILE); non ottengo risultati. Allora, da bravo bipede con pollice opponibile, leggo la documentazione e passo ai felloni che mi richiedevano un const char* un bel nome_stringa.data(); et voila. Unico problema, non certo indifferente per esigenze di case sensitivity, non so come far digerire le mie stringhe alla funzione strlwr(); che mi era proprio utile. Se per caso mi voleste mandare una mail a riguardo vi sarei lieto, domani non leggerò il forum se non tardi.
  12. Touché: come diceva Nelson Mandela "Allocazione dinamica della memoria is the answer", dunque. In realtà contavo che il concetto di "ID di quattro lettere" fosse chiaro, ma tu mi insegni che avendo a che fare con utenti non qualificati (anzi) sarà il casodi eliminare subito il rischio. In realtà è una versione "da battaglia" che mi serve per elaborare dei dati senza ricompilare il tutto ogni volta scommentando e commentando di qua e di là per cambiare i file in ingresso, ma non vedo perché non seguire il tuo consiglio. Danke!
  13. Cioè le tre volte che ho usato char* per due? Ho fatto un esame chiamato Calcolatori Elettronici, ma lo seguivo solo per corteggiare una francese in Erasmus. Era inutile e terribilmente distante da questioni di reale utilità: tenuto da uno che aveva come unico pregio quello di somigliare a Ivo il Tardivo, parlava in modo vago e svogliato di pipeline e registri. Nessuna nozione reale. Un esame del nuovo ordinamento in pratica. Sono serissimo. Però ti dirò, considerando che li uso per quello scopo a inizio del programma e poi solo per finire in pasto a un Reader di immagini finora non han dato problemi. Domani in ogni caso mi ristudierò le stringhe, benché da manuale loro non si sbilancino a sconsigliare i char*.
  14. Premetto che ho fatto quello che volevo fare, più o meno così. char leggi[5]; cin>>leggi; const char *id=strlwr(leggi); const char *intest="Percorso_fino_alla_cartella_superiore"; char nome_f[9]; strcpy(nome_f, id); strcat(nome_f, ".txt"); char NameVar1[120]; strcpy(NameVar1, intest); strcat(NameVar1, id); strcat(NameVar1, "/file_da_caricare.estensione"); const char* SurfName1=NameVar1; Il tutto ripetuto per ciascuna variabile. Funzionare funziona. Ora veniamo alla questione Dusdanica, che mi interessa davvero assai. Nessuno, vecchio mio: sai bene chi mi ha fatto lo pseudo-corso di Informatica il primo anno, mister Hmeljak. Dopo anni di stop, praticamente ho ricominciato da zero questa estate. Ribadendo ancora che sono passati diversi anni da quando programmavo per l'Università e che al momento ho ripreso da autodidatta, potresti (e lo chiedo seriamente) spiegarmi perché non ti aggrada la soluzione e come l'avresti risolta tu? Mi sarebbe molto d'aiuto, come dicevo non ho avuto ancora modo di riprendere in mano tutta la materia.
  15. Sì, scusa se non ho risposto ma sono piuttosto impegnato con un programma che mi fa esclamare parole molto volgari. ;-)

  16. Pongo una questione che sarà banale e per risolvere la quale basterà di sicuro rileggere un capitolo di manuale, ma sono fuso dalla giornata e avere una risposta pronta mi gioverebbe. Ho la necessità, in C++, di leggere da console un ID di quattro lettere, rendere minuscole le lettere eventualmente maiuscole digitate dall'utente (voglio un programma idiot proof), e utilizzare la stringa ottenuta per modificare delle altre stringhe. Mi spiego: devo assegnare delle costanti di questo tipo, che corrispondano a dei file chiamati tutti allo stesso modo e distinti all'interno del file system solo dal nome della cartella superiore, cartella il cui nome corrisponde all'ID richiesto all'utente: const *char NomeFile1="Percorso_fino_alla_cartella_superiore/ABCD/nome_file1"; const *char NomeFile2="Percorso_fino_alla_cartella_superiore/ABCD/nome_file2"; ... const *char NomeFileN="Percorso_fino_alla_cartella_superiore/ABCD/nome_fileN"; L'utente di cui sopra scrive l'ID, e il valore delle N stringhe costanti deve essere modificato inserendo lo stesso al posto delle ABCD nell'esempio qui sopra. Pensavo a una cosa tipo: char a[5]; cin>>a; char *b=strlwr(a); E fin qui nessun problema. A questo punto per infilare quei quattro caratteri nella stringa io che devo fare? Pensavo di inizializzare una stringa variabile del tutto identica alla costante che poi definirò, modificare quella con l'ID "minuscolizzato" ottenuto e settare finalmente il valore della stringa costante come uguale a quello della stringa variabile modificata. Più o meno funziona? Per infilare quei fo**uti quattro caratteri che devo fare? Io punterei verso il carattere della stringa precedente ad ABCD per poi copiarli lì. Corretto? Come mi muovo? Scusate, come ho già detto so che è una domanda scema ma non ho avuto tempo/voglia di rivedere alcuni concetti...
  17. Per restare in tema di storie DC piene di supereroi, avete letto Crisi sulle (o nelle? :confused) Terre Infinite?
  18. Amen fratello, amen! Alleluja!
  19. Avranno cercato di inchiapparti la password... Provato a fare così? http://messenger-supportit.spaces.live.com/blog/cns!FF4CA5857B03E947!117.entry
  20. Prima che lo scarichi, dimmi che non sono quelli vecchissimi che girano da tempo immemore...
  21. Aerys II

    Sabbat o Camarilla?

    Quoto Lothavier, io ad esempio sono sempre stato per i Vili... chiaro, un sondaggio non ha mai pretesa di completezza, ma ridurre a due scelte...
  22. E' un film su cui meditare devo dire. Quanto meno meditare.
  23. Il Destino dei Nani è di essere degli emarginati. Sapete che non li lasciano entrare nei campi nudisti? E sapete perché? Perché i Nani sono curiosi: ficcano sempre il naso dappertutto...
  24. Visto (prima di Capitano! ). Che dire? Non male secondo me, forse solo un po' corto. Il personaggio di Brad Pitt è geniale.
×
×
  • Crea nuovo...