marco_pal Inserito: 22 giugno 2004 Segnala Share Inserito: 22 giugno 2004 Mi trovo nella condizione di immagazzinare dati giornalieri ora per ora quindi pensavo di usare un ARRAY [0..23]indicizzandolo con la variabile INT ORA (che è un prograssivo da 0 a 23), ma in KOP non mi accetta la struttura indicizzata, è giusto o sto sbagliando io??GrazieMarco Link al commento Condividi su altri siti More sharing options...
walterword Inserita: 22 giugno 2004 Segnala Share Inserita: 22 giugno 2004 bravo e' giusto in Kop non si puo indicizzare ne tanto meno utilizzare i potenti puntatori quindi devi scrivere il codice il awl oppure utilizzare un pacchetto aggiuntivo di linguaggio ad alto livello tendente al pascal che si chiama SCL.ti do un consiglio per la tua applicazione , utilizza una matrice , ovvero un array bidimensionale sul fronte di salita del cambio ora incrementi di 1 l'indice della "cella di memoria " che memorizza l'ora.sul fronte si salita di questo indice che vale 23 ( se parti da zero ) incrementi l'altro indice che punta alle giornate index_ora:int;index_giorni:int;dati:array[index_ora,index_giorni] // dichiarazione matrice bidimensionale mem:bool; //memoria per il fronte come si usava quando non esisteva la funzione fpmem2:bool;begin if M0.0 and not mem then index_ora:=index_ora+1; mem:=true;end_if;if index_ora>= 23 and not mem2 then index_giorni:=index_giorni+1; index_ora:=0; mem2:=true;end_if;if not m0.0 then // resetto il bit che memorizza lo stato di fronte di salita mem:=false;end_if;if index_ora<23 then mem2:=false;end_if;//scrivere o accedere ad un giorno alla tal ora //giorno =3 (il giorno 3 del mese )//ora=10 (alle ore 10 di mattina) dati[3,10]:=100;//crei di tutto questo una funzione dove chiedi in ingresso il giorno del mese e l'ora come interi // e li elabori per esmpio cosi var_inputgiorno:int;ora:int;end_varvar_outputdato:int;end_var;begin dato:=dati[giorno,ora];end_function ........dovrai poi implementare la lettura dell'orologio hw , per scrivere i valori nella matrice e con un po di fantasia potrai fare un sacco di belle cose ovviamente tutto lo puoi scrivere anche in awl , progettando per bene gli indici ed i puntatori non e' difficle , l'importante e' conoscere tali tecnologie e fare tante prove e studiare e fare prove e studiareciao e buon divertimento walter Link al commento Condividi su altri siti More sharing options...
walterword Inserita: 22 giugno 2004 Segnala Share Inserita: 22 giugno 2004 (modificato) se poi invece vai sul serio , allora ti fai un bel programmino su di un pc come supervisore e memorizzi direttamente su file XMl o database access tutti i tuoi dati oppure fai una chiamata dal pc e ti porti via tutta la matrice e la salvi mel pc ciaowalterp.s. per non diventare pazzo con i giorni del mese che a quanto pare cambiano di mese in mese fai la matrice di 31 giorni per 24 ore i giorni che non esisteranno ti daranno il valore 0 nella cella dedicata Modificato: 22 giugno 2004 da walterword Link al commento Condividi su altri siti More sharing options...
walterword Inserita: 22 giugno 2004 Segnala Share Inserita: 22 giugno 2004 (modificato) Ovviamente la matrice 32x24 immagazzina i dati di ogni ora per un mesese dovrai tenere in considerazione i dati di un anno dovrai creare un'ennesima struttura per esempio di tipo array[1..12] of struct in questo caso l'array finale , che pero e' la base di tutto , sara di tipo non primitivo bensi di tipo della struttura creata precedentemente composta dalla matrice .quindi poi potrai accedere ai dati cosi :mesi:array[1..12] of tuastruttura ;mesi[6].dati[giorno,ora]:=10;//nel mese di giugno , il giorno che passerai come parametro alla funzione , e all'ora che passerai sempre alla funzione che gestira tutto il discorso .questo codice sorgente awl e' il tuo caso DATA_BLOCK DB 143TITLE =VERSION : 0.1 STRUCT Mesi : ARRAY [1 .. 12 ] OF STRUCT dati : ARRAY [1 .. 31, 0 .. 23 ] OF INT ; END_STRUCT ; END_STRUCT ; BEGIN Mesi[1].dati[1, 0] := 0; Mesi[1].dati[1, 1] := 0; Mesi[1].dati[1, 2] := 0; Mesi[1].dati[1, 3] := 0; Mesi[1].dati[1, 4] := 0; Mesi[1].dati[1, 5] := 0; Mesi[1].dati[1, 6] := 0; Mesi[1].dati[1, 7] := 0; Mesi[1].dati[1, 8] := 0; Mesi[1].dati[1, 9] := 0; Mesi[1].dati[1, 10] := 0; Mesi[1].dati[1, 11] := 0; Mesi[1].dati[1, 12] := 0; Mesi[1].dati[1, 13] := 0; Mesi[1].dati[1, 14] := 0; Mesi[1].dati[1, 15] := 0; Mesi[1].dati[1, 16] := 0; Mesi[1].dati[1, 17] := 0; Mesi[1].dati[1, 18] := 0; Mesi[1].dati[1, 19] := 0; Mesi[1].dati[1, 20] := 0; Mesi[1].dati[1, 21] := 0; Mesi[1].dati[1, 22] := 0; Mesi[1].dati[1, 23] := 0; Mesi[1].dati[2, 0] := 0; Mesi[1].dati[2, 1] := 0; Mesi[1].dati[2, 2] := 0; Mesi[1].dati[2, 3] := 0; Mesi[1].dati[2, 4] := 0; Mesi[1].dati[2, 5] := 0; Mesi[1].dati[2, 6] := 0; Mesi[1].dati[2, 7] := 0; Mesi[1].dati[2, 8] := 0; Mesi[1].dati[2, 9] := 0; Mesi[1].dati[2, 10] := 0; Mesi[1].dati[2, 11] := 0; Mesi[1].dati[2, 12] := 0; Mesi[1].dati[2, 13] := 0; Mesi[1].dati[2, 14] := 0; Mesi[1].dati[2, 15] := 0; Mesi[1].dati[2, 16] := 0; Mesi[1].dati[2, 17] := 0; Mesi[1].dati[2, 18] := 0; Mesi[1].dati[2, 19] := 0; Mesi[1].dati[2, 20] := 0; Mesi[1].dati[2, 21] := 0; Mesi[1].dati[2, 22] := 0; Mesi[1].dati[2, 23] := 0; Mesi[1].dati[3, 0] := 0; Mesi[1].dati[3, 1] := 0; Mesi[1].dati[3, 2] := 0; Mesi[1].dati[3, 3] := 0; Mesi[1].dati[3, 4] := 0; Mesi[1].dati[3, 5] := 0; Mesi[1].dati[3, 6] := 0; Mesi[1].dati[3, 7] := 0; Mesi[1].dati[3, 8] := 0; Mesi[1].dati[3, 9] := 0; Mesi[1].dati[3, 10] := 0; Mesi[1].dati[3, 11] := 0; Mesi[1].dati[3, 12] := 0; Mesi[1].dati[3, 13] := 0; Mesi[1].dati[3, 14] := 0; Mesi[1].dati[3, 15] := 0; Mesi[1].dati[3, 16] := 0; Mesi[1].dati[3, 17] := 0; Mesi[1].dati[3, 18] := 0; Mesi[1].dati[3, 19] := 0; Mesi[1].dati[3, 20] := 0; Mesi[1].dati[3, 21] := 0; Mesi[1].dati[3, 22] := 0; Mesi[1].dati[3, 23] := 0; Mesi[1].dati[4, 0] := 0; Mesi[1].dati[4, 1] := 0; Mesi[1].dati[4, 2] := 0; Mesi[1].dati[4, 3] := 0; Mesi[1].dati[4, 4] := 0; Mesi[1].dati[4, 5] := 0; Mesi[1].dati[4, 6] := 0; Mesi[1].dati[4, 7] := 0; Mesi[1].dati[4, 8] := 0; Mesi[1].dati[4, 9] := 0; Mesi[1].dati[4, 10] := 0; Mesi[1].dati[4, 11] := 0; Mesi[1].dati[4, 12] := 0; Mesi[1].dati[4, 13] := 0; Mesi[1].dati[4, 14] := 0; Mesi[1].dati[4, 15] := 0; ..... Mesi[12].dati[31, 23] := 0; END_DATA_BLOCKcrea una sorgente awl e copia quanto scritto sopra , ricordandoti di mettere al posto dei puntini la parte rimanente(magari fallo con excel in automatico )poi dal menu fai compila e nella cartella blocchi troverai il tuo bel db , all'interno clicchi su visualizza->dati e sei apposto se non vuoi utilizzare una matrice puoi utilizzare sempre un array di mesi , che contiene un'array di giorni da 1..31 che a sua volta contiene un array di ore da 0..23in questo modo :DATA_BLOCK DB 143TITLE =VERSION : 0.1 STRUCT Mesi : ARRAY [1 .. 12 ] OF STRUCT giorni : ARRAY [1 .. 31 ] OF STRUCT ora : ARRAY [0 .. 23 ] OF INT ; END_STRUCT ; END_STRUCT ; END_STRUCT ; BEGIN Mesi[1].giorni[1].ora[0] := 0; Mesi[1].giorni[1].ora[1] := 0; Mesi[1].giorni[1].ora[2] := 0; .................................... Mesi[12].giorni[31].ora[23] := 0; END_DATA_BLOCKti ho scritto in sorgente awl , se lo sai fare dallo step7 e' piu veloce comunque ricordat5i che le sorgenti sono uno strumento potente di step7 e veloce .per esempio in awl puoi fare cosi :L 100T DB_Dati.Mesi[1].giorni[1].ora[2] //dbxx.struttura_principale.struttura secondaria.sottostruttura .e' un modo interessante per rendere i dati piu piacevoli da vedere alla fine e' sempre un 'area di memoria che parte da DB143.dbw0 fino a DB143.DBW17854il tutto scritto in 3 minuti quindi ti ho dato due idee , vedi tu piu di cosi io non so cosa fare .nel primo caso la matrice e' tridimensionale composta da 3 vettori (mesi, giorni e ora)ciao walterp.s. una volta sincronizzato l'orologio ti bastera prendere l'ora e ad ogni cambio incrementare l'indice dell'orae via dicendo con il giorno ed il mesi nell 'anno , tutto viene da solo ed automatico se poi vuoi immagazzinare i dati di anni basta implementare aldi sopra di tutto un array da anni[1..100] di tipo struttura ed accodarci tutto il resto in ordine gerarchico come il tempo ci insegnaquindi struttura quadridimensionale Modificato: 22 giugno 2004 da walterword Link al commento Condividi su altri siti More sharing options...
marco_pal Inserita: 23 giugno 2004 Autore Segnala Share Inserita: 23 giugno 2004 Ti ringrazio di tutto, sei un grande.Marco Paletti Link al commento Condividi su altri siti More sharing options...
walterword Inserita: 23 giugno 2004 Segnala Share Inserita: 23 giugno 2004 buon divertimento ciao walter 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