Форум программистов, компьютерный форум, киберфорум
Наши страницы
C++ Builder
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.89/9: Рейтинг темы: голосов - 9, средняя оценка - 4.89
Finnchiks
0 / 0 / 0
Регистрация: 28.11.2018
Сообщений: 5
1

Undefined symbol 'TCanvas'

28.11.2018, 10:52. Просмотров 1690. Ответов 6

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
//---------------------------------------------------------------------------
 
#include <vcl.h>
#pragma hdrstop
 
#include "Unit1.h"
#include <string>
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
    : TForm(Owner)
{
}
//---------------------------------------------------------------------------
void DrawCircularText (TCanvas *Canvas, AnsiString asFontName, int iHeight, char *szText.c_str(), int iAngle, int iR, int iCX, int iCY, int iSector)
{
LOGFONT lf; // создаем объект для нестандартного шрифта
HFONT hPrevFont, hFont;
int iPass = iSector/lstrlen(szText); // расстояние между буквами
ZeroMemory(&lf,sizeof(lf));
lf.lfCharSet=RUSSIAN_CHARSET;
lf.lfWeight = 900;
for (int i=0;i<lstrlen(szText);i++)
{
lf.lfEscapement = 10*iAngle-(10*iPass*(i-1)); // угол
lstrcpy(lf.lfFaceName,asFontName.c_str()); // имя шрифта
lf.lfHeight = iHeight;
hFont = CreateFontIndirect(&lf);
hPrevFont = SelectObject (Canvas->Handle, hFont);
Canvas->TextOut (iCX+iR*sin((-180+iAngle-(i-1)*iPass)*3.14/180),iCY+iR*cos((-180+iAngle-(i-1)*iPass)*3.14/180),szText [i]); // выводим символ
hFont = SelectObject(Canvas->Handle, hPrevFont);
DeleteObject (hFont);
}
}
void __fastcall TForm1::Button2Click(TObject *Sender)
{
string x;
x = Edit1->Text;
for (int i = 0; i < x.length(); i++) {
DrawCircularText(Form1->Image1->Canvas,"Arial",15,x[i],i,200,Width/2,Height/2,1000);
}
}
//---------------------------------------------------------------------------
 
//---------------------------------------------------------------------------
При компиляции выводит ошибку Undefined symbol 'TCanvas'. В чем моя проблема?
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.11.2018, 10:52
Ответы с готовыми решениями:

Undefined symbol
Помогите пожалуйста. Нужно добавить форму к проекту, 4 добавились нормально, пятая вроде тоже, но...

Undefined symbol
Добрый день! Прошу помочь. Написал программу на С++ (Builder) без использования своих классов....

Undefined symbol
Пишет, что a,b,n,h не объявлены. Что делать? Unit1.cpp(53): E2451 Undefined symbol 'a'...

Undefined Symbol
Извините если по С++ Builder вопросы задаются не в это разделе, но я начинающий) Вот код:...

Undefined symbol
Есть два юнита. На обоих происходит осуществление динамического появления элементов на...

6
TrollHammer
774 / 499 / 242
Регистрация: 22.02.2018
Сообщений: 1,485
Записей в блоге: 2
28.11.2018, 11:14 2
Проблема в том, что это код для Builder. В какой среде Вы его компилируете?
0
Finnchiks
0 / 0 / 0
Регистрация: 28.11.2018
Сообщений: 5
28.11.2018, 12:46  [ТС] 3
Цитата Сообщение от TrollHammer Посмотреть сообщение
Проблема в том, что это код для Builder. В какой среде Вы его компилируете?
В RAD Studio, которая, вроде как и является билдером в новой упаковке, если не ошибаюсь.
0
volvo
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
28328 / 18865 / 7428
Регистрация: 22.10.2011
Сообщений: 32,996
Записей в блоге: 6
28.11.2018, 13:00 4
Лучший ответ Сообщение было отмечено Finnchiks как решение

Решение

Проблема не в TCanvas, а вот в этом: char *szText.c_str()

Как только уберешь выделенное - TCanvas сразу найдется...
0
Finnchiks
0 / 0 / 0
Регистрация: 28.11.2018
Сообщений: 5
28.11.2018, 13:22  [ТС] 5
А можете пояснить почему? Просто если убрать то начинается вот такая тема
E2034 Cannot convert 'char *' to 'const wchar_t *'
Full parser context
Unit1.cpp(19): parsing: void DrawCircularText(TCanvas *,AnsiString,int,char *,int,int,int,int,int)
0
volvo
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
28328 / 18865 / 7428
Регистрация: 22.10.2011
Сообщений: 32,996
Записей в блоге: 6
28.11.2018, 14:42 6
Лучший ответ Сообщение было отмечено Finnchiks как решение

Решение

XE4, юникодный проект: код компилируется и работает (правда что-то там у тебя с координатами накручено, но это уж разбирайся сам)

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
void DrawCircularText (TCanvas *Canvas, AnsiString asFontName,
     int iHeight, String szText, int iAngle, int iR, int iCX, int iCY, int iSector)
{
    LOGFONTA lf; // создаем объект для нестандартного шрифта
    int iPass = iSector / szText.Length();
    ZeroMemory(&lf,sizeof(lf));
    strcpy(lf.lfFaceName,asFontName.c_str()); // имя шрифта
    lf.lfCharSet= RUSSIAN_CHARSET;
    lf.lfWeight = 900;
    lf.lfHeight = iHeight;
    Canvas->Font->Color = clRed;
    for (int i=1; i <= szText.Length(); i++)
    {
        lf.lfEscapement = 10*iAngle-(10*iPass*(i-1)); // угол
        HFONT hFont = ::CreateFontIndirectA(&lf);
        Canvas->Font->Handle = hFont;
        Canvas->TextOutW(iCX+iR*sin((-180+iAngle-(i-1)*iPass)*3.14/180),
                         iCY+iR*cos((-180+iAngle-(i-1)*iPass)*3.14/180),
                         szText[i]); // выводим символ
        ::DeleteObject (hFont);
    }
}
 
void __fastcall TForm1::Button1Click(TObject *Sender)
{
    DrawCircularText(Form1->Image1->Canvas,"Arial",15, Edit1->Text,10,200,Width/2,Height/2,1000);
}
1
gunslinger
случайный прохожий
1439 / 931 / 359
Регистрация: 20.07.2013
Сообщений: 2,694
28.11.2018, 18:28 7
Возможно, последний параметр желательно делать равным 360.
C++
1
  DrawCircularText(Form1->Canvas, "Arial", 72, Edit1->Text, 10, 200, Width/2, Height/2, 360);
1
Миниатюры
Undefined symbol 'TCanvas'  
28.11.2018, 18:28
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.11.2018, 18:28

undefined symbol
дело дрянь получил задание на си++ сделать калькулятор . до этого изучал си а эту прогу мне нужно...

E2451 undefined symbol
Помогите исправить ошибку строчка: void TForm1::compute(ang, scl, inv, flw) текст ошибки: e2451...

Undefined symbol 'hInstance'
Здравствуйте! Подскажите пожалуйста по такому вопросу хочу создать edit чтобы текст вводился по...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.