ricobert Inserito: 18 maggio 2004 Segnala Inserito: 18 maggio 2004 Prima volta che intervengo per chiedere due cose che magari è banale.1)E' possibile in un programma Step7 fare un ciclo for...next utilizzando componenti di un array, tipo:for i =1 to 10somma=somma+ arraynext i2)come si fa ad utilizzare un puntatore per accedere a componenti di un DB?grazie
Federico Milan Inserita: 18 maggio 2004 Segnala Inserita: 18 maggio 2004 (modificato) In Step 7 esiste una infinità di modi per accedere a parmatri puntati. non dici se usi AWL o SCL ...Comuque ad esempio in AWL puoi accedere in questo modoL 10 T MW20 AUF DB[MW20] L P#2.0 T MD10 L DBW[MD10] <---- Punti alla 2 word del DB 10 Se iteri ottieni quello che vuoi ....oppure LOOP: L #_indice_Array + -1 L L#2 *D SLD 3 LAR1 AUF DB10 L DBW [AR1,P#0.0] L #_indice_Array + 1 T #_indice_Array L 10 <=I SPB LOOP questo codice dovrebbe scandire un array da 10 elementi dentro la DB10ciao Modificato: 18 maggio 2004 da Federico Milan
beppeconti Inserita: 18 maggio 2004 Segnala Inserita: 18 maggio 2004 Se usi SCL puoi praticamente accedere agli array nel modo da te descritto. Dichiari l'array quando crei la DB e poi vi accedi con le istruzioni "for next" come da te descritto anche se con sintassi leggermente diversa.Se usi AWL basta che segui le istruzioni sopra riportate da Federico Milan.CIAO
walterword Inserita: 19 maggio 2004 Segnala Inserita: 19 maggio 2004 se il ciclo lo costruisciti tu , come giustamente ti ha suggerito federico,piu che un for -next e' un while do perche almeno una volta lo esegui visto che il controllo e' alla fine poi con un salto all'incontrario torni indietro e via dicendo .se usi awl c'e' la possibilita di eseguire anche un distributore di salti con l'istruzione SPL.se invece usi scl ti togli dall'impiccio il linguaggio assemble e programmi in un linguaggio tendente al pascal .l'unica menata , almeno io uso scl 5.1 , e' che in fase di debug o meglio dire online , con scl diventa un po una tortura , cioe e' lento , anche se con l'ultima release e' migliorato molto anche l'editor di testo.rimane sempre il fatto che poi se il progetto lo dai in mano a chi lo acquista e giustamente non spende soldi per scl , quindi ti fanno le paranoie che lo vogliono in awl o kop.in kop pero i puntatori ed altro non sono supportati .io generalmente uso scl se devo fare calcoli o cose particolarmente indicizzate , cicli annidati ect.ciaowalter
suleima Inserita: 19 maggio 2004 Segnala Inserita: 19 maggio 2004 Una cosa importante, però, è che SCL è un software opzionale, non appartiene alla "base"dello Step 7!!!Quindi è sempre disponibile AWL.
ricobert Inserita: 20 maggio 2004 Autore Segnala Inserita: 20 maggio 2004 RINGRAZIO VIVAMENTE TUTTI PER LE INFORMAZIONI.MI AVETE APERTO UN PO DI FINESTRE MOLTO UTILI (LAVORATIVAMENTE PARLANDO)ENRICO
Supertony Inserita: 3 luglio 2004 Segnala Inserita: 3 luglio 2004 Io creo spesso piccole parti di codice AWL completamente portabili da un progetto all'altro in quanto realizzate completamente con variabili Temp e parametri di ingresso.... è molto comodo, quindi consiglio di evitare di usare MW etc per simili usi.Un'altro consiglio è questo: esiste un'istruzione MOLTO POCO USATA QUANTO IMPORTANTE: "L DBLG"Con questa istruzione, viene caricata in ACCU1 la lunghezza in bytes del blocco dati globale correntemente aperto (DILG è invece l'istruzione per la lettura della lunghezza in bytes del blocco dati di istanza aperto)All'inizio di un ciclo per la scansione di un DB, è MOLTO utile usare questa istruzione per leggere di quanti bytes è composto il DB, per poi eventualmente dividere per 2 il valore ottenuto nel caso di decida di lavorare con WORD. Il dato ottenuto sarà quello da caricare un ACCU1 prima dell'istruzione LOOP; in questo modo verranno eseguite tante scansioni quante sono le word del blocco dati.....tutto questo.... PERMETTE DI CAMBIARE LE DIMENSIONI DEL BLOCCO DATI SENZA PREOCCUPARSI PIU' DEL CODICE!!!
Andrea_unipd Inserita: 8 gennaio 2010 Segnala Inserita: 8 gennaio 2010 e se devo settare i primi n BIT (non BYTE) di un datablock come lo devo incrementare il puntatore? é corretto così? S DBX [#Generic_Pointer_1] L P#0.1 L #Generic_Pointer_1 +D T #Generic_Pointer_1
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