Поиск ошибки в небольшом коде, MASM.

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

  1. churik

    churik New Member

    Публикаций:
    0
    Регистрация:
    28 авг 2008
    Сообщения:
    19
    Здравствуйте.
    Моей задачей является написать windows-приложение, которое при задании ему параметров дописывает их в txt-файл, те если запускаем "C:\prog.exe s", то в txt-файл будет дописан символ "s".
    Проблемы:
    1. В моем случае программа переписывает символы в txt-файле.
    2. Приложение работает "правильно" только, если его запускать из "пуск->выполнить"; из консоли оно не работает даже если я указываю при линковке ключ "/SUBSYSTEM:CONSOLE".
    Помогите выявить ошибки.

    Код (Text):
    1. .386
    2. .model flat, stdcall
    3. include \masm32\include\windows.inc
    4. include \masm32\include\user32.inc
    5. include \masm32\include\kernel32.inc
    6. includelib \masm32\lib\user32.lib
    7. includelib \masm32\lib\kernel32.lib
    8. .data
    9. path db "C:\key.txt",0
    10. .code
    11. start:
    12.     main proc
    13.         local hConsole :dword
    14.         local hFile    :dword
    15.         local strng    :dword
    16.         local dwResult :dword
    17.         invoke GetStdHandle, STD_OUTPUT_HANDLE
    18.         mov hConsole, eax
    19.         invoke GetCommandLine
    20.         dcr_line:
    21.             inc eax
    22.             cmp byte ptr [eax], 22h
    23.         jnz dcr_line
    24.         add eax, 2
    25.         mov strng, eax
    26.         ;invoke MessageBoxA, 0, strng, strng, 0
    27.         invoke CreateFile, addr path, GENERIC_WRITE, 0, 0, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0
    28.         mov hFile, eax
    29.         invoke WriteFile, hFile, strng, 1, addr dwResult, 0
    30.         invoke CloseHandle, hFile
    31.         invoke CloseHandle, hConsole
    32.         invoke ExitProcess, 0
    33.     main endp
    34. end start
    Ключи:
    Код (Text):
    1. ml /c /coff /Cp src.asm
    2. link /SUBSYSTEM:WINDOWS src.obj
     
  2. MSoft

    MSoft New Member

    Публикаций:
    0
    Регистрация:
    16 дек 2006
    Сообщения:
    2.854
    SetFilePointer перед WriteFile
     
  3. churik

    churik New Member

    Публикаций:
    0
    Регистрация:
    28 авг 2008
    Сообщения:
    19
    MSoft, спасибо, 1-ая проблема решилась с помощью:
    Код (Text):
    1. invoke SetFilePointer, hFile, 0, 0, FILE_END
    Вы могли бы помочь решить 2-ую, она по сути не проблема, но все-таки интересно.
     
  4. litrovith

    litrovith Member

    Публикаций:
    0
    Регистрация:
    20 июн 2007
    Сообщения:
    509
    churik, http://wasm.ru/forum/viewtopic.php?id=29924