miemer Inserito: 10 dicembre 2004 Segnala Inserito: 10 dicembre 2004 Buongiorno a tutti.Vorrei chiedervi se è possibile sostituire l'indice di un array con una variabile.Esempio:L 3T #TEMPL ...ARRAY[TEMP]T #FORMULAquesto mi servirebbe anche per poter accegnare l'indice di un array come IN di un FC che a sua volta richama l'array interessato... spero abbiate capito!
Pasto Inserita: 10 dicembre 2004 Segnala Inserita: 10 dicembre 2004 Tempo fà ho fatto delle prove al riguardo ma non ci sono riuscito...Non credo che si possa fare, infatti sono stato costretto a "indicizzare" il tutto...CiaoRic
miemer Inserita: 10 dicembre 2004 Autore Segnala Inserita: 10 dicembre 2004 Stò leggendo in giro per il forum e qualcosa ho trovato, ma tutto riferito alle db.Qualcuno riesce a farmi un esempio con un array all'interno di un fc?
TRUNC Inserita: 10 dicembre 2004 Segnala Inserita: 10 dicembre 2004 Vi confermo che con S7 non si può utilizzare una variabile come indice quando si accede ad un array... Neanch'io, quando me lo hanno detto, volevo crederci, ma è proprio così... Un vecchio proverbio recita: Il diavolo fa le pentole ma non i coperchiMi sembra che calzi a pennello con S7, non credete?
miemer Inserita: 10 dicembre 2004 Autore Segnala Inserita: 10 dicembre 2004 Incredibile...Quindi l'unica soluzione è comperare SCL?
miemer Inserita: 10 dicembre 2004 Autore Segnala Inserita: 10 dicembre 2004 Quindi, una stringa del tipo:L 3T #PROVAU DB6.SILO[PROVA].ABILITAZIONEè impensabile? Che soluzione si potrebbe adottare?Ho 35 sili, ognuno con una ventina di parametri (interi, booleani, timer...) come posso creare un FC standard da poter utilizzare 35 volte???
Federico Milan Inserita: 10 dicembre 2004 Segnala Inserita: 10 dicembre 2004 U DB6.SILO[PROVA].ABILITAZIONEè impensabile? Che soluzione si potrebbe adottare?Ho 35 sili, ognuno con una ventina di parametri (interi, booleani, timer...) come posso creare un FC standard da poter utilizzare 35 volte???Oltre a essere impensabile è fuori posto ...comuque lo si fa con estrema facilità:devi indicizzare i tuoi datim e visto che hai usato una struttura la cosa è banalissima:un esempio banale banale: L #Indice // Indice array + -1 // L #Dimensione // Dimensione struttura array *D // SLD 3 // trasformo il tutto in una sorta di puntatore ... LAR1 // a questo punto posso fare quello che voglio AUF DB_Dati L DBW [AR1,P#0.0] // dato sulla word offset 0 L DBB [AR1,P#28.0] // dato sul byte offset 28 U DBX[AR1,P#23.1] // bit a offset 23.1 Come vedi è banale e molto veloce ... se hai problemi contattami in privato, ... ciao
FabioS Inserita: 11 dicembre 2004 Segnala Inserita: 11 dicembre 2004 Ma stiamo parlando di Step7 ??La soluzione proposta da Federico è corretta (per comodità uso anch'io sempre i puntatori), ma, sempre che non abbia frainteso il problema, l'indice di un array può benissimo essere una variabile interna/esterna.Deve però essere una DWORD ed il dato contenuto formattato come puntatore.Esempio:L 3T #TEMPL ...ARRAY[TEMP]T #FORMULAIl tuo esempio andrebbe modificato come segue:L P#3.0T #TEMP dove TEMP è dichiarata DWORDOPN DB1L DBW[#TEMP] ... L MW[#TEMP] ... L EW[#TEMP] o messo un esempio praticoT #FORMULASe ti servono ulteriori spiegazioni fammi sapere
miemer Inserita: 11 dicembre 2004 Autore Segnala Inserita: 11 dicembre 2004 Grazie a tutti. mi siete stai utilissimi avendomi fatto risparmiare una montagna di lavoro
rddiego Inserita: 13 dicembre 2004 Segnala Inserita: 13 dicembre 2004 Per il proverbio di Trunc, non si scrive così se no dov'è il senso (o doppio senso)?Il Diavolo fa le pentole, Manon i coperchi. (Manon è un personaggio, un essere, uno insomma)
FabioS Inserita: 15 dicembre 2004 Segnala Inserita: 15 dicembre 2004 Devo fare una rettifica a quello che ho detto in precedenza.Avevo frainteso in effetti la questione, non avevo capito che si trattava di array di dati locali.La soluzione che ho proposto quindi non può funzionare se non lavorando con array di dati dichiarati in DB o per accesso indiretto ad altri dati, comunque non locali (L).
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