Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C++ Builder > Перевод кода с Delphi на C++(BMP)


Автор: Skymit 24.5.2011, 17:22
[Delphi->С++]
Доброго всем дня smile
Используемые программы:  "Delphi 7 Lite Full Edition v7.3.4.1" и "Borland C++Builder 6 Enterprise Edition + UPDATE 4
 
".  

Увлекся программированием. Решил написать программу чтения характеристики и просмотра графических BMP-файлов.
На Delphi 7 я ее сделал. На C++ делаю аналагичную, но не могу додумать код вывода свойств bmp - изображения содержащегося в "dlgOpen1.FileName".
Вот готовая программа в Delphi( http://rghost.ru/7711891 ) и вот почти готовая программа в C++ ( http://rghost.ru/7712531 ).
Нужно сделать перевод когда из Delphi в C++


Вот код с Delphi:
Код

procedure TForm1.Button2Click(Sender: TObject);
 var
   fileheader: TBitmapfileheader;
   infoheader: TBitmapinfoheader;
   s: TFilestream;
 begin
   s := TFileStream.Create(dlgOpen1.FileName, fmOpenRead);
   try
     s.Read(fileheader, SizeOf(fileheader));
     s.Read(infoheader, SizeOf(infoheader));
   finally
     s.Free;
   end;
   listbox1.Items.Clear;
   listbox1.Items.Add(Размер файла:    ' + IntToStr(fileheader.bfSize) + ' байт.');
   listbox1.Items.Add('Ширина:       ' + IntToStr(infoheader.biWidth) + ' пикс.');
   listbox1.Items.Add('Высота:      ' + IntToStr(infoheader.biHeight) + ' пикс.');
   listbox1.Items.Add('Цвета:    ' + IntToStr(infoheader.biBitCount) + ' бит/пиксел');
 end;


Помогите пожалуйста разобраться smile 

Автор: bsa 24.5.2011, 23:39
С++ и Builder это немного разные вещи.
Прежде чем хвататься за С++, подумай хорошенько, а настолько сильно ли он тебе нужен, что ты готов потратить несколько лет на его освоение? За 21 день его освоить нереально!

Автор: Skymit 25.5.2011, 10:27
Да smile 
Вы мне можете с кодом подсказать? smile 

Автор: Usper 25.5.2011, 16:03
Ну если просто перевести код, то получится что-то вроде:
Код

TBitmapFileHeader fileheader;
    TBitmapInfoHeader infoheader;
    TFileStream *s;
    s = new TFileStream(dlgOpen1->FileName, fmOpenRead);
    try
    {
     s->Read(&fileheader, sizeof(fileheader));
     s->Read(&infoheader, sizeof(infoheader));
    }
    catch(...)
    {

    }
    delete s;
   ListBox1->Items->Clear();
   ListBox1->Items->Add("Размер файла:    " + IntToStr(fileheader.bfSize) + " байт.");
   ListBox1->Items->Add("Ширина:       " + IntToStr(infoheader.biWidth) + " пикс.");
   ListBox1->Items->Add("Высота:      " + IntToStr(infoheader.biHeight) + " пикс.");
   ListBox1->Items->Add("Цвета:    " + IntToStr(infoheader.biBitCount) + " бит/пиксел");

... правда почему-то какую-то фигню выдаёт. smile 

Автор: Skymit 25.5.2011, 20:29
Спасибо! Все работает smile 
Вот и она: http://rghost.ru/7918551  smile 

Автор: Usper 26.5.2011, 07:54
Правда работает?  smile У меня какую-то ересь выдаёт. Файл как правило нулевого размера с офигенным разрешением под миллион на миллион пикселей.

Автор: Skymit 26.6.2011, 18:49
хе smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)