|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Jan 2001
Città: Villanova di Guidonia (RM)
Messaggi: 1079
|
[C] Accedere a strutture definite altrove
Ciao a tutti.
Ho un problema con un progetto che sto continuando per l'università. Praticamente nel Modulo precedente avevo creato una struttura che mi serviva per gestire dei file. Questa struttura a sua volta veniva manipolata da alcune funzioni create in quel Modulo. Ora che sto iniziando il nuovo Modulo devo poter accedere a quella struttura, senza però includere direttamente il file .h che ne contiene la definizione. Il professore mi ha detto che per fare questo devo usare quelle funzioni create nel modulo precedente, ma non capisco come fare di preciso. Spero di essere stato chiaro, grazie. |
|
|
|
|
|
#2 | |
|
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
Nel secondo caso, ti basta richiamare quelle funzioni. Nel tuo nuovo sorgente, dichiari quelle funzioni tramite un prototipo e poi effettui il link con il vecchio modulo.
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
|
|
|
|
|
#3 |
|
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
|
OT: Manugal, per caso sei di Roma?
|
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Jan 2001
Città: Villanova di Guidonia (RM)
Messaggi: 1079
|
Io avevo, ad esempio, nel precedente modulo una funzione chiamata OpenFile che appunto mi apriva un file, manipolava quella struttura e alla fine mi ritornava un intero che identificava quel file. Ora dovendo inserire un record nuovo in questo file, mi si chiede di settare il record corrente. Il record corrente è identificato, però da una variabile che è in quella struttura. Come faccio a modificarlo solo tramite quelle funzioni?
|
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Jan 2001
Città: Villanova di Guidonia (RM)
Messaggi: 1079
|
OT: vicino
|
|
|
|
|
|
#6 | |
|
Utente sospeso
Iscritto dal: Oct 2002
Messaggi: 2156
|
Quote:
dichiara nuovamente quella funzione nel nuovo modulo con extern: extern <tipo ritorno> <nome funzione>(<lista di tipi dei parametri>)
__________________
sign editata dallo staff |
|
|
|
|
|
|
#7 |
|
Senior Member
Iscritto dal: Jan 2001
Città: Villanova di Guidonia (RM)
Messaggi: 1079
|
Ok per accedere alla funzione va bene, ma come faccio tramite questa funzione a modificare una variabile che si trova in quella struttura di cui parlavo?
|
|
|
|
|
|
#8 |
|
Utente sospeso
Iscritto dal: Oct 2002
Messaggi: 2156
|
semplicemente chiamandola..... la struct è locale alle funzioni che la manipolano quindi le funzioni "vedono" la struttura.
__________________
sign editata dallo staff |
|
|
|
|
|
#9 | |
|
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
|
Quote:
nel Modulo 3 non devi accedere direttamente al vettore dei DBF: potresti farlo con extern, come ti è stato suggerito, ma mi sa tanto che ti bocciano puoi/devi solamente usare le funzioni di interfaccia del Modulo 2: vedrai che hai tutto il necessario. in particolare ad es. se hai un handle valido, per ottenere il file descriptor del DBF corrispondente basta che usi la GetDBFInfo. PS: ora si scopre che non hai capito nulla di quello che ho detto perché sei di un'altra università |
|
|
|
|
|
|
#10 |
|
Senior Member
Iscritto dal: Jan 2001
Città: Villanova di Guidonia (RM)
Messaggi: 1079
|
In effetti non è che ho capito molto
Faccio un altro esempio. La GetDBFInfo() per esempio era una funzione che prelevava alcune informazioni dal file identificato da un certo handle (che è quell'intero che viene ritornato dalla funzione Open) e che poi, una volta lette queste informazioni riposiziona il file pointer (non uso file descriptor) alla posizione iniziale. Questa funzione mi ritorna 0 se ha effettuato tutte le operazioni in modo corretto. Visto che mi torna un intero come faccio ad accedere alle strutture dati o ad altre "risorse" che questa funzione manipola? Spero di essermi spiegato. |
|
|
|
|
|
#11 |
|
Senior Member
Iscritto dal: Jan 2001
Città: Villanova di Guidonia (RM)
Messaggi: 1079
|
Grazie a tutti. Credo di aver risolto.
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 16:53.



















