Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

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

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.09.2010, 09:14   #1
int 20h
Падаван
Пользователь
 
Аватар для int 20h
 
Регистрация: 24.11.2009
Сообщений: 18
По умолчанию ReadConsole & CreateFile

Есть код

Код:
section '.code' code readable executable
main:
invoke GetStdHandle,STD_OUTPUT_HANDLE
mov [hout],eax
invoke GetStdHandle,STD_INPUT_HANDLE
mov [hiut],eax  

invoke ReadConsole,[hiut],filename,256,pf,0 

invoke CreateFile,filename,GENERIC_READ,FILE_SHARE_READ,0,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,0
mov [hfile],eax
invoke GetFileSize, [hfile], 0
mov [sfile],eax
Тоесть я считываю файл в консольном режиме,. Трабла в том, что
когда я читаю с консоли функцией "ReadConsole" у меня "CreateFile" отказываеться открывать файл, а если и открывает то идёт считывание- одни нули..

Если функции CreateFile передать переменную filename где уже прописано имя файла "filename db 'text.exe',0", то открываеться всё нормально и считываеться. Тобиш если неюзать ReadConsole то всё норм, а если сначала считать имя файла из консоли и передать в CreateFile то нечё неполучаеться.

В чём может быть дело?
-.^
int 20h вне форума Ответить с цитированием
Старый 20.09.2010, 09:48   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Припоминается мне что я уже кому-то отвечал что ReadConsole возвращает не только то что введено но и символы перевода каретки после введенного.
Перед тем как пихнуть в CreateFile переменку избавь ее от символов с номерами 13 и 10, и не забудь в конец строки поставить 0.
Достаточно даже просто заменить символ с кодом 13 в переменке filename на 0 - и все заработает

Дописано:http://www.programmersforum.ru/showthread.php?t=106812
Вот эта тема
I'm learning to live...

Последний раз редактировалось Stilet; 20.09.2010 в 09:51.
Stilet вне форума Ответить с цитированием
Старый 20.09.2010, 10:45   #3
int 20h
Падаван
Пользователь
 
Аватар для int 20h
 
Регистрация: 24.11.2009
Сообщений: 18
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Припоминается мне что я уже кому-то отвечал что ReadConsole возвращает не только то что введено но и символы перевода каретки после введенного.
Перед тем как пихнуть в CreateFile переменку избавь ее от символов с номерами 13 и 10, и не забудь в конец строки поставить 0.
Достаточно даже просто заменить символ с кодом 13 в переменке filename на 0 - и все заработает

Дописано:http://www.programmersforum.ru/showthread.php?t=106812
Вот эта тема
Я щас посмотрел в ольке, думаю что за 2 байта лишних читаеться, потом только дошло
Спасибо, разобрался, тему можно закрывать.
-.^
int 20h вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перехват CreateFile qwerc1 Win Api 6 29.06.2010 22:01
CreateFile, Delphi. edmynt Помощь студентам 0 01.06.2010 18:23
Создание Pipe на C# (CreateFile) WinApi Помощь студентам 0 23.12.2009 08:07
TForm & TImage & PNG & Прозрачность delphi_beginner Общие вопросы Delphi 7 19.09.2009 08:46
C++: проблема с чтением строки ф-ей ReadConsole() Retiz Помощь студентам 2 18.09.2008 21:32