Компоненты и примеры

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Компоненты и примеры

Сообщение Attid » 07.06.2007 01:27:45

все таки такая тема нужна хоть и в поиске много чего можно уже найти на торри ничегоне началось а на нашем сайте пока тихо.
для начало много всего есть в придачу это примеры
/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
долгожитель
 
Сообщения: 2585
Зарегистрирован: 27.10.2006 17:29:15
Откуда: 44°32′23.63″N 41°2′25.2″E

Сообщение Attid » 07.06.2007 08:52:57

Примеры

примеры от 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
долгожитель
 
Сообщения: 2585
Зарегистрирован: 27.10.2006 17:29:15
Откуда: 44°32′23.63″N 41°2′25.2″E

Сообщение Attid » 07.06.2007 08:53:40

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.
Последний раз редактировалось Attid 08.06.2007 14:00:12, всего редактировалось 1 раз.
Аватара пользователя
Attid
долгожитель
 
Сообщения: 2585
Зарегистрирован: 27.10.2006 17:29:15
Откуда: 44°32′23.63″N 41°2′25.2″E

Сообщение Attid » 07.06.2007 08:55:22

Аватара пользователя
Attid
долгожитель
 
Сообщения: 2585
Зарегистрирован: 27.10.2006 17:29:15
Откуда: 44°32′23.63″N 41°2′25.2″E

Re: Компоненты и примеры

Сообщение kosteek » 09.09.2008 12:30:31

У кого есть ссылка на компонент ASC для Lazarus?
Компонент для кроссплатформенной работы со звуком.

Лежит перед носом и неувидел :D .

svn версия
https://lazarus-ccr.svn.sourceforge.net/svnroot/lazarus-ccr/components/acs
kosteek
постоялец
 
Сообщения: 203
Зарегистрирован: 24.07.2008 14:57:09
Откуда: Украина, г.Славянск

Re: Компоненты и примеры

Сообщение Dzirt » 20.10.2008 11:05:46

для Lazarus есть компоненты на BDE, ADO и какие-нибудь средства создания отчетов?
Dzirt
незнакомец
 
Сообщения: 2
Зарегистрирован: 16.10.2008 15:30:05

Re: Компоненты и примеры

Сообщение Attid » 20.10.2008 13:09:42

Dzirt писал(а):какие-нибудь средства создания отчетов

c:\lazarus\components\lazreport

Dzirt писал(а):BDE, ADO

это не кросплатформенные решения, может ZeosLib подойдет ?
Аватара пользователя
Attid
долгожитель
 
Сообщения: 2585
Зарегистрирован: 27.10.2006 17:29:15
Откуда: 44°32′23.63″N 41°2′25.2″E

Re: Компоненты и примеры

Сообщение Dzirt » 13.11.2008 16:36:30

Attid писал(а):это не кросплатформенные решения, может ZeosLib подойдет ?

Не знаю, нужно посмотреть. ZeosLib - это стандартный или нужно устанавливать, можешь дать ссылку?
Dzirt
незнакомец
 
Сообщения: 2
Зарегистрирован: 16.10.2008 15:30:05

Re: Компоненты и примеры

Сообщение voltron » 13.11.2008 18:15:46

Dzirt писал(а):ZeosLib - это стандартный или нужно устанавливать, можешь дать ссылку?

Это отдельный компонент, в стандартную поставку Lazarus он не входит. Взять можно по адресам
http://sourceforge.net/projects/zeoslib
http://zeos.firmos.at/
voltron
новенький
 
Сообщения: 64
Зарегистрирован: 06.07.2007 13:27:46
Откуда: Украина

Re: Компоненты и примеры

Сообщение algor » 17.02.2009 20:38:34

Нет ли под FPC/Lazarus какого-нибудь парсера мат. выражений?
algor
новенький
 
Сообщения: 11
Зарегистрирован: 24.11.2008 17:36:14

Re: Компоненты и примеры

Сообщение B4rr4cuda » 20.02.2009 23:59:29

Код: Выделить всё
Преобразование строки в математическое выражение и получение результата.
Автор: 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
энтузиаст
 
Сообщения: 693
Зарегистрирован: 28.12.2007 07:48:35

Re: Компоненты и примеры

Сообщение Mr.Smart » 21.02.2009 00:11:26

почитайте о польской нотации

правильней будет "обратная польская нотация"....
Mr.Smart
долгожитель
 
Сообщения: 1796
Зарегистрирован: 29.03.2008 01:01:11
Откуда: из леса!

Re: Компоненты и примеры

Сообщение algor » 21.02.2009 21:21:34

B4rr4cuda писал(а):Парсер рабочий, правда я его использовал не как компонент, а как юнит и потом переделывал для других целей. Если будете разбирать - почитайте о польской нотации (записи), все маф парсеры построены на этом принципе.

Спасибо большое =)
Я уже завалился книгами, ссылками и т.п. и сам начал писать. Практически точно по статье на "Королевстве Delphi" - http://www.delphikingdom.com/asp/viewitem.asp?catalogid=10. Единственное отличие - класс + поддержка переменных (правда, назвать это "фичей" язык не поворачивается =)). Если надо - допишу, код выложу, хотя код-то довольно простой (как оказалось).
Правда, как я понял, обратная польская нотация в статье не используется.
algor
новенький
 
Сообщения: 11
Зарегистрирован: 24.11.2008 17:36:14

Re: Компоненты и примеры

Сообщение B4rr4cuda » 21.02.2009 23:06:43

Бегло просмотрел статью, там действительно используется другой подход - вместо обратной записи используется рекурсивное вычисление.
Аватара пользователя
B4rr4cuda
энтузиаст
 
Сообщения: 693
Зарегистрирован: 28.12.2007 07:48:35

Re: Компоненты и примеры

Сообщение Lazzik » 31.03.2009 20:31:49

А есть Indy под lazarus и где его достать???
Аватара пользователя
Lazzik
незнакомец
 
Сообщения: 3
Зарегистрирован: 31.03.2009 20:28:19

След.

Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: Lucifer и гости: 4

Рейтинг@Mail.ru