хэлп.... список файлов

Тема в разделе "WASM.BEGINNERS", создана пользователем Greedy_Fly, 8 окт 2010.

  1. Greedy_Fly

    Greedy_Fly New Member

    Публикаций:
    0
    Регистрация:
    3 ноя 2009
    Сообщения:
    15
    Как получить список файлов в одну длинную строку через какой нибудь разделитель? Так чтобы в мессаджбокс отображалось сразу содержимое папки в строке, а не кликать для просмотра результата...
     
  2. karabas_barabas

    karabas_barabas Member

    Публикаций:
    0
    Регистрация:
    9 авг 2009
    Сообщения:
    168
    лови наводку :) FindFirstFile/FindNextFile
     
  3. cresta

    cresta Active Member

    Публикаций:
    0
    Регистрация:
    13 июн 2004
    Сообщения:
    2.257
    можно вывести сразу в листбокс список файлов, и код писать не надо, и разделены все файлы построчно, смотреть удобно, никаких разделителей не надо.
     
  4. 0xJace

    0xJace New Member

    Публикаций:
    0
    Регистрация:
    19 сен 2010
    Сообщения:
    54
    FindFirstFileA/FindNextFileA. Слепливаешь это все в одну строку при помощи lstrcatA, используя разделитель в 1 байт - 10d (это сделает в твоём MessageBox имя каждого найденного файла в отдельной строке).
     
  5. Mikl___

    Mikl___ Супермодератор Команда форума

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    3.890
    Greedy_Fly
    А чтобы облегчить подсказку cresta подсказываю дальше -- урок Iczelion'a номер 31. Контрол ListView -- там и описание, и исходный текст и сам экзешник
     
  6. 0xJace

    0xJace New Member

    Публикаций:
    0
    Регистрация:
    19 сен 2010
    Сообщения:
    54
    Вот написал тебе на скорую руку через MessageBox. Извращение короче :lol:
    P.S. Я там чуток тупонул, не через lstrcatA, а через movsb, ибо там будет проблема с разделителем.
    P.P.S. Что бы в одну строку всё шпарило, я тебе в коде отметил комментарием, где нужно изменить.

    Код (Text):
    1. .386
    2. .model flat, stdcall
    3. option casemap:none
    4. includelib \masm32\lib\kernel32.lib
    5. includelib \masm32\lib\user32.lib
    6. include \masm32\include\kernel32.inc
    7. include \masm32\include\windows.inc
    8. include \masm32\include\user32.inc
    9.  
    10. .data
    11. sFile    WIN32_FIND_DATA <>
    12. sHandle  dd 0
    13. sMask    db '*.*',0
    14. mCaption db 'Find files:',0
    15. mText    db 1000h dup(0)
    16.  
    17. .code
    18. Main:
    19. mov edi,offset mText
    20.  
    21. push offset sFile
    22. push offset sMask
    23. call FindFirstFileA
    24. inc eax
    25. test eax,eax
    26. jz ShowResult
    27. dec eax
    28. mov sHandle,eax
    29. jmp m1
    30.  
    31. sNext:
    32. push offset sFile
    33. push sHandle
    34. call FindNextFileA
    35. test eax,eax
    36. jz ShowResult
    37.  
    38. m1:
    39. mov esi,offset sFile.cFileName
    40.  
    41. push offset sFile.cFileName
    42. call lstrlenA
    43.  
    44. mov ecx,eax
    45. rep movsb
    46. mov byte ptr [edi],10d ; разделитель. Замени 10d на другой, тогда будет в одну строку всё.
    47. inc edi
    48. jmp sNext
    49.  
    50. ShowResult:
    51. push 0
    52. push offset mCaption
    53. push offset mText
    54. push 0
    55. call MessageBoxA
    56.  
    57. push 0
    58. call ExitProcess
    59. end Main
     
  7. Greedy_Fly

    Greedy_Fly New Member

    Публикаций:
    0
    Регистрация:
    3 ноя 2009
    Сообщения:
    15
    0xJace
    Огромное спасибо...) то что нужно!!! а как через lstrcat сделать?
    совсем в асме пока что не шарю..
     
  8. MSoft

    MSoft New Member

    Публикаций:
    0
    Регистрация:
    16 дек 2006
    Сообщения:
    2.854
    А что мешает сесть и почитать? lstrcat - что же может быть проще? Если ты совсем нуб, то так и скажи: сделайте все за меня. А то начинается: помогите, мне совсем чуть-чуть... а еще вот тут немножко... ну и тут... а теперь тут. Ну и последние две странички кода сделайте...