Как парсить строки?

Тема в разделе "WASM.BEGINNERS", создана пользователем pilulkin, 2 дек 2008.

  1. pilulkin

    pilulkin New Member

    Публикаций:
    0
    Регистрация:
    2 дек 2008
    Сообщения:
    7
    Требуется получить список локальных групп
    сделал так:
    Код (Text):
    1. .386
    2. .model flat, stdcall
    3. option casemap:none
    4.  
    5. include c:\masm32\include\windows.inc
    6. include c:\masm32\include\kernel32.inc
    7. include c:\masm32\include\user32.inc
    8. includelib c:\masm32\lib\kernel32.lib
    9. includelib c:\masm32\lib\user32.lib
    10.  
    11. .data
    12. hRead dd 0
    13. hWrite dd 0
    14. bytesRead dd 0
    15. szGetGroup db "net localgroup",0
    16. szCaption db "localgroup",0
    17.  
    18. .data?
    19. sat SECURITY_ATTRIBUTES <?>
    20. startupinfo STARTUPINFO <?>
    21. pinfo PROCESS_INFORMATION <?>
    22. buffer db 1024 dup (?)
    23.  
    24. .code
    25. start:
    26. mov sat.nLength,sizeof SECURITY_ATTRIBUTES
    27. mov sat.lpSecurityDescriptor,NULL
    28. mov sat.bInheritHandle,TRUE
    29.  
    30. invoke CreatePipe, addr hRead, addr hWrite, addr sat, NULL
    31. .if eax != NULL
    32. mov startupinfo.cb,sizeof STARTUPINFO
    33. mov startupinfo.lpReserved, NULL
    34. mov startupinfo.lpDesktop, NULL
    35. mov startupinfo.lpTitle, NULL
    36. mov eax,hWrite
    37. mov startupinfo.hStdOutput,eax
    38. mov startupinfo.hStdError,eax
    39. mov startupinfo.dwFlags, STARTF_USESHOWWINDOW+STARTF_USESTDHANDLES
    40. mov startupinfo.wShowWindow,SW_HIDE
    41.    
    42.     invoke CreateProcess, NULL,addr szGetGroup,NULL,NULL,TRUE,\
    43.     NULL,NULL,NULL,addr startupinfo,addr pinfo
    44.     invoke CloseHandle,hWrite
    45.     invoke Sleep,1000
    46.         .while TRUE
    47.             invoke RtlZeroMemory,addr buffer,1024
    48.             invoke ReadFile,hRead,addr buffer,1023,addr bytesRead,NULL
    49.             .if eax==NULL
    50.             .break
    51.             .endif
    52.             invoke MessageBox,NULL,addr buffer,addr szCaption,MB_OK
    53.         .endw
    54. .endif
    55. invoke CloseHandle,hRead
    56. invoke ExitProcess, 0
    57. end start
    Пожалуйста посоветуйте как теперь грамотно вытащить из результата названия групп для дальнейших действий с ними.
     
  2. Osen

    Osen Рие

    Публикаций:
    0
    Регистрация:
    5 апр 2008
    Сообщения:
    283
    Адрес:
    Париж
    pilulkin
    Юзай strstr из msvcrt.
     
  3. pilulkin

    pilulkin New Member

    Публикаций:
    0
    Регистрация:
    2 дек 2008
    Сообщения:
    7
    Спасибо, но наверное это не то немного. Я так понял что strstr проверяет наличие подстроки в строке. Вот бы чтонибудь типа split() в perl. Разделить в массив по *
     
  4. Osen

    Osen Рие

    Публикаций:
    0
    Регистрация:
    5 апр 2008
    Сообщения:
    283
    Адрес:
    Париж
    pilulkin
    Ну тогда прямая дорога - http://www.pcre.org/
     
  5. cresta

    cresta Active Member

    Публикаций:
    0
    Регистрация:
    13 июн 2004
    Сообщения:
    2.257
    strtok