|
|
| Посл.отвђт | Сообщен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 |