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

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

Вернуться   Форум программистов > C/C++ программирование > C++ Builder
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.12.2012, 13:28   #1
Muvvka
Пользователь
 
Аватар для Muvvka
 
Регистрация: 27.04.2012
Сообщений: 18
По умолчанию перевод из Си в С++Builder

может кто подскажет как использовать структуру заголовка файла на С++ есть такой код на Си
Код:
//---------------------------------------------------------------------------
#include <iostream>
#include <fstream>
#include <windows>
#pragma hdrstop
struct TBMPHeader{//наша структура bmp
    //заголовок файла
    short Type;          //сигнатура BM 0x4D42
    long  Size;          //размер файла в байтах 3*H*W+54
    long  Reserved;      //зарезервировано 0
    long  OffsetBits;    //смещение изображения от начала файла 54
    //информационный заголовок
    long  Width;        //ширина изображения
    long  Height;       //высота изображения
    long  SizeH;        //размер заголовка 40 информационного заголовка
    short BitCount;     //глубина цвета, бит на точку 24
    short Planes;        //число плоскостей 1
    long  Compression;   //тип еомпрессии(0 - несжатое изображение)
    long  SizeImage;     //разиер изображения, байт 3*W*H
    long  XPelsPerMeter; //горизонтальное разрешение, точка на метр 0
    long  YPelsPerMeter; //вертикальное разрешение, точка на метр 0
    long  ColorUsed;     //число используемых цветов 0
    long  ColorImportant;//число основных цветов 0
};
//---------------------------------------------------------------------------
using namespace std;
#pragma argsused
FILE *fBmp;

int main(int argc, char* argv[])
{
TBMPHeader bmp;
size_t           nread;
fBmp = fopen( "test.bmp", "rb" );
if(!fBmp){return 1;}
nread = fread( &bmp, sizeof(bmp), 1, fBmp );
if(!nread){return 1;}
int Width = bmp.Width/65536;
int Height = bmp.Height/-65536;
int BitCount=bmp.BitCount;
fclose( fBmp );
cout<<"Width: "<<Width<<"\n";
cout<<"Height: "<<Height<<"\n";
cout<<"BitCount: "<<BitCount<<"\n";
Sleep (10000);
        return 0;
}
//---------------------------------------------------------------------------
уточню : а мне надо открыть его к примеру так : ifstream in("test.bmp", ios::in | ios::binary);//но как тут заюзать структуру?

Последний раз редактировалось ACE Valery; 14.12.2012 в 14:52.
Muvvka вне форума Ответить с цитированием
Старый 14.12.2012, 14:32   #2
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

А в чём проблема? Ничерта не понял. Хоть область задачь объясните, на худой конец.
Хоть к чему-то привязаться будет.
А при чём здесь Вuilder, если Вы пишете на С++?
Builder, это среда разработки (со своими прибабахами, конечно).
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder

Последний раз редактировалось Smitt&Wesson; 14.12.2012 в 14:49.
Smitt&Wesson вне форума Ответить с цитированием
Старый 14.12.2012, 16:48   #3
Muvvka
Пользователь
 
Аватар для Muvvka
 
Регистрация: 27.04.2012
Сообщений: 18
По умолчанию

Цитата:
А в чём проблема? Ничерта не понял. Хоть область задачь объясните, на худой конец.
Хоть к чему-то привязаться будет.
объясняю этот код написан на Си а мне надо открыть файл на С++ и прочитать скажем заголовок (некоторые его параметры) далее с массивом пикселей я разобрался!
касательно кода я могу конечно его написать на полу Си но быстрее думою будет работать если открыть файл 1 раз и прочитать сначала заголовок потом остальное, ну и код чище и короче у меня выйти должен.
объясняю суть того к чему я иду я делаю функцию или класс поиска изображения на экране.
кароче "глаза" для своей программы...
Цитата:
А при чём здесь Вuilder, если Вы пишете на С++?
Builder, это среда разработки (со своими прибабахами, конечно).
я пишу на C++ Builder 6 в режиме консоли (отдельные куски так на мой взгляд проще) потом перейду на GUI
Muvvka вне форума Ответить с цитированием
Старый 14.12.2012, 17:35   #4
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

У Вас проблема с переходом от одной среды разработки к другооЙ? Тогда Вам не к нам, а к психиатру. Он Вам поможет.
Не сведущи мы в этом, как человек не может понять среду разработки, если язык понимает.
что по коду, очевидных ошибок не заметил. (сам-бы немного не так написал-бы, но это ИМХО. Конкретизировать не буду).
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder

Последний раз редактировалось Smitt&Wesson; 15.12.2012 в 09:09.
Smitt&Wesson вне форума Ответить с цитированием
Старый 14.12.2012, 19:09   #5
Perchik71
С++, Delphi
Форумчанин
 
Аватар для Perchik71
 
Регистрация: 24.11.2012
Сообщений: 495
По умолчанию

закой вам bmp и этот гемор????

LoadImage откроет любую bmp

переписать vcl для студии????
похвально.... но попа лопнет даже у меня....
конечно в студии эта vcl будет круче.. и лучше работать...
но ща кодегиры уже давно переписали на асм все часто используемые функции
не визуальных методов vcl....
Если помог, тут весы есть , Вам не сложно, а мне приятно.

Последний раз редактировалось Perchik71; 14.12.2012 в 19:12.
Perchik71 вне форума Ответить с цитированием
Старый 14.12.2012, 23:04   #6
Muvvka
Пользователь
 
Аватар для Muvvka
 
Регистрация: 27.04.2012
Сообщений: 18
По умолчанию

вот часть структур...
Код:
//---------------------------------------------------------------------------
#include <iostream>
#include <fstream>
#include <windows>
#pragma hdrstop

//---------------------------------------------------------------------------
using namespace std;
#pragma argsused

int main(int argc, char* argv[])
{

short Type;          //сигнатура BM 0x4D42
long  Size;          //размер файла в байтах 3*H*W+54
long  Reserved;      //зарезервировано 0
long  OffsetBits;    //смещение изображения от начала файла 54
ifstream in("test.bmp", ios::in | ios::binary);
if(!in){cout<<"Dont opened\n";return 1;}
in.read((char *) &Type, 2);
in.read((char *) &Size, 3);
in.read((char *) &Reserved, 4);
in.read((char *) &OffsetBits, 3);
cout<<"Type : "<<hex<<Type<<"\n"<<dec;
cout<<"Size : "<<Size<<"\n";
cout<<"Reserved : "<<Reserved<<"\n";
cout<<"OffsetBits : "<<OffsetBits/256<<"\n";
in.close();
Sleep(10000);
return 0;
}
вот что то вроде этого мне и надо)
Muvvka вне форума Ответить с цитированием
Старый 15.12.2012, 01:43   #7
Perchik71
С++, Delphi
Форумчанин
 
Аватар для Perchik71
 
Регистрация: 24.11.2012
Сообщений: 495
По умолчанию

статья
в принципе код си там ошибочный.
так что не обращай внимание...
читай заголовки
BITMAPFILEHEADER
BITMAPINFOHEADER
после чего можно получить диб
но лучше фуны нет.. как эта
func
если установить флаги как нужно оно вернёт диб и ещё откроет с файла
диб структурв что будет.. там будет данные и длина и битность итд итд итд.
Если помог, тут весы есть , Вам не сложно, а мне приятно.
Perchik71 вне форума Ответить с цитированием
Старый 15.12.2012, 01:46   #8
Perchik71
С++, Delphi
Форумчанин
 
Аватар для Perchik71
 
Регистрация: 24.11.2012
Сообщений: 495
По умолчанию

учти коменты к ней тупые ибо люди бараны.. она уже возвращает не hbitmap а сам dib структуру... маразматы... даже амерекосы не знают свой родной язык.. чурбы амерекосовские.
Если помог, тут весы есть , Вам не сложно, а мне приятно.
Perchik71 вне форума Ответить с цитированием
Старый 15.12.2012, 01:48   #9
Perchik71
С++, Delphi
Форумчанин
 
Аватар для Perchik71
 
Регистрация: 24.11.2012
Сообщений: 495
По умолчанию

LR_CREATEDIBSECTION
0x00002000



When the uType parameter specifies IMAGE_BITMAP, causes the function to return a DIB section bitmap rather than a compatible bitmap. This flag is useful for loading a bitmap without mapping it to the colors of the display device.

чёрно по белому... return a DIB section, какого ***
в коментах приводят в HBITMAP и у них ошибки я не знаю..
Если помог, тут весы есть , Вам не сложно, а мне приятно.
Perchik71 вне форума Ответить с цитированием
Старый 15.12.2012, 09:05   #10
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Цитата:
если установить флаги как нужно оно вернёт диб и ещё откроет с файла
диб структурв что будет.. там будет данные и длина и битность итд итд итд.
А по-русски можно? Ваши изречения, я понял, хоть и "крышу" снесло. Я то-же так могу - "Оно-ж конечно, ничего, особо ежели касаясь, Не потому-что, дескать, например, но всё-ж".
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder
Smitt&Wesson вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
перевод с MS Vs на builder C++ Aleksandra1990 Помощь студентам 0 16.02.2012 02:41
перевод из Delphi в C++Builder Karina89 Помощь студентам 2 17.11.2011 21:20
Перевод с Delphi на C++ Builder Олегус Помощь студентам 2 24.12.2009 09:35
Перевод из Delphi в C++ Builder kitty19 Помощь студентам 0 06.12.2009 17:30
Перевод с Delphi на C++ Builder ClausXXX Помощь студентам 0 24.10.2009 06:06