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

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

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


Донат для форума - использовать для поднятия настроения себе и модераторам

А ещё здесь можно купить рекламу за 25 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru

Ответ
 
Опции темы
Старый 06.04.2011, 23:50   #1
Ibanez Wizard
Адский тунеядец
Форумчанин
 
Аватар для Ibanez Wizard
 
Регистрация: 11.06.2010
Адрес: 127.0.0.1
Сообщений: 164
Репутация: 65

icq: 550430874
По умолчанию Работа с файлами. Замена предыдущего текста на новый.

Начал читать книгу по криптографии и первый пример шифра был шифр цезаря. На основе прочитанного, решил написать программу, которая бы шифровала содержимое текстового файла. При написании сей программы, встретилась следующая проблема: шифрованный текст записывается в конец исходного, а надо чтобы заменял. Исправьте пожалуйста как надо.


Код:
.386
.model flat, stdcall
option casemap : none
include\masm32\include\windows.inc
include\masm32\include\kernel32.inc
include\masm32\include\user32.inc
includelib\masm32\lib\kernel32.lib
includelib\masm32\lib\user32.lib

.data?
hFile dd ?
buffer db 10 dup(?)
cWrite dd ?
cRead dd ?
.data
fName db "file.txt", 0
i dd 8

.code
start:
invoke CreateFile, addr fName, GENERIC_READ or GENERIC_WRITE, \
				0,NULL,OPEN_EXISTING, FILE_ATTRIBUTE_ARCHIVE, NULL
mov hFile, eax
invoke ReadFile, hFile, addr buffer, i, addr cRead, NULL
call _shifr
invoke WriteFile, hFile, addr buffer, i, addr cWrite, NULL
invoke CloseHandle, hFile
invoke ExitProcess, 0

_strlen proc
lea edi, buffer
xor eax,eax
@1:
inc eax
cmp byte ptr[eax+edi],0
jnz @1	
mov i, eax
ret


_shifr proc
cld
xor eax, eax
lea esi, buffer
lea edi, buffer
mov ecx, i
@1:
lodsb
add eax, 3
stosb
loop @1
ret
_shifr endp
_strlen endp

end start
P.S. Написанный мною алгоритм не совсем полный. Просьба об этом не упоминать.
Ibanez Wizard вне форума   Ответить с цитированием
Старый 07.04.2011, 00:30   #2
Пепел Феникса
Модератор
Заслуженный модератор
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Адрес: Москва
Сообщений: 20,994
Репутация: 3436

icq: 446843180
skype: phoenix_proger
По умолчанию

добавь перед записью в файл.
Код:
invoke SetFilePointer,hFile,0,0,FILE_BEGIN  ;сместили позицию на начало файла
invoke SetEndOfFile,hFile   ;установили размер файла по позиции(то есть в ноль)
__________________
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Замена текста в html Sheva-roller JavaScript, Ajax 2 23.01.2011 23:03
Замена текста в ячейке Пашка_1977 Microsoft Office Excel 3 17.08.2010 22:54
Замена текста Lived08 Microsoft Office Excel 11 28.07.2010 14:20
замена текста designer999 Общие вопросы Delphi 5 23.03.2010 18:31
замена текста zetrix Microsoft Office Excel 0 31.10.2006 08:54


15:08.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.