cagliostro Inserito: 22 settembre 2007 Segnala Share Inserito: 22 settembre 2007 Un saluto a tutti prima di esporvi il mio problema.Ho realizzato una funzione che però vorrei rendere più snella da un punto di vista della programmazione magari facendo ricorso all'uso dei puntatori, ho provato a fare qualcosa in questo senso,ma fino ad ora complice la mia scarsa conoscenza sull'uso dei puntatori non sono riuscito ad ottenere quello che volevo.La cosa che vorrei reralizzare è la seguente:Al rilevamento di ogni rottura o anomalia del materiale, devo memorizzare su di una DB lo spazio espresso in mt di dove si è verificato il problema, quindi ho realizzato un contatore il quale incrementandosi di volta in volta in funzione del numero delle rotture, dovrebbe andare a scrivere partendo dalla prima word (DBW0) la posizione (valore che conosco) di dove si è verificata la prima rottura e così via.Esempio1 rottura ===>>>> valore in mt su DBW02 rottura ===>>>> valore in mt su DBW23 rottura ===>>>> valore in mt su DBW4il tutto per una gestione massima di 35 eventuali rotture o anomalie del prodotto. Come accenato pocanzi la cosa è stata realizzata, ma se fosse possibile vorrei gestirla in modo differente appunto attraverso l'uso di puntatori.E questa sarebbe la prima funzione da realizzare.A questo punto una volta che il processo di lavorazione è concluso, su informazione di bobina scaricata bisogna dare un report all'operatore sulla posizione delle rotture avvenute, ma questa volta partendo dal lato dello svolgimento della bobina.Ovvero se avvolgendo il prodotto ho rilevato la prima anomalia sull DBW0 e così via, ora svolgendo il prodotto la prima rottura rilevata sarà l'ultima e l'ultima diverrà la prima, dovrei quindi prendere tutti i valori presenti nel DB DBW0 etc. etc. e metterli su di un'altro DB dove vengono invertitiAnche in questo caso pensavo di fare ricorso ad una funzione con i puntatori.Gentilmente qualcuno avrebbe qualche esempio da passarmi, ho cercato anche nel forum, ma probabilmente causa la mia scarsa esperienza nell'uso dei puntatori gli esempi trovati non mi sembravano riconducibili al mio caso oppure non gli ho interpretati correttamente.Ringraziandovi anticipatamente Saluti e buon fine settimanaCagliostro Link al commento Condividi su altri siti More sharing options...
cisio Inserita: 22 settembre 2007 Segnala Share Inserita: 22 settembre 2007 mi piacerebbe vedere come hai fatto senza puntatori... questo è un esempio di come andare a scrivere nella tabella:// MW0 = indice posizione nell'array da 0 al numero che vuoi tu// #PUNTATORE = variabile locale di formato DWORD// MW100 = dato da salvareL MW0L 2*D // moltiplica per la lunghezza in byte di ogni elemento dell'arraySLD 3 // moltiplica per 8T #PUNTATOREL MW100AUF DB_TABELLAT DBW[#PUNTATORE]per la teoria su come è fatto il formato dei puntatori guarda nella documentazione in linea di step 7buon lavoro Link al commento Condividi su altri siti More sharing options...
cagliostro Inserita: 22 settembre 2007 Autore Segnala Share Inserita: 22 settembre 2007 Grazie cisio per il tuo aiuto,nel pomeriggio proverò ad adattare secondo la mia esigenza l'esempio da te suggerito. Dopodichè dovrò comunque pensare di come risolvere sempre utilizando puntatori o qualche funzione più snella il secondo problema sottoposto.Mi dicevi che saresti curioso di sapere come ho realizzato la prima cosa senza ricorrere all'uso dei puntatori. beh ad ogni rilevamento del anomalia vado ad incrementare un contatore con la classica istruzione ADD I soomando la variabile su se stessa ed incrementandola di 1 ad ogni rilevamento dell'anomalia.Fatto questo sempre ad ogni rilevamento anomalia, vado a confrontare il valore del contatore con una costante 1-2-3-4-5-6-7-8 etc. etc.Quando il contenuto del contatore soddisfa la costante di comaprazione, allora vado a fare il MOVE del valore in metri che in quel momento ho quando rilevo il difetto o la rottura nel DW0 ...1....2... etc, etc, Per cui la cosa come dicevo funziona certamente non è il massimo dell'eleganza specie in fatto di occupazione della memoria perchè per gestire 35 anomalie devo fare altrettanti segmenti che effettuano la comaprazione ed il move sulla WORD interessata.Grazie ancora e se ti venisse in mente qualche spunto per il secondo problema......... i consigli sono sempre ben accetticiao da Cagliostro Link al commento Condividi su altri siti More sharing options...
cisio Inserita: 22 settembre 2007 Segnala Share Inserita: 22 settembre 2007 ciao cagliostro, era solo una battuta, è ovvio che dovevi aver fatto 35 comparazioni e altrettanti move differentiper il secondo problema, riutilizzi lo stesso metodo per crearti un puntatore alla tabella di origine e uno alla tabella di destinazioneAUF DB_TABELLA_1L DBW[#PUNTATORE_1]AUF DB_TABELLA_2T DBW[#PUNTATORE_2]e ripeti questa operazione in loop modificando il valore dei puntatori ad ogni iterazione, per tante volte quante ne hai bisognociao Link al commento Condividi su altri siti More sharing options...
busanela Inserita: 22 settembre 2007 Segnala Share Inserita: 22 settembre 2007 Ciao a tutti,nel sito della Siemens,quì ,c'è qualche cosa che mi pare possa fare al caso tuo; c'è pure un download, anche se probabilmente da adattare! Link al commento Condividi su altri siti More sharing options...
cagliostro Inserita: 23 settembre 2007 Autore Segnala Share Inserita: 23 settembre 2007 Per busanela e cisioAncora grazieSaluti Cagliostro 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