acquaman Inserito: 4 maggio 2016 Segnala Share Inserito: 4 maggio 2016 Come descritto nell'oggetto, sto cercando di caricare nel puntatore AR1 non il valore contenuto dentro dentro una word, ma l'indirizzo di questa. es: la mia word è la DB1.DBW2, caricare il valore 16 in AR1. Secondo voi è possibile? Grazie Link al commento Condividi su altri siti More sharing options...
batta Inserita: 4 maggio 2016 Segnala Share Inserita: 4 maggio 2016 Semplicissimo: L 16 LAR1 Oppure, sempre per caricare l'indirizzo della seconda word di diverse aree dati: LAR1 P#DBX2.0 // Area DB LAR1 P#DIX2.0 // Area DB di istanza LAR1 P#L2.0 // Area dati locali LAR1 P#E2.0 // Area ingressi LAR1 P#A2.0 // Area uscite Il metodo con P# è più corretto, perché così imposti anche il codice dell'area dati (byte più significativo del puntatore). Se nelle istruzioni che fanno riferimento alle variabili indicate dal puntatore specifichi l'area dati, non è importante che l'area dati sia definita all'interno del puntatore. Ma per un pignolo come me... Link al commento Condividi su altri siti More sharing options...
acquaman Inserita: 4 maggio 2016 Autore Segnala Share Inserita: 4 maggio 2016 Cosi è facile, ma se come parametro in ingresso ad un FC ti do la Word DB1.DBW2 si riesce a a caricare il 16 dal dato DBW2. Mi spiego meglio, voglio passare come parametro di ingresso da un FC la prima word di un array di 10 usate dentro l'FC. In questo progetto questo FC devo usarlo circa 30 volte con array diversi poi diventerà un blocco della mia libreria. Se inserisco come parametro di ingresso l'indirizzo, ogni volta che uso questo FC devo trovare l'indirizzo dell'array, mentre se metto il primo elemento dell'array, con un simbolico ben fatto, quando uso più volte l'FC faccio il primo richiamo, poi copia incollo n volte il richiamo e con il TROVA SOSTITUISCI cambio il numero della stazione e voilà il gioco è fatto. Link al commento Condividi su altri siti More sharing options...
batta Inserita: 4 maggio 2016 Segnala Share Inserita: 4 maggio 2016 L miaVar LAR1 Oppure, potresti passare alla variabile al posto dell'indirizzo del bit il numero della variabile da puntare. Potresti fare così: L miaVar ITD SLD 4 LAR1 Potresti anche passare alla funzione l'intero array (utilizzando il simbolico) come parametro IN/OUT. Oppure un puntatore con l'indirizzo dell'inizio dell'array (sempre con il simbolico). Da non dimenticare, visto che stai parlando di array, che potrebbe essere una buona idea creare una funzione in SCL. Le soluzioni possibili sono parecchie. Per indicarti la strada migliore dovrei capire meglio cosa devi fare. Link al commento Condividi su altri siti More sharing options...
acquaman Inserita: 16 maggio 2016 Autore Segnala Share Inserita: 16 maggio 2016 Tutto questo è chiaro, è il normale utilizzo dei puntatori, la mia domanda, e sicuramente mi spiego male, è se si può caricare nel puntatore non il valore contenuto dentro dentro alla variabile, ma direttamente l'indirizzo della mia variabile. Comunque ho fatto un po di ricerche,ma non ho trovato nulla e non credo si possa fare. Grazie lo stesso. Link al commento Condividi su altri siti More sharing options...
DesmoGiec Inserita: 17 maggio 2016 Segnala Share Inserita: 17 maggio 2016 Ciao, crea un fc dedicato così: L P##POINT LAR1 L W#16#0 L W [AR1,P#0.0] ==I SPB m000 T #NUMDB AUF DB [#NUMDB] m000: L W [AR1,P#4.0] T #ADDRESS la var #point è di tipo pointer nelle in dell'interfaccia la var #address è un int nelle out di interfaccia numdb è una int nell'area temp Richiami il blocco e in point ci "entri" tramite puntatore, tipo p#db1.dbx2.0 Il risultato sarà questo: Link al commento Condividi su altri siti More sharing options...
acquaman Inserita: 18 maggio 2016 Autore Segnala Share Inserita: 18 maggio 2016 Grande, non avevo pensato ad usare il parametro any. Provo grazie 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