thgnss Inserito: 26 marzo 2013 Segnala Inserito: 26 marzo 2013 Ho definito un tipo di dato UDT_1 di 18 byte. Nella DB1 ho 4 elementi di tipo UDT_1: obj1, obj2, obj3, obj4. FC1 è una funzione che come argomento in ingresso IN prende un oggetto di tipo UDT_1. In OB1 posso richiamare FC1 in questo modo: call FC1 i := DB1.obj1 Nella chiamata a FC1 posso sostituire DB1.obj1 con una notazione a puntatore? Di fianco l'editor scrive automaticamente P#DB1.DBX0.0, ma se provo a scriverlo direttamente nell'argomento mi esce l'errore "Il formato della costante del tipo di dati POINTER non è compatibile con il tipo formale UDT_1 del paramentro.formale" Lo scopo della domanda è che vorrei richiamare la funzione in un loop per tutti e 4 gli elementi della db e nella scrittura di FC1 mi interessa che in ingresso prenda un UDT_1 in modo da poter accedere comodamente e in maniera leggibile ai suoi campi in maniera simbolica. Grazie in anticipo. Saluti
antoniaz Inserita: 27 marzo 2013 Segnala Inserita: 27 marzo 2013 (modificato) Ciao, infatti usando il puntatore il tipo della variabile che tenti di passare non è uguale a quella che hai definito per l'ingresso (uno e un pointer e l'altro UDT_1). Ti consiglio di usare una variabile di appoggio di tipo UDT_1 per passare il parametro di input a FC1. In OB1 (o comunque prima di richiamare FC1) puoi usare il puntatore od altri strumenti per caricare nella variabile di appoggio il dato relativo all'indice corrente. Ciao Loris Modificato: 27 marzo 2013 da antoniaz
thgnss Inserita: 27 marzo 2013 Autore Segnala Inserita: 27 marzo 2013 Grazie Loris, quindi se ho ben capito, quello che tu suggerisci è di definire una variabile di tipo UDT_1 in OB1 e all'interno del loop copiare ogni volta, ad esempio tramite una BLKMOVE, l'intero contenuto di obj_x nella variabile d'appoggio? Grazie ancora Saluti
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