• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

Подсветка синтаксиса

  • Автор темы ????
  • Дата начала
?

????

Нужен простенький компонент (или пример кода) для подсветки задаваемого синтаксиса в простом edit'е (можно и rich). Навароченность не приветствуется - только выделиние другим цветом определённых заданных выражений.
 
Z

zubr

????

Вот код на компонент для Edit'а:
Код:
unit EditSint;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;

type
TEditSint = class(TEdit)
private
 { Private declarations }
 FColorSint:TColor;
 FColorDefoult:TColor;
 FList:TStrings;
protected
 { Protected declarations }
 procedure Change; override;
 procedure SetList(value:TStrings);
public
 { Public declarations }
 constructor Create(AOwner: TComponent); override;
 destructor Destroy; override;
published
 { Published declarations }
 property ColorSint:TColor read FColorSint write FColorSint;//цвет подсветки
 property ColorDefoult:TColor read FColorDefoult write FColorDefoult;//цвет по умолчанию
 property List:TStrings read FList write SetList;//список выражений, которые должны подсвечиваться
end;

procedure Register;

implementation

procedure Register;
begin
RegisterComponents('Samples', [TEditSint]);
end;

constructor TEditSint.Create(AOwner: TComponent);
begin
inherited create(AOwner);
FList:=TStringList.Create;
FColorSint:=clBlack;
FColorDefoult:=clBlack;
end;

destructor TEditSint.Destroy;
begin
inherited;
FList.Free;
end;

procedure TEditSint.Change;
var
i:Integer;
b:boolean;
begin
inherited;
If FList.Count=0 then
begin
Self.Font.Color:=FColorDefoult;
exit;
end;
b:=False;
For i:=0 to FList.Count-1 do
begin
If Self.Text=FList.Strings[i] then
begin
 b:=True;
 Self.Font.Color:=FColorSint;
 break;
end;
end;
If not b then
Self.Font.Color:=FColorDefoult;
end;

procedure TEditSint.SetList(value:TStrings);
begin
TStringList(FList).Clear;
TStringList(FList).Assign(value);
end;

end.
 
?

????

zubr
Спасибо. Хоть это в таком виде и не работает (надо выделять часть текста), но основа есть - доделаю.
 
Z

zubr

????

Должно работать, я у себя тестил, может что не так делаешь при создании компонента?

ЗЫ Делал в Delphi5
 
?

????

zubr
Должно работать
оно и работает. только не совсем как мне надо. а надо - при списке подсвечиваемых a b с должно выводить a+b+c.
З.Ы. Выход найден - нашел подходящий компонент.
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!