Jump to content

Search the Community

Showing results for tags 'lazarus'.



More search options

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • Bem-vindos ao Portugal-a-Programar
    • Sugestões, Críticas ou Dúvidas relativas ao P@P
    • Acerca do P@P
  • Comunidade a Trabalhar
    • Wiki P@P
    • Apresentação de Projectos de Programação
    • Downloads
  • Revista PROGRAMAR
    • Revista PROGRAMAR
  • Desenvolvimento Geral
    • C
    • C++
    • Java
    • Haskell
    • Pascal
    • Python
    • Bases de Dados
    • Visual Basic Clássico
    • Visual Basic for Applications (VBA)
    • Dispositivos Móveis
    • Outras Linguagens
  • Desenvolvimento Orientado para Web
    • PHP
    • HTML
    • CSS
    • Javascript
    • Outras Linguagens de WebDevelopment
    • Desenvolvimento Web
  • Desenvolvimento .NET
    • C#
    • Visual Basic .NET
    • ASP.NET
    • WPF & SilverLight
  • Software e Sistemas Operativos
    • Software de Produtividade
    • Sistemas Operativos
    • Apresentação de Software
  • Informática
    • Interfaces Visuais
    • Computação Gráfica
    • Algoritmia e Lógica
    • Segurança e Redes
    • Hardware
    • Electrónica
    • Automação Industrial
    • Matemática
    • Dúvidas e Discussão de Programação
    • Notícias de Tecnologia
  • Outras Áreas
    • Dúvidas Gerais
    • Discussão Geral
    • Eventos
    • Anúncios de Emprego
    • Tutoriais
    • Snippets / Armazém de Código
  • Arquivo Morto
    • Projectos Descontinuados
    • System Empires

Blogs

  • Blog dos Moderadores
  • Eventos
  • Notícias de Tecnologia
  • Blog do Staff
  • Revista PROGRAMAR
  • Projectos
  • Wiki

Categories

  • Revista PROGRAMAR
  • Tutoriais
  • Textos Académicos
  • Exercícios Académicos
    • Exercícios c/ Solução
    • Exercícios s/ Solução
  • Bibliotecas e Aplicações
  • Outros

Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Found 23 results

  1. Boa noite comunidade, Preciso do vosso aconselhamento e sugestões. Sou um programador "da velha guarda" iniciei como muitos da minha geração em Cobol, RPGII e claro VB, posteriormente por motivos profissionais migrei para o Delphi quando este ia na versão 5 e desenvolvi sobre o mesmo ate á versão 2005. O Delphi contava com uma comunidade muito limitada em Portugal mas estava amplamente instalado em alguns paises europeus e sobretudo no Brasil. Posteriormente desenvolvi alguns "pequenos projetos" em VB, VB.NET e PHP. Atualmente por necessidades especificas tenho um grande projeto em mãos com base na migração de uma aplicação industrial que corre em DOS e feita em CLIPPER, provavelmente poucos de vos ou nenhuns se recordarão desta linguagem. Concluindo, pensei em retomar o desenvolvimento Delphi mas fiquei surpreendido ao constatar que a comunidade existente praticamente desapareceu ou parou no tempo. Continuo a encontrar alguns desenvolvimentos e forums mas basicamente está tudo parado no Delphi 7 e sem atividade. Vejo que o que está na "moda" atualmente é o C#, mas não sei se justifica entrar numa nova linguagem, que me aconselham? Abraço comuniadade
  2. Alfonso CV

    Abrir Gaveta de dinheiro

    Olá galera. Estou a apresentar problemas ao tentar abrir a minha gaveta de dinheiro pela aplicação "Lazarus", eu utilizo uma impressora fiscal de talão USB e já tentei abrir de varias formas diferentes e não consigo, alias, para Lazarus em google com porta USB não encontro nada. Já fiz testes colocando diretamente na impressora no comando antes de imprimir e trabalha lindamente abrindo a gaveta mas preciso administrar isso pela aplicação e não mandar aos clientes a ter que mexer na impressora. Alguma dica por favor??? Cumprimentos....
  3. Olá galera. Me esta a acontecer o seguinte. Tenho uma app já desenvolvida e em "produção" desde a versão 1.6 de Lazarus, até lá todo bém. Resulta que a semana anterior fiz upgrade da versão 1.8 para a 2.00 de Lazarus e todo perfeito, mas a principio de semana quando os clientes começarem a explorar o sistema inicio-se a catástrofe. Quando vou a gravar una transacção que inclui mais duna sentencia SQL o sistema compilado com a versão 2.00 me da um erro e antes não, isso sem cambiar uma linha de código. Sublinho que isto não sucedia antes. Fazendo um "debugger" (depurando o sistema) tomo las sentencias SQL para PostgreSQL que dá erro desde o sistema e a modo de exemplo: UPDATE app.a_arbol SET cod='00096',descrip='MTCV' WHERE id=5200; UPDATE app.a_pt SET longitud=-23.491440000000,latitud=14.919906000000,control_ip=0,circuito_comando=True,comentario='', potencianominal=20.0,tipofornecimento=1,estado=True WHERE idarbol=5200; as coloco no analisador de consultas do pgadmin de Postgres e correm perfeitamente mas se executo esta mesma sentencia desde o programa me da o error anterior. E, o erro no sucede solo com estas sentencias, sino sempre que envio para PostgreSQL mas de una como por exemplo quando desejo eliminar registos de tabelas pais e filha, ou também quando desejo INSERTAR mais dum registo numa tabela e assim..... Busque em outros forum mas a única coisa que vi é a sugestão para fazer transacções sentencia a sentencia mas se necessito por exemplo carregar uma tabela com 1000 registo resulta menos custoso em termos de tempo preparar uma query com todas as linhas e depois enviar que não ficar a enviar linha a linha. Assim fazia em versões anteriores a 2.00 de Lazarus sem dificuldades. Alguem sabe si para la versión esta de Lazarus 2.00 y Zeos 7.2.4 existe algum parâmetro o propriedade nova que permita fazer/definir transacciones simples o complexas com múltiplas sentencia?. Cumprimentos. Alfonso Arias Lemas
  4. Wenderson Lisboa

    Criar código automaticamente

    Bom dia amigos, mais uma vez venho solicitar sua experiência e conhecimento para decifrar um enigma. Estou criando um cadastro em Lazarus 1.8.4 - Firebird 3.5 - FlameRobin 0.9.2, e preciso criar um código automaticamente ao salvar um novo cadastro. Por favor sou estudante e peço a ajuda de quem puder contribuir. Obrigado.
  5. procedure BtnCalculaClick(Sender: TObject); procedure BtnLimpaClick(Sender: TObject); procedure FormCloseQuery(Sender: TObject; var CanClose: boolean); procedure FormKeyPress(Sender: TObject; var Key: char); procedure IdleTimer1Timer(Sender: TObject); procedure FormCreate(Sender: TObject); private procedure AppIdle(Sender: TObject; var Done: Boolean); procedure AppMessage(var Msg: TMsg; var Handled: Boolean); public end; var Form1: TForm1; implementation {$R *.lfm} { TForm1 } procedure TForm1.BtnCalculaClick(Sender: TObject); var iQteCx : integer; nTotal, nDep,nTotalNotas,nDH, n100, n50, n20, n10, n5, n2, n1, n50cents, n25cents, n10cents, n5cents, nQteCxs : real; begin try n100:= StrToFloat(EditNota100.text); except n100:= 0; end; try n50:= StrToFloat(EditNota50.text); except n50:= 0; end; try n20:= StrToFloat(EditNota20.text); except n20:= 0; end; try n10:= StrToFloat(EditNota10.text); except n10:= 0; end; try n5:= StrToFloat(EditNota5.text); except n5:= 0; end; try n2:= StrToFloat(EditNota2.text); except n2:= 0; end; try n1:= StrToFloat(EditMoeda1.text); except n1:= 0; end; try n50cents:= StrToFloat(EditMoeda50.text); except n50cents:= 0; end; try n25cents:= StrToFloat(EditMoeda25.text); except n25cents:= 0; end; try n10cents:= StrToFloat(EditMoeda10.text); except n10cents:= 0; end; try n5cents:= StrToFloat(EditMoeda5.text); except n5cents:= 0; end; try nQteCxs:= StrToFloat(EditQteCxs.text); except nQteCxs:= 0; end; try nDH:= StrToFloat(EditDH.text); except nDH:= 0; end; nTotal:= (100* n100+ 50* n50 + 20* n20+ 10* n10+ 5* n5+ 2* n2+ n1+ 0.5*n50cents+ 0.25*n25cents+ 0.1*n10cents+ 0.05* n5cents - (nQteCxs* 108.75))+nDH; nDep:=(100* n100+ 50* n50 + 20* n20+ 10* n10+ 5* n5+ 2* n2); nTotalNotas:= n100+ n50 + n20 + n10 + n5 + n2; Memo1.Lines.Add( ' '); Memo1.Lines.Add( ' '); Memo1.Lines.Add( 'Doce Prazer '); Memo1.Lines.Add( '==========='); Memo1.Lines.Add( ' '); Memo1.Lines.Add( 'Valor do Caixa - Turno '); Memo1.Lines.Add( ' '); Memo1.Lines.Add(' Valor = R$ '+ FloatToStr(nTotal)); Memo1.Lines.Add( ' '); Memo1.Lines.Add( '==========='); Memo1.Lines.Add( ' '); Memo1.Lines.Add( 'Quantidade de Notas'); Memo1.Lines.Add( FloatToStr(nTotalNotas)); Memo1.Lines.Add( ' '); Memo1.Lines.Add( ' Cruzeiro HEXACAMPEÃO da Copa do Brasil 2018 '); Memo1.Lines.Add( ' '); Memo1.Lines.Add( ' Nunca duvide do poder da fé!'); EditNota100.SetFocus; end; procedure TForm1.BtnLimpaClick(Sender: TObject); begin Memo1.Clear; Memo1.Lines.Add(' '); Memo1.Lines.Add(' '); Memo1.Lines.Add(' '); Memo1.Lines.Add(' '); Memo1.Lines.Add(' ------------------------- '); Memo1.Lines.Add(' '); Memo1.Lines.Add(' O Doce Prazer da sua vida! '); Memo1.Lines.Add(' '); Memo1.Lines.Add(' Deus é fiel! '); Memo1.Lines.Add(' '); Memo1.Lines.Add(' Nunca duvide do poder da fé! '); Memo1.Lines.Add(' '); Memo1.Lines.Add(' ------------------------- '); EditNota100.text:= ' ' ; EditNota50.text:= ' '; EditNota20.text:= ' '; EditNota10.text:= ' '; EditNota5.text:= ' '; EditNota2.text:= ' '; EditMoeda1.text:= ' '; EditMoeda50.text:= ' '; EditMoeda25.text:= ' '; EditMoeda10.text:= ' '; EditMoeda5.text:= ' '; EditQteCxs.text:= ' '; EditDH.text:= ' '; EditNota100.SetFocus; end; procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: boolean); begin end; procedure TForm1.FormCreate(Sender: TObject); procedure AppIdle(Sender: TObject; var Done: Boolean); procedure AppMessage(var Msg: Msg; var Handled: Boolean); begin Application.OnMessage := AppMessage; Application.OnIdle := AppIdle; end; procedure TForm1.FormKeyPress(Sender: TObject; var Key: char); begin if key=#13 then begin SelectNext(ActiveControl as TWinControl,True,True); key:=#0; end; end; procedure TForm1.IdleTimer1Timer(Sender: TObject); begin Application.Terminate; end; procedure TForm1.AppIdle(Sender: TObject; var Done: Boolean); begin IdleTimer1.Enabled:= True; end; procedure TForm1.AppMessage(var Msg: TMsg; var Handled: Boolean); begin Case Msg.message of WM_LBUTTONDOWN, WM_RBUTTONDOWN, WM_KEYDOWN : IdleTimer1.Enabled:= False; end; end; end.
  6. Bom dia colegas. Alguém a trabalhado com imagem alguma vez em campo “Bytea” de PostgreSQL. Preciso guardar y ler fotos, ademais de todo tipo de ficheiros, de Excel, Word y PDF. Normalmente quando desejo fazer isso codifico o arquivo para BASE64 e depois guardo o mesmo num campo “Text” mas o caso agora é que me dão as imagens já guardadas numa tabela de PostgreSQL com 100 mil e tal fotos, todas numa coluna “campo Bytea”. Me resulta difícil tomar essas fotos desse campo e não tenho ideia de como fazer e adicionar novas. Alguma dica por favor?? Cumprimentos, Alfonso
  7. Instou instalando o android para o lazarus coforme o link abaixo: http://wiki.lazarus.freepascal.org/Android_tutorial Porém quando vou fazer a etapa " Build FPC 2.7.1 " Executando o comando "make crossinstall CPU_TARGET=arm OS_TARGET=linux \ CROSSBINDIR=/Android/android-ndk-r9d/toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86_64/arm-linux-androideabi/bin OPT=-dFPC_ARMEL INSTALL_PREFIX=/Android/fpc " ocorreo o seguinte erro: Start compiling package ide for target arm-linux. Compiling IDE with GDB/MI debugger support, LibGDB is not needed Compiling compiler/compunit.pas Compiling /Android/fpcsrc/compiler/ppheap.pas Compiling /Android/fpcsrc/compiler/comphook.pas Compiling /Android/fpcsrc/compiler/comphook.pas Compiling /Android/fpcsrc/compiler/arm/cpuinfo.pas Compiling /Android/fpcsrc/compiler/compiler.pas Compiling /Android/fpcsrc/compiler/browcol.pas Compiling fp.pas Linking bin/arm-linux/fp The installer encountered the following error: External command "/Android/fpcsrc/compiler/ppcrossarm -Tlinux -FEbin/arm-linux -FUunits/arm-linux/ -Fu/Android/fpcsrc/rtl/units/arm-linux/ -Fu/Android/fpcsrc/packages/rtl-extra/units/arm-linux/ -Fu/Android/fpcsrc/packages/fv/units/arm-linux/ -Fu/Android/fpcsrc/packages/rtl-console/units/arm-linux/ -Fu/Android/fpcsrc/packages/chm/units/arm-linux/ -Fu/Android/fpcsrc/packages/fcl-xml/units/arm-linux/ -Fu/Android/fpcsrc/packages/fcl-base/units/arm-linux/ -Fu/Android/fpcsrc/packages/fcl-res/units/arm-linux/ -Fu/Android/fpcsrc/packages/rtl-objpas/units/arm-linux/ -Fu/Android/fpcsrc/packages/iconvenc/units/arm-linux/ -Fu/Android/fpcsrc/packages/regexpr/units/arm-linux/ -Fu/Android/fpcsrc/packages/fcl-process/units/arm-linux/ -Ficompiler -Parm -Ur -Xs -O2 -n -FD/Android/android-ndk-r9d/toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86_64/arm-linux-androideabi/bin -dFPC_ARMEL -dRELEASE -Ur -dNOCATCH -dBrowserCol -dGDB -darm -Fu../compiler -Fu../compiler/arm -Fu../compiler/targets -Fu../compiler/systems -Fi../compiler/arm -Fi../compiler -Sg -dGDBMI -viq fp.pas" failed with exit code 256. Console output: Target OS: Linux for ARMEL Compiling fp.pas Writing Resource String Table file: fp.rsj Linking bin/arm-linux/fp fp.pas(606,1) Error: Error while linking fp.pas(606,1) Fatal: There were 1 errors compiling module, stopping Fatal: Compilation aborted /Android/android-ndk-r9d/toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86_64/arm-linux-androideabi/bin/ld: error: bin/arm-linux/link.res:380:8: syntax error, unexpected STRING /Android/android-ndk-r9d/toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86_64/arm-linux-androideabi/bin/ld: fatal error: unable to parse script file bin/arm-linux/link.res make[3]: *** [all] Error 1 make[3]: Leaving directory `/Android/fpcsrc/ide' make[2]: *** [ide_all] Error 2 make[2]: Leaving directory `/Android/fpcsrc' make[1]: *** [build-stamp.arm-linux] Error 2 make[1]: Leaving directory `/Android/fpcsrc' make: *** [crossinstall] Error 2 Alguem sabe corrigir?
  8. Bom dia Fórum. Trabalho com Lazarus. Estou a precisar abrir uma página web dentro dum formulário. Tentei com alguns componentes mas de jeito nenhum consigo mostrar a URL. Alguma dica por favor..... Cumprimentos, Alfonso Lemas
  9. Samuel Cunha

    Caixeiro viajante: caminho mais curto

    Boas pessoal. Estou a fazer um trabalho envolvendo o problema do caixeiro viajante. Este problema consiste em determinar a menor rota para percorrer uma série de cidades (visitando uma única vez cada uma delas), retornando à cidade de origem. Primeiro fiz a minha matriz de forma manual e aleatoria. Eu já tenho boa parte do programa feito mas agora falta o mais dificil que é fazer o caminho mais curto, por exemplo temos 5 cidades e partimos da cidade1 voltando à mesma mas fazendo o percurso no menor trajeto possível, ou seja pretendo fazer vários trajetos fazendo swaps e depois identificar qual o mais curto. Será que poderiam dar uma dica para tentar fazer essa parte? Muito obrigado, deixo aqui parte do meu código feito. Program TrabalhoProgramacao; //Nome do Programa Uses Crt; const MAXCID = 25; //Constantes: constante do máximo de cidades type matriz = array[1..MAXCID, 1..MAXCID] of integer; var Opcao, numCidade : Integer; sair : boolean; distancias : matriz; function LerCidades( var n : integer ) : Boolean; // função para a leitura das cidades begin writeln('Indique o numero de cidades ( maximo ', MAXCID, ' cidades:):'); // Indicação do número de cidades readln(n); if (n <= MAXCID) then LerCidades := true // Lê o número introduzido else writeln('Introduziu mais que 25 cidades! Tente novamente!'); LerCidades := false; readln; // Se o número de cidades for maior que 25 não executa end; procedure LimparMatriz( var distMatriz : matriz; nCidades : integer); // procedimento para limpeza da matriz var x, y : integer; begin for x := 1 to nCidades do begin for y := 1 to nCidades do begin distMatriz[x][y] := 0; end; end; end; procedure EscreverMatriz( var distMatriz : matriz; nCidades : integer); // procedimento para a escrita da matriz var x, y : integer; begin for x := 1 to nCidades do begin writeln; for y := 1 to nCidades do begin write( distMatriz[x][y]:2 ); end; end; end; //Introduzir as distâncias procedure PreencherManualMatriz( var distMatriz : matriz; nCidades : integer); // procedimento para preenchimento da matriz de forma MANUAL var x, y : integer; begin writeln(' ************************************************************'); writeln(' Atencao: distancias entre mesmas cidades e 0!'); writeln(' ************************************************************'); for x := 1 to (nCidades - 1) do begin writeln; for y := (x + 1) to nCidades do begin if x <> y then begin writeln('Introduza a distancia entre ', x , ' e ', y); readln(distMatriz[x][y]); distMatriz[y][x] := distMatriz[x][y]; end; end; end; EscreverMatriz(distancias, numCidade); readln; end; procedure PreencherRandomMatriz( var distMatriz : matriz; nCidades : integer); // procedimento para preenchimento da matriz de forma ALEATÓRIA var x, y : integer; begin writeln(' *********************************************'); writeln(' Atencao: distancias entre mesmas cidades e 0!'); writeln(' *********************************************'); for x := 1 to (nCidades - 1) do begin writeln; for y := (x + 1) to nCidades do begin begin distMatriz[x][y] :=random(9); // exemplo ate 9 quilometros de distancia distMatriz[y][x] := distMatriz[x][y]; end; end; end; EscreverMatriz(distancias, numCidade); readln; end; Begin // COMEÇO DO PROGRAMA sair := false; while sair = false do begin clrscr; writeln(' opcao 1 : Ler as cidades');write(''); writeln(' opcao 2 : Escrever matriz'); (' opcao 3 : Preencher matriz manualmente'); writeln(' opcao 4 : Preencher matriz aleatoriamente'); writeln(' opcao 5 : Sair'); readln(opcao); writeln; Case Opcao of 1 : LerCidades(numCidade); 2 : EscreverMatriz(distancias, numCidade); 3 : PreencherManualMatriz(distancias, numCidade); 4 : PreencherRandomMatriz(distancias, numCidade); 5 : sair := true; else begin writeln('Opcao invalida! Tente novamente!'); writeln; readln; end; end; end; end
  10. Alfonso CV

    Mostrar PDF

    Caros. Tenho um arquivo PDF que preciso mostrar num formulário. Alguma dica por favor? Alfonso
  11. BHAMF

    [Resolvido] Pastas Pascal

    Queria saber como faço para criar pastas em Pascal, alguém aí sabe algo sobre? Estou à espera de respostas. Obrigado desde já
  12. Olá, conheço o P@P a algum tempo, porém não tinha criado minha conta, sempre quis responder algumas pessoas mas também tenho minhas dúvidas, a minha dúvida é a seguinte, estou criando um Software cujo o nome é Lipïïnn Program ©, nele tem uma procedure chamada, janela1, e nesta janela1 certamente abre uma janela (feita em códigos ASCII claro) e nesta janela tem dois readkeys no caso deveria ter só um, mas se eu colocar só um ele confunde tecla com letra, como faço pra resolver isso? Obrigado desde já! procedure janela1; var ATUAL : INTEGER; Construtor_de_janela : integer; tecla : char; begin gotoxy(20,5); for Construtor_de_janela := 1 to 30 do begin gotoxy(Construtor_de_janela + 20,5); write(#219); end; for Construtor_de_janela := 1 to 10 do begin gotoxy(50,Construtor_de_janela + 5); write(#219); end; for Construtor_de_janela := 1 to 30 do begin gotoxy(Construtor_de_janela + 20,15); write(#219); end; for Construtor_de_janela := 1 to 11 do begin gotoxy(20,Construtor_de_janela + 4); write(#219); end; window(21,6, 49,14); textbackground(blue); //29 colunas, 9 linhas clrscr; gotoxy(2,2); write('Janela de pausa'); gotoxy(2,3); write('Escolha uma opcao'); gotoxy(2,4); write('com as teclas de seta'); gotoxy(2,5); WRITE('Nao aperte outra tecla '); gotoxy(2,6); WRITE('A nao ser as de seta e ENTER (bug) '); cursoroff; window(38,13, 46,13); textbackground(blue); write('Desligar'); gotoxy(3,9); window(25,13, 34,13); textbackground(white); textcolor(red); write('Continuar'); tecla := readkey; tecla := readkey; repeat case tecla of #75 : begin //Seta esquerda //#75 // #37 window(25,13, 34,13); textbackground(white); textcolor(red); write('Continuar'); window(38,13, 46,13); textbackground(blue); write('Desligar'); tecla := readkey; tecla := readkey; atual := 1; cursoroff; end; {else gotoxy(2,6); window(21,6, 49,14); write('Incorrect Information'); delay(500); janela1;} end; {if (tecla = #77) then begin} case tecla of #77 : begin //Seta direita //#77 // #39 window(25,13, 34,13); textbackground(blue); textcolor(red); write('Continuar'); window(38,13, 46,13); textbackground(white); write('Desligar'); tecla := readkey; tecla := readkey; atual := 2; cursoroff; end; {else window(21,6, 49,14); gotoxy(2,6); delay(500); write('Incorrect Information'); janela1;} end; until(tecla = #13); case tecla of #13 : begin if (atual = 1) then begin clrscr; window(1,1, 80,1); textbackground(lightcyan); highvideo; clrscr; window(1,1, 80,25); gotoxy(2,2); textcolor(lightblue); textbackground(black); cursoron; piboaritiboyet3; end; if atual = 2 then begin clrscr; halt; end; end; end; end;
  13. micaelr08

    Sockets Lazarus

    Boas, alguém me consegue explicar como usar Sockets no lazarus, é que estou a dar essa matéria na escola e não consigo arranjar maneira de usar os sockets no lazarus.
  14. Boas people dado a falta de tempo, peço aqui ajuda passo a explicar vou iniciar-me em lazarus Fiquei encantado com o facto de ser em tudo semelhante a VB6 (A minha antiga linguagem de programação) visualmente. em VB6 cada vez que voltava a programar tinha 2 dossiers com os códigos base, tudo estruturado e tal e queria fazer o mesmo com o lazarus Então: 1º Que linguagem o lazarus usa? delphi ou pascal? ainda não entendi bem 2º Links para manuais / tutoriais com o básico do código (if then, while, declarar variaveis, uso de pontuação e afins) O que pretendo é o básico mesmo, não quero manuais que ensinam a trabalhar com a parte gráfica, o que aprendo sozinho em meia hora O meu post original: http://www.portugal-a-programar.pt/topic/64437-apresenta-se-rodrigo-o-noob/ Como podem vir já pedi ajuda à 1 mês mas a trabalhar agora estou mesmo com falta de tempo e tenho que fazer o programa que era para maio até dia 20 do próximo mês... Obrigado desde já UPDATE: http://code-sd.com/startprog/StartProgUsingPascal.pdf Manual com o básico e o essencial
  15. Bresciani

    Enviar E-mail com Lazarus

    Pessoal, boa tarde! Sou aqui do Brasil e gostaria de saber se alguém pode me ajudar na seguinte questão, preciso enviar e-mails com o Lazarus e não tenho a mínima ideia de como fazer. achei somente em Portugal um site de fórum de Lazarus. Conto com a ajuda de alguém. Abraços Ricardo Bresciani Brasil
  16. Eu tenho que baixar o MYSQL? como acesso ? Com eu conecto este tipo de Banco ao Programa para consulta e alterar um nome de funcionário?
  17. CarlosPiccoli

    Como fazer operações no Lazarus

    Eu preciso fazer em um form fazer um calculo assim : PreçoLiquido= PreçoBruto- Desconto. Todos os campos estão no mesmo formulario. Onde eu faço essas operações. Se alguem puder dar um esxemplo almenos parecido agradeço.
  18. caros, estou com esta questão - Como deixar um TEdit com formato dd/mm/aa (p/ data de nascimento) em Lazarus. Depois calcular a idade que vai pra um outro formulario...
  19. Boa tarde, Estou com um problema no lazarus 1.0.8 no Ubuntu 13.04 que não dá para guardar os projectos.
  20. nunopicado

    Usar DLL's em Delphi/Lazarus

    “DLL Hell” Uma expressão muito usada, e nada incentivadora para o programador que pensa nas DLL’s (Dynamic Link Librarys) pela primeira vez. Ou se ama ou se odeia, este tipo de recurso. Há quem não abdique, há quem nem queira ouvir falar. No caso destes últimos, é geralmente porque não compreendem como as construir e como as usar. Antes de mais, algumas vantagens das DLL’s, que deverão ser suficientemente apelativas para que se pelo menos pondere o seu uso: - Se tivermos vários programas a correr que usem código partilhado, o uso de DLL’s permite poupar recursos, uma vez que apenas uma instância dessa DLL é necessária para ser usada por todos esses programas. - Como as DLL’s são pré-compiladas, podemos criar código numa linguagem e usá-lo noutra. Logo que os tipos de dados usados existam em ambas as linguagens, não haverá problema. - Há no Delphi dois métodos possíveis de carregar uma DLL: Carregamento Estática ou Dinâmico. No caso do carregamento dinâmico, os recursos ocupados pela DLL só serão usados durante o seu uso efectivo, e não durante toda a execução do programa principal. Como de costume, o Delphi/Lazarus tem a solução simples para que estes úteis recursos possam ser usados por todos. library TesteDLLLazarus; Function Area(Tipo:Byte;a,b:Real):Real; StdCall; Export; const aTrianguloRect=1; aQuadrado=2; begin case Tipo of aTrianguloRect:Result:=a*b/2; aQuadrado:Result:=a*b; end; end; Function Hipotenusa(a,b:Real):Real; StdCall; Export; begin Result:=Sqrt(Sqr(a)+Sqr(b)); end; Exports Area, Hipotenusa index 2; begin end. Começando do topo, a palavra-chave Library indica que se trata de uma DLL. Segue-se o código das funções e procedimentos desejados. Apenas duas particularidades: A palavra-chave Export marca a função como exportável. Isto significa que poderá ser usada externamente, a partir de uma aplicação que use a DLL. Caso se trate de uma função meramente interna, para uso de outras dentro da DLL, não é necessário usar a palavra Export. A palavra StdCall indica qual a Calling Convention (a ordem de passagem dos parâmetros de e para a DLL e a forma como é gerida a memória por eles usada) a usar para a função. Existem várias Calling Conventions, sendo as mais comuns, as seguintes: - Register -> Predefinição do Delphi - StdCall -> Predefinição da API do Windows - CdEcl -> Predefinição do C/C++ Não é por demais importante qual é usada, desde que seja a mesma tanto na DLL como na aplicação que a vai usar. Não é obrigatório definir uma Calling Convention, sendo que se nenhuma for especificada, a Register será usada. A palavra-chave Exports serve para exportar as funções a que queremos permitir acesso externo. Basta indicar à sua frente o nome dessas funções, separados por virgulas. A palavra-chave Index é opcional. Usa-se apenas se quisermos atribuir um índice numérico à função ou procedimento. Para tal, basta coloca-la entre o nome da função e o seu índice, como é mostrado no exemplo. E aí está, simples como é hábito nas linguagens da família Pascal. Falta no entanto, neste pequeno piscar de olho às DLL’s, o método de usar as DLL’s criadas. Como referido, o Delphi apresenta dois métodos distintos para usar as funções existentes em DLL’s: Estático e Dinâmico. O método estático é o mais simples… E mais simples é impossível. Function Area(Tipo:Byte;a,b:Real):Real; External ‘TesteDLLLazarus.dll’; Function Hipotenusa(a,b:Real):Real; StdCall; Export; External ‘TesteDLLLazarus.dll’ index 2; Realmente, nada mais simples do que criar a declaração da função, e colocar à frente o nome da DLL onde a rotina está alojada, através da palavra-chave External. Simples e intuito. Mais uma vez, a palavra Index é opcional, e representa o índice numérico que atribuímos na DLL. Uma vez declaradas desta forma, basta usar as funções e procedimentos, como se de uma rotina local se tratasse. Neste método, a DLL é carregada quando o programa é iniciado e libertada quando o programa termina. O segundo método é efectivamente mais complexo. Serve para carregar a DLL apenas quando alguma função é realmente necessária e libertá-la logo de seguinda, poupando recursos do sistema. Ainda assim, não é de difícil compreensão: interface type Area = Function (Tipo:Byte;a,b:Real):Real; function LArea(Tipo:Byte;a,b:Real):Real; implementation function LArea(Tipo:Byte;a,b:Real):Real; var Handle : THandle; begin Handle:=LoadLibrary (‘TesteDLLLazarus.dll’); if Handle <> 0 then begin @Area:=GetProcAddress (Handle, ‘Area’); if @Area <> nil then Result := Area (Tipo,a,b); FreeLibrary (Handle); end; end; Começa-se por definir uma função dinâmica, na secção Interface. Esta será usada mais à frente, quando chamar-mos a DLL. De seguida, declaramos uma função local. Esta é opcional, o seu conteúdo pode ser inserido directamente na secção de código onde precisamos dos resultados da função da DLL. Para efeitos meramente exemplificativos, foi esta a opção escolhida. Avançando para a secção implementation, fazemos a implementação da função local declarada. Precisamos de uma variável do tipo THandle para lidar com a DLL. A esta variável, vamos atribuir a localização da DLL usando o procedimento LoadLibrary. Se o resultado for 0, não foi possível carregar a DLL. De contrário vamos atribuir à função dinâmica declarada em cima o endereço de memória da função da DLL que queremos usar, e se o resultado não for nil (o que significaria que a função especificada não foi encontrada na DLL), podemos executar a função da DLL simplesmente chamando a nossa função dinâmica. Por fim, chamamos o procedimento FreeLibrary para libertar a DLL da memória. Ainda que um pouco mais complexo do que a chamada estática da DLL, esta chamada dinâmica é, como se vê, ainda assim muito simples. Quanto ao “DLL Hell” de que tanto se fala, basta que se guarde as DLL’s na pasta da aplicação que a vai usar… Para quê complicar? Outras considerações sobre DLL’s: - O tipo de dados String não é tratado pelo Delphi da mesma forma que a maioria das restantes linguagens. Muitas usam ponteiros para arrays para guardar dados alfanuméricos, outras apenas suportam 256 bytes nas strings. Assim, se houver a intenção de usar a DLL com programas criados noutras linguagens, é recomendado o uso do tipo ShortString ou PChar em vez do tipo String. - Ao criar uma DLL, convém verificar exaustivamente a existência de potenciais erros de programação (como sempre, aliás). Um erro numa DLL não tratado poderá ser um pesadelo de detectar no programa principal.
  21. Olá a todos. Instalei o lazarus 1.0.6 no meu ubuntu 12.10 e tudo muito bem. Escrevo o programa e compilo tudo ok, gravo tudo ok mas quando volto a abrir o projecto aparece a seguinte mensagem: Alguem sabe como resolver este problema?
  22. Estava nas minhas pesquisas sobre pascal e encontrei isto no site do free pascal Galeria de aplicações feitas em pascal e lazarus http://wiki.freepascal.org/Lazarus_Application_Gallery Aplicações, jogos, utilitários, etc feitos em pascal e lazarus http://wiki.freepascal.org/Projects_using_Lazarus http://wiki.freepascal.org/FPC_Applications/Projects_Gallery Se estiverem à procura de algum projecto em pascal, tem nesses sites de tudo. Ps: As pessoas que falam mal do pascal e/ou dizem que o pascal não serve para nada, deem uma vista de olhos nesses sites.
  23. Alguem sabe a maneira mais facil (apesar de ja ser programaçao media-alta) de criar? eu ate pedia para Delphi (ou outra POO Object Pascal , mas ja se arranjarem algo tipo c# ou vb e me explicarem +- talves seja suficiente) Ja encontrei alguns pontos de partida, mas gostava de saber se alguem ja tinha usado isso, e se me podia simplificar e clarificar o codigo... isto é algo que ja andava para tentar a fazer a uns bons tempos, mas nem sequer sabia o termo correcto (ao que parece, deskband) é fazer algo como o windows media player tinha no windows xp e vista, de o controlar pela taskbar... sei que nao é recomendado no windows seven e nas versoes futuras poderá ser efectivamente descontinuado, mas ainda assim queria tentar... do que encontrei de informaçoes sobre isto, foram nestas fontes: http://delphi-notes.blogspot.pt/2005/12/deskbands-with-delphi.html http://social.msdn.microsoft.com/Forums/ar-SA/Vsexpressvb/thread/7b799b8a-888b-47f2-b20f-6f9ab969cfba http://www.codeproject.com/Articles/6741/AppBar-using-C http://www.codeproject.com/Articles/2219/Extending-Explorer-with-Band-Objects-using-NET-and http://codecentral.embarcadero.com/Item/23879 Codigos em vb e c#, ainda talves consiga reimplementar isso em linguagem delphi, se alguem poder dar uma ajuda a entender toda a estrutura, que ficheiros sao necessarios e onde os arrnjar... Uma duvida que eu fiquei, é se seria nessesario algum windows sdk... Aguardo respostas (ps: nao sei se será o topico mais certo, uma vez que peço algo generico, embora o que eu queira mesmo é algo concebivel em delphi se possivel, mas como disse, se for em c# e vb talves, explicando.me, consiga entender)
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.