Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер
Регистрация

Восстановить пароль
Повторная активизация e-mail

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Ответ
 
Опции темы
Старый 17.11.2019, 15:56   #1
Programist_r
Пользователь
 
Регистрация: 08.05.2019
Сообщений: 23
По умолчанию Чтение файла и вывод содержимого в поля

Здравствуйте

Имею такое задание:
При нажатии «Действие» при снятом флажке программа должна прочитать файл (имя файла взято из поля edit_2) и отобразить содержимое в поле edit_1. Активированный флажок и кнопка «Действие» сохраняют данные из поля edit_1 в файл (имя файла берется из поля edit_2).

asm + .rc
Masm32

Помогите выполнить это действие: прочитать файл (имя файла взято из поля edit_2) и отобразить содержимое в поле edit_1.

вот что у меня получилось:
Код:
include \masm32\include\masm32rt.inc
 
ID_DLG_MAIN = 100
ID_LTEXT    = 101
ID_PB_OK    = 102
ID_EDIT     = 103
ID_PB_EXIT  = 104
ID_Check_BOX = 105
ID_PB_AKCJA = 106
ID_EDIT1 = 107
 
                       
.data
txt2    db      "Blad otwarcia pliku.", NULL
        txt3    db      "Blad odczytu pliku.", NULL
        txt4    db      "Blad alokacji pamieci.", NULL
        
        ;
        STR2    DB      "Błąd tworzenia pliku.",10,13,0
fName   db      "file.txt"
buff1  db 65 dup(NULL)
.data?
        hInstance dd ?
        hConsoleOutput  HANDLE  ?
        hConsoleInput   HANDLE  ?
     
        lpCmdLine       LPWSTR  ?               
        argc            dd      ?               
        argv            LPWSTR  ?            
        ;
        Buffer          db      1024 dup(?)
        BufLen          dd      ?
        ;
        hFile           dd      ?
        tmpV            dd      ?
        fSize           dd      ?
        hBuff           dd      ?
        readBytes       dd      ?
        ;
        WriteBytes      DD      ?
        HANDL           DWORD   ?
        HFILEZ          DD      ?
        LENS            DD      ?
 
.code                          
   DlgProc proc hDlg,uMsg,wParam,lParam:DWORD
     pushad
 
     .IF  uMsg==WM_CLOSE
        INVOKE EndDialog,hDlg,0
     .ELSEIF uMsg==WM_COMMAND
        .IF wParam==ID_PB_EXIT
            INVOKE EndDialog,hDlg,0
        .ELSEIF wParam==ID_PB_AKCJA
            INVOKE IsDlgButtonChecked, hDlg, ID_Check_BOX
        .IF eax==TRUE
            ;Do some stuff
        .ELSE
            ;Do something else
            INVOKE GetDlgItemText, hDlg, ID_EDIT1, OFFSET buff1, SIZEOF buff1
            mov     hConsoleInput,  eax
            
            
            
        INVOKE CreateFile,ADDR fName, GENERIC_READ, 0, NULL, OPEN_EXISTING,FILE_ATTRIBUTE_ARCHIVE,0
mov hFile, eax
 
    .IF eax==INVALID_HANDLE_VALUE
        INVOKE lstrlen, OFFSET txt2
        INVOKE WriteConsole, hConsoleOutput, OFFSET txt2, eax,ADDR tmpV, NULL
        jmp @end
    .ENDIF
 
    INVOKE GetFileSize,hFile,0
    mov hBuff, eax
 
    INVOKE VirtualAlloc,0,eax,MEM_COMMIT,PAGE_READWRITE
    .IF eax == NULL
        INVOKE lstrlen, OFFSET txt4
        INVOKE WriteConsole, hConsoleOutput,OFFSET txt4, eax,OFFSET tmpV, NULL
    .ELSE
        mov hBuff, eax
        INVOKE ReadFile, hFile, eax, fSize, OFFSET readBytes, 0
 
        .IF eax == -1
            INVOKE lstrlen, OFFSET txt3
            INVOKE WriteConsole, hConsoleOutput,OFFSET txt3, eax,ADDR tmpV, NULL
        .ELSE
            INVOKE WriteConsoleW, hConsoleOutput, buff1, fSize,OFFSET tmpV, NULL
            INVOKE SetDlgItemText, hDlg, ID_EDIT , OFFSET buff1
            mov     hConsoleOutput, eax
        .ENDIF
    .ENDIF
 
 
 
    INVOKE VirtualFree,eax,OFFSET fSize,MEM_RELEASE
    INVOKE CloseHandle, hFile
@end:
        ret
        
        
     
     .ENDIF
     .ENDIF
     .ENDIF
 
     popad
     xor eax,eax
     ret
   DlgProc endp
 
   Start:                     
 
     INVOKE GetModuleHandle,NULL
     mov hInstance,eax
     INVOKE DialogBoxParam,hInstance,ID_DLG_MAIN,0,ADDR DlgProc,0
     INVOKE ExitProcess,0
 
 
 
END Start
.rc
Код:
#include "B:\masm32\include\resource.h"
 
#define ID_DLG_MAIN   100
#define ID_LTEXT      101
#define ID_PB_OK      102
#define ID_EDIT       103
#define ID_PB_EXIT    104
#define ID_Check_BOX  105
#define ID_PB_AKCJA   106
#define ID_EDIT1      107
 
 
 
 
 
ID_DLG_MAIN DIALOG 108, 70, 308, 105
STYLE DS_MODALFRAME | DS_SETFONT | WS_CAPTION | WS_VISIBLE | WS_MAXIMIZEBOX | WS_MINIMIZEBOX | WS_POPUP | WS_THICKFRAME | WS_SYSMENU
CAPTION "Basic Api"
FONT 8, "Helv"
{
    AUTOCHECKBOX    "Check", ID_Check_BOX, 109, 84, 34, 8, 0, WS_EX_LEFT
    PUSHBUTTON      "Akcja", ID_PB_AKCJA, 167, 81, 40, 14, 0, WS_EX_LEFT
    LTEXT           "", ID_LTEXT, 8, 8, 223, 25, SS_LEFT, WS_EX_LEFT
    PUSHBUTTON      "OK", ID_PB_OK, 259, 80, 40, 14, 0, WS_EX_LEFT
    EDITTEXT        ID_EDIT, 6, 34, 129, 41, ES_AUTOHSCROLL, WS_EX_LEFT
    EDITTEXT        ID_EDIT1, 155, 34, 138, 40, ES_AUTOHSCROLL, WS_EX_LEFT
    PUSHBUTTON      "Exit", ID_PB_EXIT, 215, 81, 40, 14, 0, WS_EX_LEFT
}
Вот как выглядит
Изображения
Тип файла: jpg Screenshot_1.jpg (12.8 Кб, 40 просмотров)
Programist_r вне форума Ответить с цитированием
Старый 17.11.2019, 21:25   #2
digitalis
Участник клуба
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 1,971
По умолчанию

Некорректный польский текст в txt3, txt4
"Błąd" - это ошибка, а "Blad" - это нехорошая женщина.
Вот и ближнее зарубежье подтянулось...
digitalis вне форума Ответить с цитированием
Старый 27.11.2019, 03:33   #3
Mikl___
Участник клуба
 
Регистрация: 11.01.2010
Сообщений: 1,155
По умолчанию

digitalis
нехорошая женщина это kurwa
Mikl___ вне форума Ответить с цитированием
Ответ
Опции темы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вывод содержимого файла. Временной промежуток Canabalt C++ Builder 0 04.01.2013 14:24
вывод содержимого файла mojohead C++ Builder 1 17.05.2011 01:18
Вывод содержимого файла из Bat Eddi Помощь студентам 1 15.04.2011 21:15
Вывод содержимого файла в richedit из имени в listbox KingWaR56 Помощь студентам 2 30.03.2011 21:49
Вывод содержимого файла на экран! Nostalgy Общие вопросы C/C++ 5 16.01.2011 20:33