• ReadFile Program Example


    The following program opens a file for input, reads its contents into a buffer, and displays the
    buffer. All procedures are called from the Irvine32 library:

    TITLE Reading a File (ReadFile.asm)
    ; Opens, reads, and displays a text file using
    ; procedures from Irvine32.lib.
    INCLUDE Irvine32.inc
    INCLUDE macros.inc
    BUFFER_SIZE = 5000
    .data
    buffer BYTE BUFFER_SIZE DUP(?)
    filename BYTE 80 DUP(0)
    fileHandle HANDLE ?
    .code
    main PROC
    ; Let user input a filename.
    mWrite "Enter an input filename: "
    mov edx,OFFSET filename
    mov ecx,SIZEOF filename
    call ReadString
    ; Open the file for input.
    mov edx,OFFSET filename
    call OpenInputFile
    mov fileHandle,eax
    ; Check for errors.
    cmp eax,INVALID_HANDLE_VALUE ; error opening file?
    jne file_ok ; no: skip
    mWrite <"Cannot open file",0dh,0ah>
    jmp quit ; and quit
    file_ok:
    ; Read the file into a buffer.
    mov edx,OFFSET buffer
    mov ecx,BUFFER_SIZE
    call ReadFromFile
    jnc check_buffer_size ; error reading?
    mWrite "Error reading file. " ; yes: show error message
    call WriteWindowsMsg
    jmp close_file
    check_buffer_size:
    cmp eax,BUFFER_SIZE ; buffer large enough?
    jb buf_size_ok ; yes
    mWrite <"Error: Buffer too small for the file",0dh,0ah>
    jmp quit ; and quit
    buf_size_ok:
    mov buffer[eax],0 ; insert null terminator
    mWrite "File size: "
    call WriteDec ; display file size
    call Crlf
    ; Display the buffer.
    mWrite <"Buffer:",0dh,0ah,0dh,0ah>
    mov edx,OFFSET buffer ; display the buffer
    call WriteString
    call Crlf
    close_file:
    mov eax,fileHandle
    call CloseFile
    quit:
    exit
    main ENDP
    END
    View Code

    The program reports an error if the file cannot be opened:

    Enter an input filename: crazy.txt
    Cannot open file

    It reports an error if it cannot read from the file. Suppose, for example, a bug in the program used
    the wrong file handle when reading the file:

    Enter an input filename: infile.txt
    Error reading file. Error 6: The handle is invalid.

    The buffer might be too small to hold the file:

    Enter an input filename: infile.txt
    Error: Buffer too small for the file

  • 相关阅读:
    所谓的小项目
    PHP开发者常犯的10个MySQL错误
    这是掌握cookie最后的一个障碍
    Lua学习笔记(2)——table
    Corona Enterprise 引入第三方 jar 包
    Lua学习笔记(1)
    SQL分页查询笔记
    三两句记录设计模式(1)——简单工厂模式
    Window + Net + Corona + IOS PUSH
    IoC学习
  • 原文地址:https://www.cnblogs.com/dreamafar/p/5985902.html
Copyright © 2020-2023  润新知