Vai al contenuto
PLC Forum


Conversione Uint_To_Strg E Data/Ora


max81

Messaggi consigliati

Ciao a tutti,

ho due problemi, il primo riguarda la conversione da un UINT (ma lo stesso vale per Int e USInt) a una Stringa, ad esempio se il valore è 17, nella stringa ho alcuni spazi vuoti all'inizio quindi ' 17', il punto è che devo concatenare diverse stringhe tra di loro senza gli spazi vuoti.

Il secondo problema è il seguente: devo creare due stringhe, una con la data e ora corrente e la seconda con la data di scandeza (+550 giorni rispetto la data corrente), esiste una funzione per convertire la data/ora di sistema (dopo averla letta con RD_LOC_T in una variabile di tipo DTL) in una stringa con formato (dd/MM/yyyy HH:mm:ss)? Oppure devo per forza crearmela da me in SCL creando una sfilza di UINT_TO_STRG e CONCAT, naturalmente risolvendo anche il primo problema ddegli spazi vuoti durante la conversione?

Ringrazio anticipatamente.

Link al commento
Condividi su altri siti


Buanasera,

ho risolto il problema degli spazi, dunque la lunghezza della stringa risultante e pari alla lunghezza (in cifre) massima + 1 del tipo che si vuole convertire, ad esempio, un UINT avra valore massimo 65535, quindi la lunghezza della stringa sarà di 6. Facendo un esempio, se il valore intero da convertire è 17, nella stringa risultante avremo '17' preceduto da 4 spazi vuoti, cioè 'xxxx17' (dove x è lo spazio vuoto.

Se ora consideriamo il tipo UDINT, questo può avere valore massimo di 11 cifre, quindi se convertiamo una variabile di tipo UDINT uguale a 17, nella stringa convertita avremo 17 preceduto da 9 spazi vuoti, cioè 'xxxxxxxxx17'..

Per risolverlo, utilizzando il testo strutturato, ho fatto così:

- converto da stringa in array di char (Strg_to_chars).

- effettuo un FOR elemento per elemento e trovo la posizione dell'elemento dell'array dove iniziano le cifre del valore intero.

- riconverto da array di char in string (Chars_to_strg) ponendo PChar pari alla posizione trovata nel FOR precedente.

Invece per quanto riguarda data e ora mi sono costruito un'altra funzione in SCL che legge l'ora e data di sistema, poi estraggo i vari campi del tipo DTL, quindi giorno, mese, anno, ora, .... converto in stringhe i singoli campi ed effettuo una serie di concatenazioni ottenendo una singola stringa.

Spero che quanto scritto sia chiaro, e che possa aiutare chi ha (ho avrà) i miei stessi problemi.

Modificato: da max81
Link al commento
Condividi su altri siti

  • 6 months later...

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 account

Accedi

Hai già un account? Accedi qui.

Accedi ora
×
×
  • Crea nuovo/a...