C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
Перевод из 5 в 6 версию Builder, где ошибка
Лена
Отправлено: 15.08.2005, 17:47


Мастер участка

Группа: Участник
Сообщений: 501



У меня есть фрагмент кода из Builder 5. В шестом не компилируется. Подскажите как правильно?
CODE

void __fastcall TWebModule1::WebModule1PhotoAction(TObject *Sender,
     TWebRequest *Request, TWebResponse *Response, bool &Handled)
{
Graphics::TBitmap *B = new Graphics::TBitmap(); //тут ошибка!!!
TMemoryStream *S = new TMemoryStream();
AnsiString q1;
TLocateOptions options;

 q1 = Request->QueryFields->Values["EventNo"];
 Table1->Locate("EventNo", q1, options);
 B->Assign(Table1->FieldByName("Event_Photo"));
 B->SaveToStream(S);
 S->Position =0;
 Response->ContentType   = "image/x-xbitmap";
 Response->ContentStream = S;
 B->Free();
}

Если просто написать
TBitmap *B = new TBitmap();
то ошибка возникает на строке
B->Assign(Table1->FieldByName("Event_Photo"));

sad.gif

Отредактировано olegenty — 16/08/2005, 08:13
Rius
Отправлено: 15.08.2005, 18:44


Мастер участка

Группа: Участник
Сообщений: 321



Graphics::TBitmap *b = new Graphics::TBitmap;
все было правильно. возможно здесь подключены другие модули, в которых Graphics не содержит TBitmap, либо определен по-другому.

Отредактировано Rius — 15/08/2005, 21:44
olegenty
Отправлено: 16.08.2005, 07:16


Ветеран

Группа: Модератор
Сообщений: 2412



а какая ошибка? (в первой строке)
Лена
Отправлено: 16.08.2005, 09:49


Мастер участка

Группа: Участник
Сообщений: 501



QUOTE (olegenty @ 16/08/2005, 07:16)
а какая ошибка? (в первой строке)

Ошибка:
Qualifier ‘Graphics’ not a class or namespase name;
Undefined symbol B;

Если написать, как предложено выше: Graphics::TBitmap *b = new Graphics::TBitmap; то та же ошибка.
Может в 6 Builder надо подключить какой-то заголовочный файл для работы с TBitmap?

Это пример из книги Козлова “Программирование для Интернет на Builder 5”.
olegenty
Отправлено: 16.08.2005, 09:54


Ветеран

Группа: Модератор
Сообщений: 2412



а
CODE

#include <Graphics.hpp>

у тебя присутствует?
Gedeon
Отправлено: 16.08.2005, 10:42


Ветеран

Группа: Модератор
Сообщений: 1742



Дык если есть
CODE
#include <vcl.h>

то этого достаточно.
Сам н-файл не мог случайно пострадать?
Если не большой юнит приведите целиком.
Лена
Отправлено: 16.08.2005, 10:53


Мастер участка

Группа: Участник
Сообщений: 501



QUOTE (olegenty @ 16/08/2005, 09:54)
а
CODE

#include <Graphics.hpp>

у тебя присутствует?

Да, olegenty это решило проблему. Спасибо.
Когда я открывала пятый проект в шестом Builder, он мне предложил обновить проект до шестой версии. Я, естественно, согласилась. Оказывается все это профанация и все надо в конечном итоге добавлять и править ручками…
olegenty
Отправлено: 16.08.2005, 10:57


Ветеран

Группа: Модератор
Сообщений: 2412



это предложение Builder'а касалось только и исключительно XML-проекта (*.bpr/*.bpk). а за исходники только ты несёшь полную ответственность.
Лена
Отправлено: 16.08.2005, 11:00


Мастер участка

Группа: Участник
Сообщений: 501



QUOTE (olegenty @ 16/08/2005, 10:57)
это предложение Builder'а касалось только и исключительно XML-проекта (*.bpr/*.bpk). а за исходники только ты несёшь полную ответственность.

Спасибо, теперь стала умнее smile.gif
Gedeon
Отправлено: 16.08.2005, 11:57


Ветеран

Группа: Модератор
Сообщений: 1742



Чето я не понял
vcl.h
CODE

#ifndef VCL_H
#define VCL_H

#define INC_VCL
#include <basepch0.h>

#endif

ну и basepch0.h опустив кое что лишнее.
CODE

#include <System.hpp>
#include <Types.hpp>
#include <Windows.hpp>
#include <Messages.hpp>
#include <SysUtils.hpp>
#include <Classes.hpp>


// Core (minimal) VCL headers
//
#if defined(INC_VCL)
#include <Controls.hpp>
#include <Graphics.hpp>
#include <Forms.hpp>
#include <Dialogs.hpp>
#include <StdCtrls.hpp>
#include <ExtCtrls.hpp>
olegenty
Отправлено: 16.08.2005, 12:02


Ветеран

Группа: Модератор
Сообщений: 2412



вот я недавно на то же самое с STL попал: пока не указал конкретно, какой инклудник с шаблонами меня интересует, нихрена не работало. более того, ручное #define где-то #undef'илось... строковый поиск нихрена не дал... при этом дома и на работе компиляция шла по разным, но не нужным мне веткам. (а в докциях написано, что интересовавшая веня ветка — по умолчанию).
Лена
Отправлено: 16.08.2005, 12:12


Мастер участка

Группа: Участник
Сообщений: 501



Пример из книги это CGI приложение, которое чтобы работало помещается в исполняемый каталог сервера. В данном случае это приложение выводило на html страницу базу данных, но поскольку это СGI, то вероятно vcl.h в него Builder не включает. Там использовался WebModyle и на нем невизуальные компонеты: Table1, DataSetPageProducer1, DataSetTableProducer1, QueryTableProducer1.
Кстати если поменять #include на #include приложение тоже компилируется.
Как это работало в 5 версии без #include или #include я не понимаю, ведь это необходимо для TBitmap.

Лена
Отправлено: 16.08.2005, 12:15


Мастер участка

Группа: Участник
Сообщений: 501



Почему-то в последнем сообщении после слов include пропали угловые скобки?
Там написано Graphics.hpp и vcl.h
Gedeon
Отправлено: 16.08.2005, 12:38


Ветеран

Группа: Модератор
Сообщений: 1742



QUOTE (Лена @ 16/08/2005, 12:15)
Почему-то в последнем сообщении после слов include пропали угловые скобки?
Там написано Graphics.hpp и vcl.h

Пользуйтесь тэгами [CODE]

Вернуться в Вопросы программирования в C++Builder