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

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

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


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

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

Ответ
 
Опции темы
Старый 18.08.2019, 21:51   #1
zombivadim
 
Регистрация: 18.08.2019
Сообщений: 5
Репутация: 10
По умолчанию Вывести текст из памяти в EDIT CONTROL.

Привет может здесь сможет мне кто то помочь. Столкнулся с такой странной проблемой. Пишу проект на MFC. Мне нужно что бы при открытии любого файла определенные его участки можно было просмотреть в текстовом формате. Поместил на диалоговое окно EDIT CONTROL. Попробовал данный код
Код:
	HANDLE FileR;
	FileR = CreateFile("D:\\Test.exe", GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); 
	DWORD  dwRead;
	DWORD size;
	size = GetFileSize(FileR, NULL);
	LPTSTR pBufferExe = (LPTSTR)malloc(size);
	ReadFile(FileR, pBufferExe, size, &dwRead, NULL);
	GetDlgItem(IDC_CONTROL)->SetWindowText(pBufferExe);
С текстовыми файлами все в порядке,но вот с любыми исполняемыми файлами странный глюк. Текст выводится только одной маленькой начальной строчкой, остальное игнорируется. Если начать считывать файл с произвольного места, то опять короткая строчка и все. Как я понял в основном затыкается на пробелах строк. Как такое происходит?
Я уже голову сломал над этим!
zombivadim вне форума   Ответить с цитированием
Старый 19.08.2019, 00:31   #2
Black Fregat
Программист
Профессионал
 
Аватар для Black Fregat
 
Регистрация: 23.06.2009
Сообщений: 1,469
Репутация: 1021
По умолчанию

В exe полно нулей, каждый нуль - это конец строки.
А что, собственно, предполагается внутри exe увидеть?
Black Fregat вне форума   Ответить с цитированием
Старый 19.08.2019, 01:50   #3
zombivadim
 
Регистрация: 18.08.2019
Сообщений: 5
Репутация: 10
По умолчанию

Цитата:
Сообщение от Black Fregat Посмотреть сообщение
В exe полно нулей, каждый нуль - это конец строки.
А что, собственно, предполагается внутри exe увидеть?
Просто вывести в текстовом формате.
Насчет нулей уже как то дошло. Вот ломаю голову чтоб заменить эти нули в буфере на пробелы, как это делает блокнот. Не поможете парой строчек кода?
zombivadim вне форума   Ответить с цитированием
Старый 29.08.2019, 12:09   #4
NetSpace
Профессионал
 
Аватар для NetSpace
 
Регистрация: 03.06.2009
Адрес: п.Путеец, Печорский р-н
Сообщений: 1,410
Репутация: 537
По умолчанию

копируй из буфера в массив, скажем t[1..N]
и, если тебе не на скорость, а чтоб чисто работало, то дальше перебирай поэлементно в цикле:
Код:
for p=1 to N do if (ord(t[p])=0) then t[p]=Chr(32);
ну, а потом, если надо, снова копируй в буфер и твори там что хочешь.
__________________
Программирование - это единственный способ заставить компьютер делать то, что тебе хочется, а не то, что приходится.
NetSpace вне форума   Ответить с цитированием
Ответ

Опции темы

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не работает edit control computer Win Api 3 02.07.2010 18:52
В Edit-Control не отображается выборный файл --=SaNitinDG=- Общие вопросы C/C++ 4 15.02.2010 21:25
Edit control value Peterff Общие вопросы C/C++ 8 13.12.2009 16:42
значения в полях Edit Control [C++] gooffy Помощь студентам 1 17.05.2008 17:57


11:10.


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