Brancaleone_2000 Inserito: 23 marzo 2014 Segnala Share Inserito: 23 marzo 2014 Salve a tutti, inserisco una discussione in questo forum iniziato, visto che verteva già sui puntatori, per chiedere se qualcuno ha una risposta per me. Voglio realizzare il richiamo multiplo mediante LOOP di un FB, che all'interno lavora sui dati di un DB ma che ad ogni suo richiamo agisca su un DB diverso. All'interno dell'FC ho dichiarato un parametro formale "Blocco_dati" di tipo Block_DB e poi nel codice inizio con : // apri blocco dati AUF #Blocco_dati Al richiamo dell'FC in questione però mi riesce solamente di puntare un DB fisso: CALL FC 35 Blocco_dati:=DB35 anzicché poter puntare il DB dinamicamente. Cioé se scrivo : CALL FC 35 Blocco_dati:=[DB_Bit_passo_veneziana] (con "DB_Bit_passo_veneziana" variabile tipo Word) mi dà errore di sintassi. Ho provato a riscrivere in varie maniere ma senza risultato. So che potrei scavalcare il problema entrando nell'FC in questione con una variabile numerica e poi dinamizzando il numero di DB all'interno, ma mi chiedo se la sctrada da me scelta all'inizio sia veramente così riduttiva oppure se invece sto sbagliando qualcosa. Spero di essermi espresso in modo comprensibile Grazie Link al commento Condividi su altri siti More sharing options...
f.plc Inserita: 24 marzo 2014 Segnala Share Inserita: 24 marzo 2014 Dovresti un tipo ANY per I'll parametro DB. Quindi avrai P#db35.dbx0.0 bytes... Link al commento Condividi su altri siti More sharing options...
batta Inserita: 27 marzo 2014 Segnala Share Inserita: 27 marzo 2014 Per aprire un DB indicato in una variabile ci sono due modi: 1) dichiarare una variabile di tipo "Block_DB" e scrivere: AUF "MiaVarBlockDB" 2) dichiarare una variabile di tipo INT e scrivere AUF DB[MiaVarNrDB] Considerando che: 1) non è possibile dichiarare una variabile di tipo Block_DB nell'area TEMP 2) il compilatore (non ne conosco proprio il motivo) accetta la scrittura AUF DB[MiaVarNrDB] se la variabile è dichiarata nell'area TEMP ma non se è dichiarata nell'area IN Si può aggirare il problema dichiarando nelle variabili IN una variabile di tipo INT (es. ID_DB) alla quale si passa il numero del db quando si richiama la funzione. Si dichiara una variabile di tipo INT (es. NrDB) nell'area TEMP. E poi basta scrivere: L ID_DB T NrDB AUF DB[NrDB] Link al commento Condividi su altri siti More sharing options...
JumpMan Inserita: 27 marzo 2014 Segnala Share Inserita: 27 marzo 2014 il compilatore (non ne conosco proprio il motivo) Questa è la risposta dell'aiuto in linea : Tali comandi non sono consentiti per motivi tecnici. C'è un altro modo, non molto ortodosso forse; se lavori con una sola DB puoi aprirla prima di richiamare l'FC Link al commento Condividi su altri siti More sharing options...
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