Лена |
Отправлено: 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"));
Отредактировано 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
|
Дык если есть
то этого достаточно.
Сам н-файл не мог случайно пострадать?
Если не большой юнит приведите целиком.
|
|
Лена |
Отправлено: 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). а за исходники только ты несёшь полную ответственность. |
Спасибо, теперь стала умнее |
|
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]
|
|