acquaman Inserito: 28 luglio 2009 Segnala Share Inserito: 28 luglio 2009 Ciao a tutti,sto diventando matto dietro ad un blocco, mi spiego meglio: devo fare un confronto tra 2 stringhe uguali dentro a 2 DB, i dati sono regolarmente dichiarati cone stringhe ed hanno lo stesso numero di caratteri.Per confrontare queste stringhe di 23 caratteri sono andato nella libreria IEC ed ho preso l'FC10 "EQ_STRNG", vado nell'. e mi dice di inserire come variabili in ingresso dell DB o delle variabili locali formattate come stringhe, e fin qui tutto bene, ma quando provo ad inserire il nome delle variabili non c'è verso, ne dandogli l'indirizzo, ne passandolo come parametro any (P#DB80.DBX104.0 BYTE 25), ne attraverso la scelta simbolico in KOP non riesco a fargli digerire la cosa.Questa funzione l'avevo già usata ed ero diventato altrettano scemo con lo stesso problema, poi ero riuscito, ma non ricordo più come.Qualc'uno sa come inserire queste variabili come parametri in ingresso senza vedere quel maledetto blocco in rosso? Link al commento Condividi su altri siti More sharing options...
floppydisco Inserita: 29 luglio 2009 Segnala Share Inserita: 29 luglio 2009 Al FC10 devi passare una vsriabile dichiarata come tipo STRING (temp, o stat o in o out). Puoi costruirtela o con gli indirizzi locali (io farei un block_move da DB80..... a LB xx ....) Link al commento Condividi su altri siti More sharing options...
Gapo Inserita: 29 luglio 2009 Segnala Share Inserita: 29 luglio 2009 magari dico un banalità ma... non fai prima a confrontare direttamente tu i vari byte? Eventualmente con un loop, se la stringa è lunga, o confrontando direttamente Word o DoubleWord... al limite, se è cosa che fai spesso, puoi fartela tu una funzione, così la prossima volta non diventi più scemo ed eviti di perdere tempo come sta succedendo oraciao Link al commento Condividi su altri siti More sharing options...
TravelMen Inserita: 29 luglio 2009 Segnala Share Inserita: 29 luglio 2009 Ciao, io farei un blocco come suggerito da Gapo, nel senso che se ho definito una variabile ti tipo STRING, so che tale variabile è composta in questo modo, il primo byte (byte0) contiene la lunghezza (max256) nel secondo byte (byte1) è contenuto la lunghezza effettiva della stringa memorizzata, per tanto con un semplice confronto del secondo byte già faccio una bella discriminazione, nel caso fossero uguali allora procedo con un LOOP, come suggerito da Gapo (loop di n_iterazioni = String.byte1) ed alla prima differnza esco alzando una memoria che mi dice che sono diverse.Buon divertimento Link al commento Condividi su altri siti More sharing options...
acquaman Inserita: 31 luglio 2009 Autore Segnala Share Inserita: 31 luglio 2009 (modificato) Si, posso fare un confronto byte a byte ma perchè se esiste una funzione che lo fa.Per floppydisco in una aplicazione passata ero riuscito a fargli digerire direttamente la DB formattata come strinda, perchè adesso non riesco? Sbaglio qualcosa nel inserire l'indirizzo della DB. Modificato: 31 luglio 2009 da acquaman Link al commento Condividi su altri siti More sharing options...
Gapo Inserita: 31 luglio 2009 Segnala Share Inserita: 31 luglio 2009 (modificato) Si, posso fare un confronto byte a byte ma perchè se esiste una funzione che lo fa.Parlando in generale:-Prima di tutto perché tra farla e testarla ci aversti messi si e no un'oretta, mentre così hai perso molto più tempo (e, da quel che vedo, non sono sicuro che tu abbia risolto...)-Poi perché facendola tu hai il pieno controllo di quello che stai facendo, la puoi modificare come vuoi, ed eventualmente te la puoi ottimizzare per gli usi specifici di cui puoi avere bisogno (quella "preconfezionata" è per forza di cose "generica")-Ultimo, ma non meno importante, perché ti stimola a ragionare, e in un certo senso ha anche valenza didattica.Questo è il mio parere, che riflette il mio modo di lavorare. Ovvio che poi non mi metto a riscrivere funzioni come la AG_SEND (anche se qualche "importante" funzione Siemens l'ho bypassata per fare qualcosa di più ottimizzato), però se sono cose semplici, piuttosto che sbatterci la testa inutilmente e perdere tempo, faccio da me.ciao Modificato: 31 luglio 2009 da Gapo Link al commento Condividi su altri siti More sharing options...
acquaman Inserita: 1 agosto 2009 Autore Segnala Share Inserita: 1 agosto 2009 Sono d'accordo che per fare una routine del genere ci va un'oretta, ma mi gira le scatole perdermi per un piccolo problema del genere.Se non ne veno a capo, me la rifaccio, ma se riesco a capire dove sbaglio ho imparato comunque quacosa, anzi di più che non a fare una stupida ruotine di confronto.Comunque non ho più avuto tempo di provare appena posso ricomincio. Link al commento Condividi su altri siti More sharing options...
Gapo Inserita: 3 agosto 2009 Segnala Share Inserita: 3 agosto 2009 Sono d'accordo che per fare una routine del genere ci va un'oretta, ma mi gira le scatole perdermi per un piccolo problema del genere.E' proprio perché mi girano le scatole perdere tempo per problemi del genere che spesso le routine me le faccio da me... in ogni caso, se dici di averlo già usato in passato, perché non recuperi semplicemente il progetto dove l'hai utilizzato?L'unica cosa che ti posso dire, da una prova veloce, è che accetta le variabili stringa definite localmente, ma se funziona "solo" in questo modo non mi pare una grande trovata, perché ogni volta che devi fare un confronto ti tocca trasferire #n word, perdendo inutilmente tempo ciclo...Resto della mia idea: funzione ac-hoc dove in ingresso, invece di dargli le stringhe, gli dai 4 parametri che identificano la posizione delle stringhe (DB e DBB di inizio), e in usicita ti restituisce TRUE se sono uguali.ciao Link al commento Condividi su altri siti More sharing options...
acquaman Inserita: 7 agosto 2009 Autore Segnala Share Inserita: 7 agosto 2009 Con un po di calma, e aprendo solo l'FC interessato, con l'inserimento simbolico in kop sono riuscito subito, risolto.Grazie a tutti 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