Поиск:

Ответ в темуСоздание новой темы Создание опроса
> FASM и навигация в файле, Как перемещать курсор в файле вертикальн 
V
    Опции темы
Moky
Дата 23.4.2014, 09:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 4.3.2013

Репутация: нет
Всего: нет



День добрый, форумчане!
Столкнулся с проблемой, может у кого есть в королевстве решение.
При навигации в файле, функцией SetFilePointer можно перемещать курсор горизонтально, а как его перемещать вертикально. 
Всем спасибо!
Это действие нужно для записи текста в файл с новой строки.

Это сообщение отредактировал(а) Moky - 23.4.2014, 09:39
PM MAIL   Вверх
500mhz
Дата 23.4.2014, 15:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


шайтан
***


Профиль
Группа: Завсегдатай
Сообщений: 1017
Регистрация: 5.5.2008
Где: Киев / Italy

Репутация: нет
Всего: 14



 smile 


--------------------

PM MAIL ICQ   Вверх
Moky
Дата 23.4.2014, 15:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 4.3.2013

Репутация: нет
Всего: нет



День добрый, форумчане!
Я наверное что то опять не то спросил.
Спросим иначе.
Есть очень длинная последовательность букв, выглядит так:  
ABCDE 
KLMNO 
ONMLK 
EDCBA ... и так далее всего сто букв  сгрупперованые по пять штук. Они записаны в файле. Программа, написанная мной, их считывает, но когда я пытаюсь их записать в файл она их  пишет в одну строчку. А мне необходимо в две строки, 80 и 20 символов, как это исполнить я не пойму, бьюсь сегодня весь день и не получается. Инете ничего не нашел. Может кто подскажет.
Пишу на FASMe.
Всем спасибо!

PM MAIL   Вверх
500mhz
Дата 23.4.2014, 16:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


шайтан
***


Профиль
Группа: Завсегдатай
Сообщений: 1017
Регистрация: 5.5.2008
Где: Киев / Italy

Репутация: нет
Всего: 14



после "слова" дописывать в файл 0x0d, 0x0a


--------------------

PM MAIL ICQ   Вверх
Moky
Дата 24.4.2014, 15:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 4.3.2013

Репутация: нет
Всего: нет



День добрый, форумчане!
Функцию Win32API для вертикальной навигации по файлу не нашел, выкрутился без нее.
Всем спасибо!

Это сообщение отредактировал(а) Moky - 24.4.2014, 15:21
PM MAIL   Вверх
500mhz
Дата 24.4.2014, 16:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


шайтан
***


Профиль
Группа: Завсегдатай
Сообщений: 1017
Регистрация: 5.5.2008
Где: Киев / Italy

Репутация: нет
Всего: 14



Уж поделитесь с нами то ?


--------------------

PM MAIL ICQ   Вверх
Moky
Дата 25.4.2014, 13:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 4.3.2013

Репутация: нет
Всего: нет



День добрый, форумчане!
По просьбе «шайтан» выкладываю код программы. Что она делает или должна делать. Есть текстовый файл в котором в одну колонку расположены символы, буквы, цифры. Программа разворачивает эту колонку в 8 колонок, каждая колонка может содержать до 9 символов.  Забор символов происходит из файла 1.txt, запись производится в файл 2.txt.  Программа плохо откатана, но вроде работает. Пользуйтесь!

Код

format PE GUI 4.0
entry start
include 'win32ax.inc'
section '.code' code readable executable
start:
;-----------Отываем файл для записи--------------
invoke CreateFile, _FileName_2, GENERIC_WRITE, 0, NULL, \
OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL
mov [_hFile_2], eax
cmp eax, INVALID_HANDLE_VALUE
je FileNotOpen
;-----------Отываем файл для записи--------------

;-----------Отываем файл для чтения--------------
invoke CreateFile, _FileName_1, GENERIC_READ, 0, NULL, \
OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL
cmp eax, INVALID_HANDLE_VALUE
je FileNotOpen
mov [_hFile_1], eax
;-----------Отываем файл для чтения--------------

;----------Манипуляции с файлом для чтения-------
invoke GetFileSize,[_hFile_1],0
mov [_SzFile],eax
cmp eax, 0
je FileNotOpen
;----------Манипуляции с файлом для чтения-------

;---------Цикл считывания символа----------------
Lk:
mov [_Kolon], NULL
Lh:
xor ebx, ebx
xor eax,eax
mov[ResultS], NULL
Lo:
invoke ReadFile, [_hFile_1],_Buffer, 1, _r, NULL
cmp [_Buffer], 0xD 
je La
cmp [_Buffer], 0xA
je Lm
invoke lstrcat, ResultS, _Buffer
La:
inc ebx
jmp Lo
Lm:
inc ebx
add [_RowLo], ebx
;---------Конец Цикла считывания символа----------------

;---------Расчет необходимого числа пробелов-----
invoke lstrlenA, ResultS
mov edx,10
sub edx,eax
mov [_RowPB], edx
;---------Конец Расчета необходимого числа пробелов-----

;------------Цикл записи пробелов-----------------------
xor ebx,ebx
Lw:
cmp ebx, [_RowPB]
je Le
invoke lstrcat,_Kolon, _Probel
inc ebx
jmp Lw
Le:
;------------Конец Цикла записи пробелов-----------------

invoke lstrcat,_Kolon, ResultS
mov eax, [_SzFile]
cmp eax, [_RowLo]
je Lp

invoke lstrlenA,_Kolon
cmp eax, 80
jb Lh

invoke lstrcat,_Kolon, _PerStr
invoke lstrlenA,_Kolon
jmp Ly

Lp:
 invoke lstrlenA,_Kolon

Ly:
invoke WriteFile, [_hFile_2], _Kolon, eax, _r, NULL

mov eax,[_RowLo]
cmp eax, [_SzFile]
jb Lk

;-----------Блок выхода из программы-----------------
invoke CloseHandle, [_hFile_1]
mov [_hFile_1], NULL

invoke CloseHandle, [_hFile_2]
mov [_hFile_2], NULL

jmp Exit
FileNotOpen:
invoke MessageBox,0, _FileErrorOpen, NULL, MB_ICONERROR
Exit:
invoke MessageBox,0, ' Программа завершена. Файлы закрыты.','Сообщение программы', MB_ICONERROR
invoke ExitProcess, 0
;-----------Блок выхода из программы-----------------

section '.data' data readable
_FileName_1 du 'C:\1.txt',0
_FileName_2 du 'C:\2.txt',0
_FileErrorOpen du 'File opening failt', 0
LL db 0
_Probel db ' ',0
_PerStr db '',0xD
_EndStr db '',0

_RowSym dd 9


section '.rdata' data readable writeable
_hFile_1 dd NULL
_hFile_2 dd NULL
_Buffer rb 22
_r dd 0
_CHC dd 0

formats db '%02d',0
result db 256 dup (?)
ResultS db ?
Rez db ?
_LongStr dd ?
_AmProbel dd ?
_Kolon rd 22
AA dd ?
_SzFile dd ?
_SzFile_1 dd ?
_RowPB dd ?
_RowLo dd ?

section '.idata' data import readable writeable
library kernel, 'kernel32.dll',\
user , 'user32.dll'
import kernel,\
CreateFile ,    'CreateFileW',\
GetFileSize ,   'GetFileSize',\
SetFilePointer, 'SetFilePointer',\
ReadFile ,      'ReadFile',\
WriteFile,      'WriteFile',\
CloseHandle ,   'CloseHandle',\
SetEndOfFile,   'SetEndOfFile',\
ExitProcess ,   'ExitProcess',\
lstrcat ,       'lstrcatA',\
lstrlenA,       'lstrlenA'

import user,\
MessageBox , 'MessageBoxA',\
 wsprintf,   'wsprintfA'



Найдете лишнии переменные не стирайте!
В основе лежить учебник Норсеева.
Moky

Это сообщение отредактировал(а) Moky - 25.4.2014, 13:43
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Asm для Windows/DOS"
MAKCim
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой КОД.
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim.

 
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Asm для Windows/Dos | Следующая тема »


 




[ Время генерации скрипта: 0.1103 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.