Elektroda.pl
Elektroda.pl
X

Search our partners

Find the latest content on electronic components. Datasheets.com
Elektroda.pl
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

Bascom a optymalne parsowanie stringu

MES Mariusz 28 Apr 2008 20:33 1996 7
  • #1
    MES Mariusz
    Level 36  
    Witam.

    Jest zmienna rozkaz zawierająca string składający się z czterech oktetów i kropek, (np. 123.234.213.132) - razem 15 znaków.

    Chcę go teraz sparsować i przypisać zmiennym wartości, już nie znakowe, a liczbowe:

    Zmianna 1 = pierwszy oktet
    Zmianna 2 = drugi oktet
    Zmianna 3 = trzeci oktet
    Zmianna 4 = czwarty oktet

    Jak to zrobić najlepiej, generując możliwie jak najmniejszy kod wynikowy?

    Przeniosłem z Programowanie Ogólne - krzychoocpp
  • #2
    elektryk
    Level 42  
    Najprościej to znak po znaku, jak algorytm napotka cyfrę to mnoży to co ma przez 10 i dodaje cyfrę, jak napotka na kropkę to zwiększa numer operowanej zmiennej.
  • #3
    Balu
    Level 38  
    Jeśli wiesz, że w tym stringu jest TYLKO to, to możesz overlayem zrobić po prostu przepisując i mnożąc... nie wiem, czy jakakolwiek pętla będzie szybsza w tym wypadku:>
  • #4
    crazy_phisic
    VIP Meritorious for electroda.pl
    Polecenia "VAL", "MID", "RIGHT", "LEFT".
  • #6
    elektrofil
    Level 17  
    a jesteś w stanie sobie przerobić program z qbasic'a?
    ile masz tych zmiennych do wyciągnięcia?
    czy separator masz stały czy zmienny?
    i najważniejsze: czy ilość do wyciągnięcia ze stringu jest stała czy zmienna.
    mam taki gotowy do wyciągania ze stringa zawierającego datę, godzine i parę innych wartości.
    oczywiście wszystko przelicza na cyfry.
  • #7
    MES Mariusz
    Level 36  
    elektrofil wrote:
    a jesteś w stanie sobie przerobić program z qbasic'a?
    ile masz tych zmiennych do wyciągnięcia?
    czy separator masz stały czy zmienny?
    i najważniejsze: czy ilość do wyciągnięcia ze stringu jest stała czy zmienna.
    mam taki gotowy do wyciągania ze stringa zawierającego datę, godzine i parę innych wartości.
    oczywiście wszystko przelicza na cyfry.

    Spokojnie, napiszę sobie tą procedurkę w wolnej chwili, ale jeśli masz gotowy kod możesz wrzucić. Oczywiście string jest niezmienny: 15 znaków (4 oktety plus 3 kropki) - zerknij na pierwszy post w temacie.
  • Helpful post
    #8
    elektrofil
    Level 17  
    proszę bardzo. 3 minuty razem z sprawdzeniem.
    Code:

    $regfile = "m162def.dat"
    $crystal = 7372800



    Dim A$ As String * 20
    Dim Temp$ As String * 4
    Dim Zmianna_1 As Byte
    Dim Zmianna_2 as byte
    Dim Zmianna_3 As Byte
    Dim Zmianna_4 As Byte

    A$ = "123.234.213.132"
    Temp$ = Left(a$ , 3 )
    Zmianna_1 = Val(temp$)

    Temp$ = Mid(a$ , 5 , 3)
    Zmianna_2 = Val(temp$)

    Temp$ = Mid(a$ , 9 , 3)
    Zmianna_3 = Val(temp$)

    Temp$ = Mid(a$ , 13 , 3)
    Zmianna_4 = Val(temp$)

    Print Zmianna_1
    Print Zmianna_2
    Print Zmianna_3
    Print Zmianna_4

    End