Модераторы: Vitalik
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Использование компонента Synedit... ошибка при компиляции 
V
    Опции темы
creater
  Дата 20.12.2004, 16:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 20.12.2004

Репутация: нет
Всего: нет



Доброго времени суток всем.

Птаюсь выполнить подкраску фрагментов текста отталкиваясь от примера написанного на Delphi - Simple Example Source :-(
На билдере примеров к сожалению не нашел :-(

Код

procedure TForm1.Button3Click(Sender: TObject);
 var kw:TSynSymbolGroup;
begin
 SynUniSyn1.MainRules.Reset;
 SynEdit1.Highlighter:=nil;

 kw:=TSynSymbolGroup.Create('',TSynHighlighterAttributes.Create('unknown'));
 kw.Name:='Example 1';
 kw.Attribs.Foreground:=clRed;
 kw.Attribs.Background:=clWhite;
 kw.KeywordsList.assign(memo1.Lines);
 SynUniSyn1.MainRules.AddSymbolGroup(kw);

SynEdit1.Highlighter:=SynUniSyn1;
end;


Попытался перевести на билдер

Код

void __fastcall TForm1::Button3Click(TObject *Sender)
{
TSynSymbolGroup *kw;
SynUniSyn1->MainRules->Reset();
SynMemo1->Highlighter = NULL;

 kw =
 TSynSymbolGroup->Create("",TSynHighlighterAttributes->Create("unknown")); //1
 kw->Name = "Example 1";
 kw->Attribs->Foreground = clRed;
 kw->Attribs->Background = clWhite;
 kw->KeywordsList->Assign(Memo1->Lines);
 SynUniSyn1->MainRules->AddSymbolGroup(kw);

SynMemo1->Highlighter=SynUniSyn1;
}


И вот на строчке 1 компилятор ругается, что не знает что такое
TSynSymbolGroup и TSynHighlighterAttributes

[C++ Error] Unit1.cpp(181): E2108 Improper use of typedef 'TSynSymbolGroup'
[C++ Error] Unit1.cpp(181): E2108 Improper use of typedef
'TSynHighlighterAttributes'

хотя подключение необходимых модулей выполнено
#pragma link "SynEditHighlighter"
#pragma link "SynUniHighlighter"


Если кто сможет подсказать и вас это не затруднит то могли бы конкретно исправить написанный фрагмент на Билдере чтоб это дело заработало.
smile

Заранее большое спасибо.
PM MAIL   Вверх
barsuk
Дата 21.12.2004, 09:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 11.12.2003

Репутация: нет
Всего: нет



Ты неправильно используеш определение типов

Код

TSynSymbolGroup *kw;
TSynHighlighterAttributes *rt;
kw->Create("",rt->Create("unknown")); //1


Примерно так должно это выглядеть.
PM MAIL   Вверх
Vitalik
Дата 30.12.2004, 22:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Координатор проекта
Сообщений: 653
Регистрация: 8.11.2004
Где: Ukraine, Kharkov

Репутация: 9
Всего: 12



creater, ошибка состоит в том, что в С++ динамическое создание переменных сделано совсем по другому, не так как в Delphi.

Если в Delphi, чтобы динамически создать объект (например, TMyObject) и вернуть его в переменную (например, myObject), нужно писать так:
Код
myObject := TObject.Create([Параметры конструктора...]);
то в C++ нужно писать так:
Код
TMyObject myObject = new TMyObject([Параметры конструктора...]);


Поэтому, чтобы Ваш пример заработал, нужно код исправить следующим образом:
Код
void __fastcall TForm1::Button1Click(TObject *Sender)
{
TSynSymbolGroup *kw;
SynUniSyn1->MainRules->Reset();
SynMemo1->Highlighter = NULL;
kw = new TSynSymbolGroup("", new TSynHighlighterAttributes("unknown")); //1
kw->Name = "Example 1";
kw->Attribs->Foreground = clRed;
kw->Attribs->Background = clWhite;
kw->KeywordsList->Assign(Memo1->Lines);
SynUniSyn1->MainRules->AddSymbolGroup(kw);

SynMemo1->Highlighter=SynUniSyn1;
}
(изменена только строчка с комментарием '//1')
PM MAIL WWW ICQ YIM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | SynUniHighlighter и SynEdit | Следующая тема »


 




[ Время генерации скрипта: 0.1523 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.