Hirdetés

Új hozzászólás Aktív témák

  • Szirty

    őstag

    válasz bodnarg #5192 üzenetére

    Helló bodnarg!

    Itt egy "gyalogos" megoldás a problémára:

    FUNCTION FC 1 : VOID
    TITLE =
    AUTHOR : Szirty
    VERSION : 0.1


    VAR_INPUT
    Num : DINT ; //Bemenő érték
    END_VAR
    VAR_TEMP
    StrTMP0 : STRING [254 ]; //String átmeneti változó
    StrTMP1 : STRING [254 ]; //String eredmény
    rv : INT ; //Visszatérési érték
    N : CHAR ; //'0'
    END_VAR
    BEGIN
    NETWORK
    TITLE =Nulla karakter

    L '0';
    T #N;
    NOP 0;
    NETWORK
    TITLE =StrTMP0 feltöltése '0' karakterekkel

    CALL SFC 21 (
    BVAL := #N,
    RET_VAL := #rv,
    BLK := #StrTMP0);
    NOP 0;
    NETWORK
    TITLE =A dint átalakítása stringgé

    CALL FC 5 (
    I := #Num,
    RET_VAL := #StrTMP0);
    NOP 0;
    NETWORK
    TITLE =Az eredmény string létrehozása

    L P##StrTMP0;
    LAR1 ;
    L P##StrTMP1;
    LAR2 ;
    L 12;
    T B [AR2,P#1.0];
    L B [AR1,P#3.0];
    T B [AR2,P#2.0];

    L '.';
    T B [AR2,P#3.0];

    L B [AR1,P#4.0];
    T B [AR2,P#4.0];
    L B [AR1,P#5.0];
    T B [AR2,P#5.0];
    L B [AR1,P#6.0];
    T B [AR2,P#6.0];
    L B [AR1,P#7.0];
    T B [AR2,P#7.0];

    L '.';
    T B [AR2,P#8.0];

    L B [AR1,P#8.0];
    T B [AR2,P#9.0];
    L B [AR1,P#9.0];
    T B [AR2,P#10.0];
    L B [AR1,P#10.0];
    T B [AR2,P#11.0];

    L '.';
    T B [AR2,P#12.0];

    L B [AR1,P#11.0];
    T B [AR2,P#13.0];

    END_FUNCTION

    #Num DINT paraméterben bemegy az érték és #StrTMP1 temp változóban képződik.
    Esetleg indulj ki ebből (teszteld alaposan).

Új hozzászólás Aktív témák