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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 04.11.2014, 09:44   #1
Flashik66
Пользователь
 
Регистрация: 12.04.2014
Сообщений: 11
Восклицание Вывод бинарного файла (WinApi c++)

Добрый день. Прошу помощи. Уже неделю пытаюсь. Не получается вывести в Edit содержимое моего бинарогоно файла. Содержимое текстового файла выводится без вопросов, а вот бинарного не получается. Хочу вывести в двоичном виде.. Вот участок кода по выводу.. Если нужно могу скинуть всю программу. Спасибо!

Код:
case IDC_BUTTON2:
					{
				ofn.lpstrFilter = L"Binary file\0*.bin;\0All\0*.*\0";	
				success = GetOpenFileName(&ofn);
				if (success)
				{
					hBinFile = CreateFile(fileName, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);
					endOfFile = GetFileSize(hBinFile, NULL);
					str2 = (PSTR)VirtualAlloc((LPVOID) NULL,endOfFile*3+1, MEM_COMMIT,PAGE_READWRITE);
					SetFilePointer(hBinFile,0,NULL,FILE_BEGIN);
						//Считываем данные типа int
				//hBinFile = CreateFile(fileName, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, NULL, NULL);
					intOffset = 0;

					endOfFile = GetFileSize(hBinFile, NULL);
					
					
					ReadFile(hBinFile, &buf, endOfFile, &length, NULL);
					j=0;
					intOffset = 0;
					SetFilePointer(hBinFile, intOffset, NULL, FILE_BEGIN);
					ReadFile(hBinFile, &intI, sizeof(INT32), &length, NULL);
					j=sprintf(buffer, "%d", intI); 
					
				
					intOffset = 4;
					SetFilePointer(hBinFile, intOffset, NULL, FILE_BEGIN);
					ReadFile(hBinFile, &byteB, sizeof(BYTE), &length, NULL);
					j+=sprintf(buffer + j, "%d", byteB); 

					intOffset = 5;
					SetFilePointer(hBinFile, intOffset, NULL, FILE_BEGIN);
					ReadFile(hBinFile, &shortS, sizeof(INT64), &length, NULL);
					j+=sprintf(buffer + j, "%d", shortS);
					
					intOffset = 13;
					SetFilePointer(hBinFile, intOffset, NULL, FILE_BEGIN);
					ReadFile(hBinFile, &longL, sizeof(LONG), &length, NULL);
					j+=sprintf(buffer +j, "%d", longL);

					intOffset = 17;
					SetFilePointer(hBinFile, intOffset, NULL, FILE_BEGIN);
					ReadFile(hBinFile, &floatF, sizeof(float), &length, NULL);
					j+=sprintf(buffer +j, "%f", floatF); 

					intOffset = 21;
					SetFilePointer(	hBinFile,intOffset,NULL,FILE_BEGIN);
					ReadFile(	hBinFile,&doubleD,sizeof(double),&length,NULL);						
					j = sprintf(buffer +j, "%f", doubleD); 
					
					intOffset = 27;
					SetFilePointer(hBinFile, intOffset, NULL, FILE_BEGIN);
					ReadFile(hBinFile, &uintU, sizeof(UINT), &length, NULL);
					j+=sprintf(buffer + j, "%d", uintU); 
					
					intOffset = 29;
					SetFilePointer(hBinFile, intOffset, NULL, FILE_BEGIN);
					ReadFile(hBinFile, &boolB, sizeof(BOOL), &length, NULL);
					j+=sprintf(buffer +j, "%d", boolB); 

					intOffset = 33;
					SetFilePointer(hBinFile, intOffset, NULL, FILE_BEGIN);
					ReadFile(hBinFile, &dwordD, sizeof(DWORD), &length, NULL);
					j+=sprintf(buffer +j, "%d", dwordD); 
					
					intOffset = 37;
					SetFilePointer(hBinFile, intOffset, NULL, FILE_BEGIN);
					ReadFile(hBinFile, &wordW, sizeof(WORD), &length, NULL);
					j+=sprintf(buffer +j, "%d", wordW); 
					 
					//SetDlgItemTextA(hDlg,IDC_EDIT1, buffer+j);

					length = GetFileSize(hBinFile, NULL);
				SetFilePointer(hBinFile, 0, NULL, FILE_BEGIN);
				ReadFile(hBinFile, &buf, endOfFile, &length, NULL);
				i = 0;
				j = 0;
				while (i < endOfFile)
				{
					j += sprintf(str3 + j,"%02x ", buf[i]);
					i++;
				}
				SetDlgItemTextA(hDlg,IDC_EDIT2, str3);
				for( int k=0;k<length;k++)
						{
						sprintf(&str2[k], "%d ",buf[k]);	
						}
						SetWindowTextA(hList,str2);
								
				CloseHandle(hBinFile);

Вот конкретно где я пытаюсь вывести содержимое файла в двоичном виде:

Код:
for( int k=0;k<length;k++)
						{
						sprintf(&str2[k], "%d ",buf[k]);	
						}
						SetWindowTextA(hList,str2);
Спасибо..

Последний раз редактировалось Stilet; 04.11.2014 в 10:26.
Flashik66 вне форума Ответить с цитированием
Старый 04.11.2014, 12:31   #2
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

Тебе в таком виде надо?
Изображения
Тип файла: jpg 24.jpg (42.2 Кб, 141 просмотров)
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 04.11.2014, 12:36   #3
Flashik66
Пользователь
 
Регистрация: 12.04.2014
Сообщений: 11
По умолчанию

Цитата:
Сообщение от min@y™ Посмотреть сообщение
Тебе в таком виде надо?
Не..Такой вид я уже сделал. Это как одно из подзаданий для лабораторной. Мне осталось именно содержание бинарного файла. Я почитал в интернете, говорят можно выводить в двоичной форме. Вот и прошу помощи...Не получается вывести в двоичной. Просто в задании сказано: выведите в edit дамп файла(то что вы показали) и само содержимое файла. Мб я что-то не понимаю и это одно и то же?
Flashik66 вне форума Ответить с цитированием
Старый 04.11.2014, 12:43   #4
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

Цитата:
Мне осталось именно содержание бинарного файла.
Цитата:
выведите в edit дамп файла(то что вы показали) и само содержимое файла.
На картинку посмотри, на ней справа что?
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 04.11.2014, 12:47   #5
Flashik66
Пользователь
 
Регистрация: 12.04.2014
Сообщений: 11
По умолчанию

Цитата:
Сообщение от min@y™ Посмотреть сообщение
На картинку посмотри, на ней справа что?
Да именно. Извините. Только хотелось бы это как-то преобразовать в нули и единицы. Это реально?
Flashik66 вне форума Ответить с цитированием
Старый 04.11.2014, 12:51   #6
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

Цитата:
Только хотелось бы это как-то преобразовать в нули и единицы. Это реально?
да. нарисуй, как выглядеть должно.
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 04.11.2014, 13:03   #7
Flashik66
Пользователь
 
Регистрация: 12.04.2014
Сообщений: 11
По умолчанию

Цитата:
Сообщение от min@y™ Посмотреть сообщение
да. нарисуй, как выглядеть должно.
Как-то вот так нужно...
Изображения
Тип файла: jpg 1.jpg (16.0 Кб, 124 просмотров)
Flashik66 вне форума Ответить с цитированием
Старый 04.11.2014, 13:10   #8
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

что там изображено? почему разное количество разрядов?
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 04.11.2014, 13:34   #9
Flashik66
Пользователь
 
Регистрация: 12.04.2014
Сообщений: 11
По умолчанию

Цитата:
Сообщение от min@y™ Посмотреть сообщение
что там изображено? почему разное количество разрядов?
Так я это для вида скинул..там же от содержимого файла все меняться будет..мб я не понимаю о чем вы..
Flashik66 вне форума Ответить с цитированием
Старый 04.11.2014, 13:38   #10
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

Цитата:
Так я это для вида скинул..
реальный пример: входные данные ---> выходные данные.
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
вывод бинарного дерева Sv. Общие вопросы C/C++ 0 19.05.2013 11:55
Вывод значений из бинарного файла Igor95 Общие вопросы C/C++ 8 07.01.2013 16:56
Вывод бинарного дерева. C++ vadmaruschak Помощь студентам 0 11.12.2012 13:07
вывод бинарного дерева на экран. Лунатик13 Помощь студентам 1 10.06.2012 02:16
c++ ввод и вывод бинарного дерева в файл lblondy Помощь студентам 0 02.03.2012 01:34