Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2006.03.05;
Скачать: [xml.tar.bz2];

Вниз

Написал парсер Delphi Syntax Highlight для этого форума))   Найти похожие ветки 

 
Glex ©   (2006-02-12 12:54) [0]

glexis.chat.ru/Data/Programming/Projects/TextParsers/DelphiSyntaxHighlight/bin/DelphiSyntaxHighlight_bin.rar

Пользуйтесь наздоровье))
Пример:

<p>program DelphiSyntaxHighlight;</p>
<p><font color="#008000">{$APPTYPE CONSOLE}</font></p>
<p><font color="#008000">{$DEFINE DEBUG}</font></p>
<p>uses</p>
<p>  SysUtils, Classes, StrUtils;</p>
<p>  type TPoint = record</p>
<p>    X: integer;</p>
<p>    Y: integer;</p>
<p>    end;</p>
<p>  var EncodeType: byte;</p>
<p>  FilePath, FileNameOut: string;</p>
<p>  space, p, U, blue, I, B, GREEN: string;</p>
<p>  cP, cU, cblue, cI, cB, cGreen: string;</p>
<p>  KeyWords: array of string;</p>
<p>  LowerCaseABC: set of <font color="#000080">"a"</font>..<font color="#000080">"z"</font>;</p>
<p>  UpperCaseABC: set of <font color="#000080">"A"</font>..<font color="#000080">"Z"</font>;</p>
<p>  Tab, TabAdd: string;</p>
<p>  n: integer;</p>
<p>  TabWidth: integer;</p>
<p>  Struct: boolean = false;</p>
<p>  txt: TStrings;</p>
<p>  <font color="#000080">(*</p>
<p>0 - HTML</p>
<p>1 - IPB(Invision Power Board)</p>
<p>*)
</font></p>
<p>  procedure WriteSyntax;</p>
<p>  begin</p>
<p>    Writeln(<font color="#000080">"____________________________________________________________ _______________"</font>);</p>
<p>    Writeln(<font color="#000080">"Syntax: "</font>);</p>
<p>    Writeln(<font color="#000080">"          -input file"</font>);</p>
<p>    Writeln(<font color="#000080">"          -output file"</font>);</p>
<p>    Writeln(<font color="#000080">"          -"</font><font color="#000080">"HTML"</font><font color="#000080">" or "</font><font color="#000080">"IPB"</font><font color="#000080">""</font>);</p>
<p>    Writeln(<font color="#000080">"          Optional keys:"</font>);</p>
<p>    Writeln(<font color="#000080">"          -struct"</font>);</p>
<p>    Writeln;</p>
<p>    Writeln(<font color="#000080">"          Where IPB is Invision Power Board type forums with "</font><font color="#000080">"["</font><font color="#000080">" "</font><font color="#000080">"]"</font><font color="#000080">" tags"</font>);</p>
<p>    Writeln(<font color="#000080">"          and HTML is html format (with <> tags)"</font>);</p>
<p>    Writeln(<font color="#000080">"          struct key structures the file according to begin..end structure"</font>);</p>
<p>    Writeln(<font color="#000080">"____________________________________________________________ _______________"</font>);</p>
<p>    end;</p>
<p>  function ParametersCheck: boolean;</p>
<p>  var s: string;</p>
<p>  j: integer;</p>
<p>  begin</p>
<p>    result:= true;</p>
<p>    Filepath:= (RightStr(ParamStr(1), length(ParamStr(1))-1));</p>
<p>    if not fileexists(FilePath) then begin</p>
<p>      Writeln(<font color="#000080">"____________________________________________________________ _______________"</font>);</p>
<p>      Writeln(<font color="#000080">"Error!"</font>);</p>
<p>      Writeln(<font color="#000080">"Error Description: File "</font><font color="#000080">""</font>+ParamStr(1)+<font color="#000080">""</font><font color="#000080">" doesn"</font><font color="#000080">"t exist or the specified filepath is invalid."</font>);</p>
<p>      Writeln(<font color="#000080">"____________________________________________________________ _______________"</font>);</p>
<p>      result:= false;</p>
<p>      end;</p>
<p>    FileNameOut:= (RightStr(ParamStr(2), length(ParamStr(2))-1));</p>
<p>    s:= ParamStr(3);</p>
<p>    s:= RightStr(s, length(s)-1);</p>
<p>    if lowercase(s)=<font color="#000080">"html"</font> then EncodeType:=0</p>
<p>    else if lowercase(s)=<font color="#000080">"ipb"</font> then EncodeType:=1</p>
<p>    else begin</p>
<p>      Writeln(<font color="#000080">"____________________________________________________________ _______________"</font>);</p>
<p>      Writeln(<font color="#000080">"Error!"</font>);</p>
<p>      Writeln(<font color="#000080">"Error Description: "</font><font color="#000080">""</font>+ParamStr(3)+<font color="#000080">""</font><font color="#000080">" is not a valid parsing mode."</font>);</p>
<p>      Writeln(<font color="#000080">"____________________________________________________________ _______________"</font>);</p>
<p>      result:= false;</p>
<p>      end;</p>
<p>    if ParamCount=4 then begin</p>
<p>      Writeln(<font color="#000080">"____________________________________________________________ _______________"</font>);</p>
<p>      Writeln(<font color="#000080">"Error!"</font>);</p>
<p>      Writeln(<font color="#000080">"Error Description: 3 or 5 parameters expected. 4 parameters found."</font>);</p>
<p>      Writeln(<font color="#000080">"____________________________________________________________ _______________"</font>);</p>
<p>      result:= false;</p>
<p>      end;</p>
<p>    if ParamCount=5 then if lowercase(ParamStr(4))<><font color="#000080">"-struct"</font> then begin</p>


 
Glex ©   (2006-02-12 12:55) [1]

Блиин, почему не работают <p> и <font>?!!!!


 
Anatoly Podgoretsky ©   (2006-02-12 13:04) [2]

А говоришь написал.


 
VirEx ©   (2006-02-12 13:13) [3]

^)


 
Marser ©   (2006-02-12 13:39) [4]

> [1] Glex ©   (12.02.06 12:55)
> Блиин, почему не работают <p> и <font>?!!!!

В форуме и не будет работать - большинство тэгов блокируется.


 
Glex ©   (2006-02-12 14:10) [5]

АААА!!!
Администраторы, разблокируйте плииииз теги <p> и <font>, ну или хотя бы <font>!!!!

:)))))


 
McSimm ©   (2006-02-12 14:18) [6]

подсветка синтаксиса на форуме будет.


 
begin...end ©   (2006-02-12 14:19) [7]

> McSimm ©   (12.02.06 14:18) [6]

Кстати, можно сделать, чтобы длинные ссылки не разрывались?


 
McSimm ©   (2006-02-12 14:22) [8]

будут тэги для Делфи кода и для SQL, сейчас включить не могу, т.к. движок форума меняться будет целиком.

пример подсветки можно увидеть в последней статье
http://www.delphimaster.ru/articles/dbtoword/index.html

Кстати, не придумал пока как победить длинные строки - разбивать программно в коде не очень правильно...


 
McSimm ©   (2006-02-12 14:23) [9]

>Кстати, можно сделать, чтобы длинные ссылки не разрывались?
Да, это тоже будет сделано


 
Glex ©   (2006-02-12 15:09) [10]

McSimm

Длинные строки где?
Может смогу как-нибудь помочь..


 
sniknik ©   (2006-02-12 15:11) [11]

> т.к. движок форума меняться будет целиком.
когда? приблизительные сроки?

> пример подсветки можно увидеть в последней статье
в примере некоторые длинные строки вылазят за пределы выделенной рамки, если смотреть в мозилеIE нормально, более менее, "бокс" расширяется до длинны строки, но лучше бы был перенос выходящих за размер экрана...)

в общем если предполагается нормальная поддержка альтернативных браузеров то код надо еще "доводить", если же будет позиционироваться исключительно под IE то и так сойдет. ;)


 
ferr ©   (2006-02-12 15:35) [12]


> http://www.delphimaster.ru/articles/dbtoword/index.html

private и public не подсвечены :)


 
Anatoly Podgoretsky ©   (2006-02-12 15:42) [13]

sniknik ©   (12.02.06 15:11) [11]
Если к этому будет относиться URL то это будет очень плохо, что мы сейчас и наблюдаем


 
McSimm ©   (2006-02-12 15:42) [14]

> sniknik ©   (12.02.06 15:11)
Будем доводить.
О сроках я говорить пока только учусь, только-только начинает получаться -- но это на основной работе :)

Написал письмо по анкетному, посмотри пожалуйста


 
Glex ©   (2006-02-12 15:44) [15]

А, да. Может пригодиться список ключевых слов:

and
array
as
asm
begin
case
class
const
constructor
destructor
dispinterface
div
do
downto
else
end
except
exports
file
finalization
finally
for
function
goto
if
implementation
in
inherited
initialization
inline
interface
is
label
library
mod
nil
not
object
of
or
out
packed
procedure
program
property
raise
record
repeat
resourcestring
set
shl
shr
string
then
threadvar
to
try
type
unit
until
uses
var
while
with
xor
private
protected
public
published
automated
at
on


 
Marser ©   (2006-02-12 17:20) [16]

> [15] Glex ©   (12.02.06 15:44)
> А, да. Может пригодиться список ключевых слов:

Ещё латинский алфавит напомни, а то может Максим забыл :-))


 
sniknik ©   (2006-02-12 17:21) [17]

Anatoly Podgoretsky ©   (12.02.06 15:42) [13]
не. там пример секций кода, то что счас просто синим выделяется (и моноширинным шрифтом). если в таком будут разрывы URL не беда, это выделение не под ссылки заточено.
"беда" будет при "тупом" копировании кода с сайта в проект, разрывы (если их сделать програмно самим строкам) будут естественно глючить. (в общемто этоже мне Максим в письме указал) но я думал о другом, разрывать форматированием (если возможно) т.е. также как например делает "Блокнот", или (не уверен) если текст находится в ячейке таблици то его тоже броузер нормально отобразит физичеки строк не разрывая.


 
McSimm ©   (2006-02-12 17:26) [18]

с длинными ссылками решается просто - урезается отображаемый текст ссылки и сохраняется (до разумных пределов, конечно) длина href


 
SkyRanger ©   (2006-02-13 02:00) [19]

С длинными ссылками можно поступить еще проще - если не указано описание URL - заменяется на Ссылка т.е. в href пишется настоящий линк а в описании слово Ссылка, и никакого гемороя, кому надо тот задаст специально имя линка


 
GuAV ©   (2006-02-13 02:42) [20]

Про ссылки - думаю нужно очень длинные заменять на слово "ссылка", длинным - выделять отдельную строку, а короткие оставлять как есть.


 
SkyRanger ©   (2006-02-13 07:05) [21]

Угу я о том же... Так проще всего и не надо доп. вычислений...



Страницы: 1 вся ветка

Форум: "Прочее";
Текущий архив: 2006.03.05;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.52 MB
Время: 0.021 c
15-1139516547
Bogdan1024
2006-02-09 23:22
2006.03.05
помогите придумать тему для программы


15-1139559511
Jappak
2006-02-10 11:18
2006.03.05
ДБгрид


2-1139857519
Rom
2006-02-13 22:05
2006.03.05
Проблемы с Locate


15-1139408138
DillerXX
2006-02-08 17:15
2006.03.05
Слушайте, срочно нужен загран паспорт, help me ;(


4-1134327490
Destroyer
2005-12-11 21:58
2006.03.05
удаления "папки" в реестре





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский