Компоненты и примеры
Модератор: Модераторы
- Attid
- долгожитель
- Сообщения: 2588
- Зарегистрирован: 27.10.2006 17:29:15
- Откуда: 44°32′23.63″N 41°2′25.2″E
- Контактная информация:
Компоненты и примеры
все таки такая тема нужна хоть и в поиске много чего можно уже найти на торри ничегоне началось а на нашем сайте пока тихо.
для начало много всего есть в придачу это примеры
/lazarus/examples/
и компоненты
/lazarus/components/
не знаю есть ли описания всего что там на русском если нет надо будет описать в этом топике.
компонеты еще есть на оф сайте http://www.lazarus.freepascal.org/modul ... eA&show=10
тоже надо будет перенести сюда с описанием на русском.
Lazarus Code and Component Repository
Предотвращение запуска нескольких копий программы.
RxLib от Лагунова Алексея
http://www.alexs75.narod.ru/fpc/rxfpc/index.html
alexsDataSet от Лагунова Алексея
http://www.alexs75.narod.ru/fpc/fbdataset/index.htm
LazReport генератор отчетов на основе freereport
http://lazreport.sourceforge.net/
последняя версия
http://mx.geocities.com/jesusrmx/lazaru ... 608.tar.gz
OpenGL Box позволяет рисовать OpenGL на форме.
http://www.slashstone.com/more/openglbox/
lNet сетевые компоненты
( * Base lNet TCP/UDP - stable
* Telnet Client - stable*
* FTP Client - stable*
* SMTP Client - stable**
* HTTP Client - experimental
* HTTP Server - experimental )
http://wiki.lazarus.freepascal.org/lNet
reportlivre генератор отчетов
https://sourceforge.net/projects/reportlivre/
Orpheus Port куча компонент от поворачиваех лейболов до компонент работающих с ДБ . надо их будет потестить
http://web.fastermac.net/~MacPgmr/OrphP ... tatus.html
Pascal Data Objects компонент доступа к различным БД
http://pdo.sourceforge.net/
Multilanguage unit/framework for Lazarus
http://www.softwareschule.ch/download/laz_multilang.zip
для начало много всего есть в придачу это примеры
/lazarus/examples/
и компоненты
/lazarus/components/
не знаю есть ли описания всего что там на русском если нет надо будет описать в этом топике.
компонеты еще есть на оф сайте http://www.lazarus.freepascal.org/modul ... eA&show=10
тоже надо будет перенести сюда с описанием на русском.
Lazarus Code and Component Repository
Предотвращение запуска нескольких копий программы.
RxLib от Лагунова Алексея
http://www.alexs75.narod.ru/fpc/rxfpc/index.html
alexsDataSet от Лагунова Алексея
http://www.alexs75.narod.ru/fpc/fbdataset/index.htm
LazReport генератор отчетов на основе freereport
http://lazreport.sourceforge.net/
последняя версия
http://mx.geocities.com/jesusrmx/lazaru ... 608.tar.gz
OpenGL Box позволяет рисовать OpenGL на форме.
http://www.slashstone.com/more/openglbox/
lNet сетевые компоненты
( * Base lNet TCP/UDP - stable
* Telnet Client - stable*
* FTP Client - stable*
* SMTP Client - stable**
* HTTP Client - experimental
* HTTP Server - experimental )
http://wiki.lazarus.freepascal.org/lNet
reportlivre генератор отчетов
https://sourceforge.net/projects/reportlivre/
Orpheus Port куча компонент от поворачиваех лейболов до компонент работающих с ДБ . надо их будет потестить
http://web.fastermac.net/~MacPgmr/OrphP ... tatus.html
Pascal Data Objects компонент доступа к различным БД
http://pdo.sourceforge.net/
Multilanguage unit/framework for Lazarus
http://www.softwareschule.ch/download/laz_multilang.zip
Последний раз редактировалось Attid 08.06.2007 21:51:34, всего редактировалось 3 раза.
- Attid
- долгожитель
- Сообщения: 2588
- Зарегистрирован: 27.10.2006 17:29:15
- Откуда: 44°32′23.63″N 41°2′25.2″E
- Контактная информация:
Примеры
примеры от shade
svn http://tools.assembla.com/svn/zalex/examples (для анонимного checkout попробуйте guest/guest, если будут проблемы дайте знать или зарегистрируйтесь http://www.assembla.com/ )
пример пазла на лазарусе
http://www.softwareschule.ch/download/laz_puzzle.zip
VNC клиент на Lazarus by David Schenk
http://sourceforge.net/projects/dsk
примеры от shade
svn http://tools.assembla.com/svn/zalex/examples (для анонимного checkout попробуйте guest/guest, если будут проблемы дайте знать или зарегистрируйтесь http://www.assembla.com/ )
пример пазла на лазарусе
http://www.softwareschule.ch/download/laz_puzzle.zip
VNC клиент на Lazarus by David Schenk
http://sourceforge.net/projects/dsk
Последний раз редактировалось Attid 07.06.2007 10:28:50, всего редактировалось 1 раз.
- Attid
- долгожитель
- Сообщения: 2588
- Зарегистрирован: 27.10.2006 17:29:15
- Откуда: 44°32′23.63″N 41°2′25.2″E
- Контактная информация:
cgi
CGI Data Modules
Incomplete: Requires implementation of the IDE Interface for data modules.
codetools
The builtin pascal parser and pascal completion/refactoring tools of the IDE.
custom
Obsolete: Use packages instead
User defined components for the IDE
fpcunit
template for a fpcunit gui test runner
gtk
GTK specific components
gtkglarea
An OpenGL control. Only usable with the gtk interface under linux.
htmllite
HTMLLite package. A multithreaded HTML control.
interbase
Interbase database package.
jpeg
JPEG support for LCL and IDE.
memds
TMemDataset датасет работаеющий с памятью или локальным файлом.
mpaslex
Небольшой парсер для pascal.
не является на самом деле компонентом.
mysql
MySQL database package.
sdf
SDF database package.
sqlite
SQLite database package.
synedit
Редактор который используется самим IDE.
оф страница http://sourceforge.net/projects/synedit/
synunihighlighter
Модуль универсальной подсветки для synedit.
http://www.delphist.com/UniHighlighter.html
http://www.delphist.com/unidownloads.html
tdbf
TDBF database package.
turbopower_ipro
A HTML control.
CGI Data Modules
Incomplete: Requires implementation of the IDE Interface for data modules.
codetools
The builtin pascal parser and pascal completion/refactoring tools of the IDE.
custom
Obsolete: Use packages instead
User defined components for the IDE
fpcunit
template for a fpcunit gui test runner
gtk
GTK specific components
gtkglarea
An OpenGL control. Only usable with the gtk interface under linux.
htmllite
HTMLLite package. A multithreaded HTML control.
interbase
Interbase database package.
jpeg
JPEG support for LCL and IDE.
memds
TMemDataset датасет работаеющий с памятью или локальным файлом.
mpaslex
Небольшой парсер для pascal.
не является на самом деле компонентом.
mysql
MySQL database package.
sdf
SDF database package.
sqlite
SQLite database package.
synedit
Редактор который используется самим IDE.
оф страница http://sourceforge.net/projects/synedit/
synunihighlighter
Модуль универсальной подсветки для synedit.
http://www.delphist.com/UniHighlighter.html
http://www.delphist.com/unidownloads.html
tdbf
TDBF database package.
turbopower_ipro
A HTML control.
Последний раз редактировалось Attid 08.06.2007 14:00:12, всего редактировалось 1 раз.
У кого есть ссылка на компонент ASC для Lazarus?
Компонент для кроссплатформенной работы со звуком.
Лежит перед носом и неувидел
.
svn версия
https://lazarus-ccr.svn.sourceforge.net/svnroot/lazarus-ccr/components/acs
Компонент для кроссплатформенной работы со звуком.
Лежит перед носом и неувидел
svn версия
https://lazarus-ccr.svn.sourceforge.net/svnroot/lazarus-ccr/components/acs
для Lazarus есть компоненты на BDE, ADO и какие-нибудь средства создания отчетов?
Attid писал(а):это не кросплатформенные решения, может ZeosLib подойдет ?
Не знаю, нужно посмотреть. ZeosLib - это стандартный или нужно устанавливать, можешь дать ссылку?
Dzirt писал(а):ZeosLib - это стандартный или нужно устанавливать, можешь дать ссылку?
Это отдельный компонент, в стандартную поставку Lazarus он не входит. Взять можно по адресам
http://sourceforge.net/projects/zeoslib
http://zeos.firmos.at/
Нет ли под FPC/Lazarus какого-нибудь парсера мат. выражений?
Код: Выделить всё
Преобразование строки в математическое выражение и получение результата.
Автор: Vimil Saju
Представляю Вашему вниманию сомпонент, на вход которого подаётся строка, содержащая математическое выражение, а на выходе результат вычисления этого выражения. При необходимости Вам не составит труда добавить в компонент такие функции как sin,cos,log,tan и т.д. Единственная неприятность, это присутствие глюка. Если ввести строку типа '5* -3', то мы получим ошибку. Я обязательно в ближайшее время постараюсь исправить данный баг.
Совместимость: Delphi 4.x (или выше)
Собственно сам исходничек:
unit MathComponent;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,math;
type
TMathtype=(mtnil,mtoperator,mtlbracket,mtrbracket,mtoperand);
type
TMathOperatortype=(monone,moadd,mosub,modiv,momul,mopow);
type
pmathchar = ^Tmathchar;
TMathChar = record
case mathtype: Tmathtype of
mtoperand:(data:extended);
mtoperator:(op:TMathOperatortype);
end;
type
TMathControl = class(TComponent)
private
input,output,stack:array of tmathchar;
fmathstring:string;
function getresult:extended;
function calculate(operand1,operand2,operator:Tmathchar):extended;
function getoperator(c:char):TMathOperatortype;
function getoperand(mid:integer;var len:integer):extended;
procedure processstring;
procedure convertinfixtopostfix;
function isdigit(c:char):boolean;
function isoperator(c:char):boolean;
function getprecedence(mop:TMathOperatortype):integer;
protected
published
property MathExpression:string read fmathstring write fmathstring;
property MathResult:extended read getresult;
end;
procedure Register;
implementation
function Tmathcontrol.calculate(operand1,operand2,operator:Tmathchar):extended;
begin
result:=0;
case operator.op of
moadd:
result:=operand1.data + operand2.data;
mosub:
result:=operand1.data - operand2.data;
momul:
result:=operand1.data * operand2.data;
modiv:
if (operand1.data<>0) and (operand2.data<>0) then
result:=operand1.data / operand2.data
else
result:=0;
mopow: result:=power(operand1.data,operand2.data);
end;
end;
function Tmathcontrol.getresult:extended;
var
i:integer;
tmp1,tmp2,tmp3:tmathchar;
begin
convertinfixtopostfix;
setlength(stack,0);
for i:=0 to length(output)-1 do
begin
if output[i].mathtype=mtoperand then
begin
setlength(stack,length(stack)+1);
stack[length(stack)-1]:=output[i];
end
else if output[i].mathtype=mtoperator then
begin
tmp1:=stack[length(stack)-1];
tmp2:=stack[length(stack)-2];
setlength(stack,length(stack)-2);
tmp3.mathtype:=mtoperand;
tmp3.data:=calculate(tmp2,tmp1,output[i]);
setlength(stack,length(stack)+1);
stack[length(stack)-1]:=tmp3;
end;
end;
result:=stack[0].data;
setlength(stack,0);
setlength(input,0);
setlength(output,0);
end;
function Tmathcontrol.getoperator(c:char):TMathOperatortype;
begin
result:=monone;
if c='+' then
result:=moadd
else if c='*' then
result:=momul
else if c='/' then
result:=modiv
else if c='-' then
result:=mosub
else if c='^' then
result:=mopow;
end;
function Tmathcontrol.getoperand(mid:integer;var len:integer):extended;
var
i,j:integer;
tmpnum:string;
begin
j:=1;
for i:=mid to length(fmathstring)-1 do
begin
if isdigit(fmathstring[i]) then
begin
if j<=20 then
tmpnum:=tmpnum+fmathstring[i];
j:=j+1;
end
else
break;
end;
result:=strtofloat(tmpnum);
len:=length(tmpnum);
end;
procedure Tmathcontrol.processstring;
var
i:integer;
numlen:integer;
begin
i:=0;
numlen:=0;
setlength(output,0);
setlength(input,0);
setlength(stack,0);
fmathstring:='('+fmathstring+')';
setlength(input,length(fmathstring));
while i<=length(fmathstring)-1 do
begin
if fmathstring[i+1]='(' then
begin
input[i].mathtype:=mtlbracket;
i:=i+1;
end
else if fmathstring[i+1]=')' then
begin
input[i].mathtype:=mtrbracket;
i:=i+1;
end
else if isoperator(fmathstring[i+1]) then
begin
input[i].mathtype:=mtoperator;
input[i].op:=getoperator(fmathstring[i+1]);
i:=i+1;
end
else if isdigit(fmathstring[i+1]) then
begin
input[i].mathtype:=mtoperand;
input[i].data:=getoperand(i+1,numlen);
i:=i+numlen;
end;
end;
end;
function Tmathcontrol.isoperator(c:char):boolean;
begin
result:=false;
if (c='+') or (c='-') or (c='*') or (c='/') or (c='^') then
result:=true;
end;
function Tmathcontrol.isdigit(c:char):boolean;
begin
result:=false;
if ((integer(c)> 47) and (integer(c)< 58)) or (c='.') then
result:=true;
end;
function Tmathcontrol.getprecedence(mop:TMathOperatortype):integer;
begin
result:=-1;
case mop of
moadd:result:=1;
mosub:result:=1;
momul:result:=2;
modiv:result:=2;
mopow:result:=3;
end;
end;
procedure Tmathcontrol.convertinfixtopostfix;
var
i,j,prec:integer;
begin
processstring;
for i:=0 to length(input)-1 do
begin
if input[i].mathtype=mtoperand then
begin
setlength(output,length(output)+1);
output[length(output)-1]:=input[i];
end
else if input[i].mathtype=mtlbracket then
begin
setlength(stack,length(stack)+1);
stack[length(stack)-1]:=input[i];
end
else if input[i].mathtype=mtoperator then
begin
prec:=getprecedence(input[i].op);
j:=length(stack)-1;
if j>=0 then
begin
while(getprecedence(stack[j].op)>=prec) and (j>=0) do
begin
setlength(output,length(output)+1);
output[length(output)-1]:=stack[j];
setlength(stack,length(stack)-1);
j:=j-1;
end;
setlength(stack,length(stack)+1);
stack[length(stack)-1]:=input[i];
end;
end
else if input[i].mathtype=mtrbracket then
begin
j:=length(stack)-1;
if j>=0 then
begin
while(stack[j].mathtype<>mtlbracket) and (j>=0) do
begin
setlength(output,length(output)+1);
output[length(output)-1]:=stack[j];
setlength(stack,length(stack)-1);
j:=j-1;
end;
if j>=0 then
setlength(stack,length(stack)-1);
end;
end;
end;
end;
procedure Register;
begin
RegisterComponents('Samples', [TMathControl]);
end;
end.
Парсер рабочий, правда я его использовал не как компонент, а как юнит и потом переделывал для других целей. Если будете разбирать - почитайте о польской нотации (записи), все маф парсеры построены на этом принципе.
почитайте о польской нотации
правильней будет "обратная польская нотация"....
B4rr4cuda писал(а):Парсер рабочий, правда я его использовал не как компонент, а как юнит и потом переделывал для других целей. Если будете разбирать - почитайте о польской нотации (записи), все маф парсеры построены на этом принципе.
Спасибо большое =)
Я уже завалился книгами, ссылками и т.п. и сам начал писать. Практически точно по статье на "Королевстве Delphi" - http://www.delphikingdom.com/asp/viewitem.asp?catalogid=10. Единственное отличие - класс + поддержка переменных (правда, назвать это "фичей" язык не поворачивается =)). Если надо - допишу, код выложу, хотя код-то довольно простой (как оказалось).
Правда, как я понял, обратная польская нотация в статье не используется.
Бегло просмотрел статью, там действительно используется другой подход - вместо обратной записи используется рекурсивное вычисление.
А есть Indy под lazarus и где его достать???
