Ожидание создания файла

Тема в разделе "WASM.BEGINNERS", создана пользователем Qpwoe, 17 июн 2006.

  1. Qpwoe

    Qpwoe New Member

    Публикаций:
    0
    Регистрация:
    16 июн 2006
    Сообщения:
    10
    Как заставить код дожидаться момента создания файла, приведите пример пожалуйста.

    Нужно чтото наподобие такого кода в Delphi

    repeat

    sleep(1000);

    until FileExists('c:\file');

    <Дальнейшие действия>



    Тойсть зацикливание до момента создания файла

    Заранее спасибо
     
  2. Qpwoe

    Qpwoe New Member

    Публикаций:
    0
    Регистрация:
    16 июн 2006
    Сообщения:
    10
    Сырцы Delphi мне подсказывают что надо юзать FindFirstFile, только вот что ему передавать



    _Fi:

    invoke FindFirstFile,_file,0

    test al,al

    jz _Fi

    Хрень дает
     
  3. asd

    asd New Member

    Публикаций:
    0
    Регистрация:
    12 мар 2005
    Сообщения:
    952
    Адрес:
    Russia
    читаем справку

    HANDLE FindFirstFile(



    LPCTSTR lpFileName, // pointer to name of file to search for

    LPWIN32_FIND_DATA lpFindFileData // pointer to returned information

    );



    Parameters



    lpFileName

    Windows 95: Points to a null-terminated string that specifies a valid directory or path and filename, which can contain wildcard characters (* and ?). This string must not exceed MAX_PATH characters.

    Windows NT: Points to a null-terminated string that specifies a valid directory or path and filename, which can contain wildcard characters (* and ?). ...



    lpFindFileData



    Points to the WIN32_FIND_DATA structure that receives information about the found file or subdirectory. The structure can be used in subsequent calls to the FindNextFile or FindClose function to refer to the file or subdirectory.



    Return Values



    If the function succeeds, the return value is a search handle used in a subsequent call to FindNextFile or FindClose.

    If the function fails, the return value is INVALID_HANDLE_VALUE. To get extended error information, call GetLastError.
     
  4. crypto

    crypto Active Member

    Публикаций:
    0
    Регистрация:
    13 дек 2005
    Сообщения:
    2.533
    У зачем цикл ожидания? Ведь достаточно проверить наличие файла и если он не существует, то создать его. Или у тебя многопоточное приложение?
     
  5. Qpwoe

    Qpwoe New Member

    Публикаций:
    0
    Регистрация:
    16 июн 2006
    Сообщения:
    10
    Справку читал, как использовать из асма совершенно не понял(в асме я почти полный ноль пока что)

    Файл создается другим приложением...

    Кому не сложно, дайте плз рабочий пример
     
  6. Qpwoe

    Qpwoe New Member

    Публикаций:
    0
    Регистрация:
    16 июн 2006
    Сообщения:
    10
    Самый неясный момент, сорри за тупость, а как прочесть результат возвращаемый функцией?

    Вот есть функция ABC, ей передается pchar, возвращает bool

    вызываем так

    push _stroka

    call ABC

    Где искать этот bool?
     
  7. asd

    asd New Member

    Публикаций:
    0
    Регистрация:
    12 мар 2005
    Сообщения:
    952
    Адрес:
    Russia
    .data

    filename db 'yyy.xxx',0

    lpFindData WIN32_FIND_DATA <>

    .code

    @1:

    invoke FindFirstFile,addr filename,addr lpFindData

    or eax,eax

    js @1



    должно работать, компилера под рукой нет.





    Qpwoe



    Читать описание для конкретной функции. Большинство функций возвращают, что-нибудь в eax. К примеру FindFirstFile возвращает в еах хендл для последующего использования FindNextFile и заполняет lpFindData при успехе, и INVALID_HANDLE_VALUE в еах при провале.



    p.s. WIN32_FIND_DATA описана в справке и в windows.inc
     
  8. Qpwoe

    Qpwoe New Member

    Публикаций:
    0
    Регистрация:
    16 июн 2006
    Сообщения:
    10
    В eax не нашел :dntknw:
     
  9. asd

    asd New Member

    Публикаций:
    0
    Регистрация:
    12 мар 2005
    Сообщения:
    952
    Адрес:
    Russia
    Qpwoe



    А что ты там найти хотел? еах=-1 - ошибка еах<>-1 файл найден.
     
  10. Qpwoe

    Qpwoe New Member

    Публикаций:
    0
    Регистрация:
    16 июн 2006
    Сообщения:
    10
    Сделал :)

    ag:

    mov eax,$00000000

    invoke CopyFile,_file,testf,0

    cmp eax,0

    je ag

    invoke WinExec,_file,SW_NORMAL

    invoke ExitProcess,1
     
  11. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    Qpwoe

    Ты бы почитал для начала Iczelion'a, проще было бы, чем методом тыка.
     
  12. leo

    leo Active Member

    Публикаций:
    0
    Регистрация:
    4 авг 2004
    Сообщения:
    2.542
    Адрес:
    Russia
    Во-во :)

    А для проверки наличия файла наверное лучше\проще использовать GetFileAttributes(lpFileName)
     
  13. mix_mix

    mix_mix Михаил

    Публикаций:
    0
    Регистрация:
    8 окт 2005
    Сообщения:
    277
    Адрес:
    Токио
    leo

    Намного, а потом нужно удостоверится, что GetLastError выдаст двойку, что означает, что файла не существует.