Форум: "Основная";
Текущий архив: 2007.08.26;
Скачать: [xml.tar.bz2];
ВнизКак нормально определить каждое "слово" в коде?.. Найти похожие ветки
← →
SkySpeed (2007-06-14 02:08) [0]Пусть имеем кусок кода:
unit MyPanel;
interface
uses
Windows, SysUtils, Classes, Controls, ExtCtrls, Graphics, Jpeg;
type
TVAlignment=(InTop,InCenter,InBottom);
type
TPanelka = class(TCustomPanel)
private
{ Private declarations }
FPicture:String; //Путь к рисунку
FAlignment: TAlignment;
FVAlignment:TVAlignment;
FTopColor:TColor;
FBottomColor:TColor;
FTranspEnable:Boolean;
procedure SetTopColor(TopColor:TColor);
procedure SetBottomColor(BottomColor:TColor);
procedure SetAlignment(Value:TAlignment);
procedure SetVAlignment(Value:TVAlignment);
procedure SetTransp(Transparent:Boolean);
procedure MyCanvasDraw(Rect:TRect;Font:TFont;Canvas:TCanvas;
MyCaption:TCaption;MyFlag:Integer);
procedure SetPicture(Pic:String);
Необходимо пройтись по коду и перебрать все встречающиемя слова
Пробывал так:procedure TForm1.Button1Click(Sender: TObject);
var
s,x:Integer;
a,ts:String;
begin
for x:=0 to RichEdit1.Lines.Count-1 do
begin
a:=RichEdit1.Lines.Strings[x];
for s:=1 to Length(a) do
begin
if a[s]<>" " then
ts:=ts+a[s];
if (a[s]=" ") OR (s=Length(a)) then
begin
ShowMessage(ts+":"+IntToStr(Length(ts)));
ts:="";
end;
end;
end;
end;
Но в результате многие слова пропускаются...
Что подскажете?
P.S.: думал написать программу, которая проверяет каждое слово соответствие зарезервированному слову и если это з.с., то выделяет его (используя TRichEdit)
Зарезервированные слова думал хранить в отдельном TListBox
← →
Германн © (2007-06-14 02:24) [1]
> Как нормально определить каждое "слово" в коде?.. [D6, D7,
> WinXP]
>
> SkySpeed (14.06.07 02:08)
>
> Необходимо пройтись по коду и перебрать все встречающиемя
> слова
> Но в результате многие слова пропускаются...
>
> Что подскажете?
>
Нет бога, кроме Дельфи. А Rxlib стОит загрузить на свой комп. :)
Две функции из Rxlib и никаких проблем!
WordCount & WordPosition.
← →
Alex_C © (2007-06-14 09:47) [2]Гм. Для интереса проверил у себя - все работает. Какие слова у тебя не выводятся?
← →
Игорь Шевченко © (2007-06-14 10:45) [3]Для того, чтобы пройтись по коду, вовсе не обязательно загружать его в RichEdit
← →
clickmaker © (2007-06-14 10:48) [4]
> SkySpeed (14.06.07 02:08)
а предполагается, что слова - это только то, что разделяется пробелами?
потому как в коде не видно обработки других разделителей, скобок, например
← →
Anatoly Podgoretsky © (2007-06-14 11:31) [5]Пока нет четко определения, что такое слова, то не о чем и говорить.
Во всяком случае приведенный код неработоспособен даже для пробелов.
Начать надо с постановки задачи, в части определения, что такое слово, ну а дальше дело техники.
← →
Style © (2007-06-14 12:30) [6]
> потому как в коде не видно обработки других разделителей,
> скобок, например
да и комментарии наверное надо будет учитывать :)
По сути человек хочит парсер синтаксиса паскаля написать. В принципе нед необходимости изобретать велосипед. Ищи компоненты SynEdit.
← →
SkySpeed (2007-06-14 12:37) [7]Нет бога, кроме Дельфи. А Rxlib стОит загрузить на свой комп. :)
Две функции из Rxlib и никаких проблем!
WordCount & WordPosition.
Посторонние компоненты - это хорошо, но НО заключается в том, что в данных компонентах может быть много мусора, не нужного для решения моей задачи => сел писать свой обработчик :-)
Alex_C © (14.06.07 09:47) [2]
Гм. Для интереса проверил у себя - все работает. Какие слова у тебя не выводятся?
У меня дополнительно к словам выводятся пробелы, + не выводились uses, InTop.................. и другие
> Игорь Шевченко © (14.06.07 10:45) [3]
> Для того, чтобы пройтись по коду, вовсе не обязательно загружать
> его в RichEdit
Загрузка в RichEdit производится для последующей обработке найденных слов
clickmaker © (14.06.07 10:48) [4]
> SkySpeed (14.06.07 02:08)
а предполагается, что слова - это только то, что разделяется пробелами?
потому как в коде не видно обработки других разделителей, скобок, например
> Anatoly Podgoretsky © (14.06.07 11:31) [5]
> Пока нет четко определения, что такое слова, то не о чем
> и говорить.Во всяком случае приведенный код неработоспособен
> даже для пробелов.Начать надо с постановки задачи, в части
> определения, что такое слово, ну а дальше дело техники.
Словами считать: unit,MyPanel,interface,uses,Windows,SysUtils,Classes,Controls, ExtCtrls,Graphics,Jpeg,type,TVAlignment,InTop,InCenter,InBottom........
Т.е. словами считать, всё то, что не относится к пробелам, знакам препинания, скобкам
Каждое слово будет сверяться со списком зарезервированных слов
Если же слово является зарезервированным, то оно выделяется жирным стилем, т.е.:
RichEdit1.SelStart:=Начало_зарезервированного_слова;
RichEdit1.SelLength:=Длина_зарезервированного_слова;
RichEdit1.SelAttributes.Style:=RichEdit1.SelAttributes.Style+[fsBold];
← →
Anatoly Podgoretsky © (2007-06-14 12:50) [8]> SkySpeed (14.06.2007 12:37:07) [7]
> Т.е. словами считать, всё то, что не относится к пробелам, знакам препинания, скобкам
Но у тебя в коде только проверка на пробелы!!!
← →
OOO @Delphi (2007-06-14 12:53) [9]
> Anatoly Podgoretsky © (14.06.07 12:50) [8]
> > SkySpeed (14.06.2007 12:37:07) [7]> Т.е. словами считать,
> всё то, что не относится к пробелам, знакам препинания,
> скобкамНо у тебя в коде только проверка на пробелы!!!
Знаю! Дополнительные условия добавить не трудно...
Но как оптимизировать поиск зарезервированных слов? :-)
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2007.08.26;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.047 c