· Начало · Статистика · WASM.RU · Noir.Ru ·

 WASM Phorum (Оффлайн - 24.11.2003) —› WASM.WIN32 —› Снова про запись в файл.

Посл.отвђт Сообщенiе


Дата: Авг 25, 2003 18:32:33

Здравствуйте! Несколько дней назад я спрашивал про запись в текстовый файл. Получил много ответов - спасибо! Вот ещё вопрос возник: как в уже существующий файл дозаписать? Сейчас я пишу программу, а ей просто необходимо вести лог событий. Записать события по ходу работы программы я могу, а дальше как, Подскажите как сделать дозапись в тотже файл? Лучше покажите на примере исходного кода.
Заранее спасибо!


Дата: Авг 25, 2003 18:53:48

И ещё, а как определить последнюю строку в файле, чтобы дозаписать? Или что-то я неправильно понял?


Дата: Авг 25, 2003 19:19:25

1) Открыть его для записи (а не перезаписи) типа CreateFile(...,OPEN_EXISTING,...), сделать ему SetFilePointer(hFile, NULL, FILE_END) и собсно писать в него обычным способом.
2) Надо думать что последняя строка в файле совпадает с его концом =)


Дата: Авг 25, 2003 21:37:21

Спасибо! Сейчас попробую!


Дата: Авг 25, 2003 22:04:15

Снова проблема: не врубаюсь, как использовать функцию
SetFilePointer. Всё нормально, но... что есть:
LONG lDistanceToMove, // number of bytes to move file pointer
подскажите, как оформить этот фрагмент в ассемблере.
Пожалуйста, подскажите!


Дата: Авг 25, 2003 22:15:32

Угу, прорубил в чём дело, но переносить так и не научился.
Спасибо!


Дата: Авг 26, 2003 16:59:22 · Поправил: Asterix

;слегка переделанный пример Quantum'а, чтобы дописывать
;в уже существующий файл. Сохранить этот файл с расширением
;bat, для компиляции просто запустить этот bat файл.
;#####################################################################   #
;@echo off
;goto make
.386
.model flat, stdcall
option casemap:none
include \masm32\include\windows.inc
include \masm32\include\kernel32.inc
includelib \masm32\lib\kernel32.lib

.DATA
hFile   dd 0
written dd 0
fName   db "test.txt",0
Stroka1 db "Hello,",13,10
S1_Len equ $-Stroka1
Stroka2 db "dear",13,10
S2_Len equ $-Stroka2
Stroka3 db "1990!",13,10
S3_Len equ $-Stroka3


.CODE
start:
 invoke CreateFile,OFFSET fName,GENERIC_WRITE,\
        FILE_SHARE_READ,0,OPEN_EXISTING,\
        FILE_ATTRIBUTE_NORMAL,0
 mov hFile,eax
 invoke SetFilePointer,hFile, NULL, NULL, FILE_END
 invoke WriteFile,hFile,OFFSET Stroka1,S1_Len,OFFSET written,0
 invoke WriteFile,hFile,OFFSET Stroka2,S2_Len,OFFSET written,0
 invoke WriteFile,hFile,OFFSET Stroka3,S3_Len,OFFSET written,0
 invoke CloseHandle,hFile
 invoke ExitProcess,NULL
end start
:make
for %%f in (*.bat) do \masm32\bin\ml /nologo /c /coff /Cp %%f
\masm32\bin\link /nologo /SUBSYSTEM:WINDOWS /LIBPATH:c:\masm32\lib *.obj
del *.obj
echo.
pause


Дата: Авг 27, 2003 09:37:35

Спасибо, Asterix! Теперь я понял как записывать в файл!

Эта тема закрыта. Отвђты больше не принимаются.


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.070