Текущий архив: 2006.03.05;
Скачать: CL | DM;
Вниз
Написал парсер 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;
Скачать: CL | DM;
Память: 0.52 MB
Время: 0.012 c