Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Помогите найти ошибку в модуле компонента, для компиляции 
:(
    Опции темы
bartram
  Дата 9.12.2004, 19:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Комодератор
Сообщений: 1606
Регистрация: 22.2.2004
Где: Russia, Samara

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



Короче, есть у меня компонент вот он:
Код

unit SynHighlighterISXCode;

{
 Inno Setup
 Copyright (C) 1998-2002 Jordan Russell
 Portions by Martijn Laan
 For conditions of distribution and use, see LICENSE.TXT.

 SynEdit highlighter for the My Inno Setup Extensions [code=delphi] section.

 To be able to compile this unit, you'll have to move the TSysPasSyn.Run field
 from the private section to the protected section. This does not affect
 TSysPasSyn's functionality so if needed you can continue using it in your
 own projects.

 $Id: SynHighlighterISXCode.pas,v 1.4 2003/01/25 11:01:53 martijn Exp $
}

interface

uses
 Classes, SynEditHighlighter, SynHighlighterPas;

type
 TSynISXCodeSynTokenID = (tkConstant, tkDirective, tkEventFunction, tkSynPasSyn);

 TSynISXCodeSyn = class(TSynPasSyn)
 private
   fLine: PChar;
   fLineNumber: Integer;
   fTokenID: TSynISXCodeSynTokenID;
   fTokenPos: Integer;
   fEventFunctionsList: TStringList;
   fConstantAttri: TSynHighlighterAttributes;
   fDirectiveAttri: TSynHighlighterAttributes;
   fEventFunctionAttri: TSynHighlighterAttributes;
 public
   constructor Create(AOwner: TComponent); override;
   destructor Destroy; override;
   function GetEol: Boolean; override;
   function GetToken: String; override;
   function GetTokenAttribute: TSynHighlighterAttributes; override;
   function GetTokenKind: integer; override;
   function GetTokenPos: Integer; override;
   procedure SetLine(NewValue: String; LineNumber: Integer); override;
   procedure Next; override;
 published
   property ConstantAttri: TSynHighlighterAttributes read fConstantAttri
     write fConstantAttri;
   property DirectiveAttri: TSynHighlighterAttributes read fDirectiveAttri
     write fDirectiveAttri;
   property EventFunctionAttri: TSynHighlighterAttributes read fEventFunctionAttri
     write fEventFunctionAttri;
 end;

procedure Register;

implementation

uses
 SysUtils, SynEditStrConst,
{$IFDEF SYN_CLX}
 QGraphics;
{$ELSE}
 Graphics;
{$ENDIF}

const
 EventFunctions: string =
   'InitializeSetup,DeInitializeSetup,CurStepChanged,NextButtonClick,' +
   'BackButtonClick,SkipCurPage,CurPageChanged,CheckPassword,NeedRestart,' +
   'UpdateReadyMemo,RegisterPreviousData,CheckSerial,InitializeWizard';

constructor TSynISXCodeSyn.Create(AOwner: TComponent);
begin
 inherited;

 fEventFunctionsList := TStringList.Create();
 fEventFunctionsList.CommaText := LowerCase(EventFunctions);

 fConstantAttri := TSynHighlighterAttributes.Create('Constant');
 AddAttribute(fConstantAttri);

 fDirectiveAttri := TSynHighlighterAttributes.Create(SYNS_AttrDirective);
 fDirectiveAttri.Foreground := clRed;
 AddAttribute(fDirectiveAttri);

 fEventFunctionAttri := TSynHighlighterAttributes.Create('Event function');
 fEventFunctionAttri.Style := [fsBold];
 AddAttribute(fEventFunctionAttri);
end;

destructor TSynISXCodeSyn.Destroy;
begin
 fEventFunctionsList.Free();
end;

function TSynISXCodeSyn.GetEol: Boolean;
begin
 if fTokenID <> tkSynPasSyn then
   Result := False
 else
   Result := inherited GetEol;
end;

function TSynISXCodeSyn.GetToken: string;
var
 Len: LongInt;
begin
 if fTokenID <> tkSynPasSyn then begin
   Len := Run - fTokenPos;
   SetString(Result, (FLine + fTokenPos), Len);
 end else
   Result := inherited GetToken;
end;

function TSynISXCodeSyn.GetTokenAttribute: TSynHighlighterAttributes;
begin
 case fTokenID of
   tkConstant: Result := fConstantAttri;
   tkDirective: Result := fDirectiveAttri;
   tkEventFunction: Result := fEventFunctionAttri;
   tkSynPasSyn: Result := inherited GetTokenAttribute;
 else
   Result := nil;
 end;
end;

function TSynISXCodeSyn.GetTokenKind: integer;
begin
 if fTokenID <> tkSynPasSyn then
   Result := Ord(fTokenId)
 else
   Result := Ord(High(TSynISXCodeSynTokenID)) + inherited GetTokenKind + 1;
end;

function TSynISXCodeSyn.GetTokenPos: Integer;
begin
 if fTokenID <> tkSynPasSyn then
   Result := fTokenPos
 else
   Result := inherited GetTokenPos;
end;

procedure TSynISXCodeSyn.SetLine(NewValue: String; LineNumber: Integer);
begin
 fLine := PChar(NewValue);
 Run := 0;
 fLineNumber := LineNumber;
 inherited;
end;

procedure TSynISXCodeSyn.Next;
var
 I, Len, TmpRun: Integer;
 Token: String;
begin
 fTokenPos := Run;
 fTokenID := tkSynPasSyn;
 case fLine[Run] of
   '{':
     begin
       if fLine[Run+1] = '#' then begin
         fTokenID := tkConstant;
         Inc(Run);
         repeat
           if fLine[Run] = '}' then begin
             Inc(Run);
             Break;
           end;
           Inc(Run);
         until fLine[Run] in [#0, #10, #13];
       end;
     end;
   '#':
     begin
       fTokenID := tkDirective;
       for I := Run-1 downto 0 do begin
         if fLine[I] > ' ' then begin
           // If the '#' is not the first non-whitespace character on the
           // line, then it isn't the start of a directive.
           fTokenID := tkSynPasSyn;
           Break;
         end;
       end;
       if fTokenID = tkDirective then begin
         repeat
           Inc(Run);
         until (fLine[Run] in [#0, #10, #13]);
       end;
     end;
   'A'..'Z', 'a'..'z', '_':
     begin
       TmpRun := Run;
       Inc(TmpRun);
       while fLine[TmpRun] in ['A'..'Z', 'a'..'z', '0'..'9', '_'] do
         Inc(TmpRun);
       Len := TmpRun - fTokenPos;
       SetString(Token, (FLine + fTokenPos), Len);
       if fEventFunctionsList.IndexOf(LowerCase(Token)) <> -1 then begin
         fTokenID := tkEventFunction;
         Run := TmpRun;
       end;
     end;
 end;

 if fTokenID = tkSynPasSyn then begin
   inherited;
   //Inc(Run, Length(inherited GetToken));
 end;
end;

procedure Register;
begin
 RegisterComponents('SynEdit Other', [TSynISXCodeSyn]);
end;

initialization
{$IFNDEF SYN_CPPB_1}
 RegisterPlaceableHighlighter(TSynISXCodeSyn);
{$ENDIF}
end.

он необходим для компиляции исходников популярного инсталера Inno Setup. Третий день уже мучаюсь не могу установить этот компонент, в нём ошибок куча, парочку я конечно исправил но вот остальные... Помогите пожалуйста привести код компонента в рабочее состояние! smile


--------------------
В каждом из нас спит гений, но с каждым днем все крепче ;-)
bartram.ru
Twitter
user posted image 

PM MAIL ICQ   Вверх
Alex
Дата 9.12.2004, 20:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4147
Регистрация: 25.3.2002
Где: Москва

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



bartram, Привиди исходный вариант модуля т.к. этот уже помойму ты настолько направил.


--------------------
Написать можно все - главное четко представлять, что ты хочешь получить в конце. 
PM Skype   Вверх
bartram
Дата 9.12.2004, 22:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Комодератор
Сообщений: 1606
Регистрация: 22.2.2004
Где: Russia, Samara

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



Цитата(Alex @ 9.12.2004, 20:59)
bartram, Привиди исходный вариант модуля т.к. этот уже помойму ты настолько направил.

Как раз это и есть чистый я там не менял не чего ошибочка вышла.



--------------------
В каждом из нас спит гений, но с каждым днем все крепче ;-)
bartram.ru
Twitter
user posted image 

PM MAIL ICQ   Вверх
markowww
Дата 10.12.2004, 00:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 66
Регистрация: 27.2.2003
Где: В Вологде-где

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



там тяжело разбираться без модулей, указанных в uses....
PM MAIL   Вверх
RA
Дата 10.12.2004, 01:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Брутальный буратина
****


Профиль
Группа: Участник Клуба
Сообщений: 3497
Регистрация: 31.3.2002
Где: Лес

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



bartram Какая Delphi у тебя ?
PM   Вверх
bartram
Дата 10.12.2004, 13:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Комодератор
Сообщений: 1606
Регистрация: 22.2.2004
Где: Russia, Samara

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



Цитата(RAdmin @ 10.12.2004, 01:29)
bartram Какая Delphi у тебя ?

Delphi 7
Цитата(markowww @ 10.12.2004, 00:01)
там тяжело разбираться без модулей, указанных в uses....

Вот держи комплект исходников
Скачать


--------------------
В каждом из нас спит гений, но с каждым днем все крепче ;-)
bartram.ru
Twitter
user posted image 

PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




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


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

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