caracarogna Inserito: 24 novembre 2008 Segnala Inserito: 24 novembre 2008 Ciao a tutti,La domanda e' semplicissima:- Esiste un'istruzione/funzione che restituisca la dimensione in byte di una variabile/parametro/struttura dati (UDT)?Il mio problema e' il seguente:ho una DB formata da n UDTx, vorrei creare una funzione in grado di leggere e scrivere in questa DB, per far cio' la funzione alloca nella STAT una UDTxusando un puntatore andra' a scrivere la struttura nella posizione n voluta mediante un BlkMov (SFC20).Attualmente la mia UDTx "pesa" 32 byte e tale valore e' scolpito nella funzione (serve per calcolare il puntatore alla UDT da scrivere nella DB) ma potrei (in applicazioni future) trovarmi nella condizione di espanderla pertanto mi piacerebbe calcolare la dimensione della UDTx direttamente nella funzione ...Grazie mille
pescatori Inserita: 25 novembre 2008 Segnala Inserita: 25 novembre 2008 Secondo me non è possibile calcolare la lunghezza di una struttura con una funzione; secondo me l'unico modo è quello di specificare la dimensione in byte di un elemento in un'altra area di memoria e quindi nelle tue FC invece di avere un parametro costante potresti usare ad esempio un MB che avrai inizializzato con la dimensione del dato.
caracarogna Inserita: 25 novembre 2008 Autore Segnala Inserita: 25 novembre 2008 Ciao,Ho trovato!!!!!La cosa e' abbastanza semplice, riporto un esempio per chi avesse un problema analogo:- Nella definizione delle variabili inserisco la mia struttura (UDT) seguita da un byte che chiamero' End_Struct, sara' sufficiente fare la differenza tra il puntatore a End_Struct e quello alla struttura, trasformarloin DInt e ottengo la dimensione della mia UDT in runtime ...Var_Temp Par1:Real Par2:DInt MyUDT: UDT 20 End_Struct:Byte Par3:Bool Par4:WordEnd_VarBeginNetworkTitle =L P##End_StructL P##MyUDT-DSRD 3T #LenghtEnd_FunctionA questo punto posso blindare il codice e modificare la mia UDT senza dovermi preoccupare di aggiornare la funzione che la usa ... Ciao
Messaggi consigliati
Crea un account o accedi per commentare
Devi essere un utente per poter lasciare un commento
Crea un account
Registrati per un nuovo account nella nostra comunità. è facile!
Registra un nuovo accountAccedi
Hai già un account? Accedi qui.
Accedi ora