Pular para o conteúdo principal

Lazarus - Criando uma aplicação para WinCE

Preparando o ambiente

Para criar aplicações que executem em dispositivos móveis com SO Windows Mobile ou WinCE é necessário instalar o cross-arm-wince, que tem apenas versão para Win32. Se já existir o Lazarus instalado, baixe e instale o Lazarus-0.9.28.2-fpc-2.2.4-cross-arm-wince-win32.exe no mesmo diretório do Lazarus.
A partir de agora sua instalação continuará compilando para o ambiente Windows, mas terá a opção de compilar para o WinCE. Sempre que você iniciar um projeto WinCE é necessário fazer algumas configurações em Project -> Compiler options. Na aba Paths selecione wince em LCL Widget Type (various). Na aba Code escolha WinCE em Target OS (-T) e arm em Target CPU family (-P). Pronto. O compilador irá gerar um executável que executa apenas no PDA. Dessa forma para compilar use sempre CTRL + F9.

Banco de dados

A opção pelo SQLite é quase forçada. Só precisamos de uma dll e tudo funciona. Bem de acordo com as limitações impostas pelos PDAs. Prefiro sempre baixar alguma coisa já pronta, compilar os fontes gera um certo incômodo. Se você prefere compilar pode baixar os fontes aqui. Mas pode obter algo pronto aqui, inclusive com um visualizador de tabelas para WinCE. A dll deverá ser instalada na mesma pasta do PDA onde estará o banco de dados SQLite e o executável.

Escolha dos componentes

Essa foi a parte mais difícil. Muitas opções mas não tive muito sucesso. Para banco de dados tive problemas com SQLdb e Zeos. Com SQLdb não reconhecia o banco no PDA. Com Zeos deram alguns erros durante a compilação. Então optei por usar o TSQLite3Dataset da unit sqlite3ds. Mesmo existindo um pacote com o componente eu usei código FreePascal direto.
Para a interface existe o pacote KOL-CE. No entanto nos meus testes eu não consegui integrar esses componentes com banco de dados. Vou continuar tentando e apresento o resultado mais tarde.
Assim, usei os próprios componentes nativos do Lazarus. A grande dificuldade é adequar a interface ao modelo de PDA onde a aplicação irá executar. Fiz testes em um HP iPAQ com Windows Mobile 5.0.

Criação da interface

Crie uma nova aplicação no Lazarus. Altere a propriedade Name do form para frmCidade, Caption para Cidades. Salve tudo. Para a unit dê o nome u_cidade e para o projeto digite Cidade. Faça as alterações em Project -> Compiler options conforme falamos anteriormente.
Desenhe o form de acordo com a figura abaixo: coloque dois TEdits, dois TLabels, cinco TButtons da aba Standard, e um TStringGrid da aba Additional.


Note que não estamos usando controles da aba Data Controls. Defina as propriedades dos componentes - da esquerda para a direita e de cima para baixo - da seguinte forma:

TLabel - Caption defina como ID.
TLabel - Caption defina como Nome.
TEdit - Name defina com edId e apague o conteúdo de Text.
TEdit - Name defina com edNome e apague o conteúdo de Text.
TButton - Caption defina como Inserir e Name defina como btnInserir.
TButton - Caption defina como Excluir e Name defina como btnExcluir.
TButton - Caption defina como Alterar e Name defina como btnAlterar.
TButton - Caption defina como Consultar e Name defina como btnConsultar.
TButton - Caption defina como Sair e Name defina como btnSair.
TStringGrid - Name defina como grdDados e FixedCols como 0. Clique no botão à direita na propriedade Columns. Clique no botão Add para adicionar duas colunas. Selecione a primeira e expanda a propriedade Title. Digite ID na propriedade Caption. Faça o mesmo na segunda coluna e digite NOME na propriedade Caption. Feche a janela.
Você deve ajustar as dimensões do form de acordo com o PDA onde a aplicação será executada. O form do exemplo tem 243 x 300.

O código

Para nosso exemplo usarei o mesmo banco de dados criados nos post anteriores. Inicialmente as declarações de variáveis. Inclua sqlite3ds na cláusula uses:

var
  frmCidade: TfrmCidade;
  tbCidade: TSQLite3Dataset;   
  sSql: string;
              
No evento OnShow do form o objeto tbCidade é criado e inicializado com os dados do banco de dados e da tabela Cidade:

  tbCidade := TSqlite3Dataset.Create(nil);
  tbCidade.FileName := 'clientes.db';
  tbCidade.TableName := 'cidade';
  tbCidade.PrimaryKey := 'Id_Cidade';

No evento OnSelectCell da TStringGrid definimos que a os dados na linha selecionada na StringGrid são copiados para os TEdits:

  edId.Text := grdDados.Cells[0, aRow];
  edNome.Text := grdDados.Cells[1, aRow];

No evento OnClick de btnConsultar a tabela é consultada e seus dados mostrados na StringGrid:

  tbCidade.Close;
  tbCidade.SQL := 'select * from cidade';
  tbCidade.Open;
  grdDados.Clear;
  while not tbCidade.EOF do
  begin
     grdDados.Row := grdDados.RowCount - 1;
     grdDados.RowCount := grdDados.RowCount + 1;
     grdDados.Cells[0, grdDados.Row] := tbCidade.Fields[0].AsString;
     grdDados.Cells[1, grdDados.Row] := tbCidade.Fields[1].AsString;
     tbCidade.Next;
  end;
  tbCidade.Close;

No evento OnClick de btnAlterar o comando UPDATE é construído e executado:

   sSql := 'update cidade set nome = ''%s'' where id_cidade = %d';
   tbCidade.SQL := Format(sSql, [edNome.Text, StrToInt(edId.Text)]);
   tbCidade.ExecSQL;

No evento OnClick de btnInserir fazemos o mesmo com o comando INSERT:

  sSql := 'insert into cidade(id_cidade, nome) ' +
     'values(%d, ''%s'')';
  tbCidade.SQL := Format(sSql, [StrToInt(edId.Text), edNome.Text]);
  tbCidade.ExecSql;

O comando DELETE é construído e executado no evento OnClick de btnExcluir:

  if MessageDlg('Confirmação','Deseja excluir o registro?', mtConfirmation, [mbYes, mbNo],0) = mrYes then
  begin
     sSql := 'delete from cidade where id_cidade = %d';
     tbCidade.SQL := Format(sSql, [StrToInt(edId.Text)]);
     tbCidade.ExecSQL;
  end;

Este programa é apenas um exemplo e muita coisa precisa ser feita para que ele funcione bem. Por exemplo, os botões btnAlterar e btnExcluir só podem ser habilitados se houver um ID a ser pesquisado, entre outras melhorias que devem ser implementadas.

Comentários

Unknown disse…
Ótimo artigo, muito bom mesmo :)
Anônimo disse…
Muito bom o exemplo! Continue a fazer outros como este!
Anônimo disse…
Ola bom dia professor. Quanto a explicação descrita foi de bom uso. Gostaria de que na medida do possível também eleborasse uns exemplos usando mais bancos de dados para uso em WinCE.
Segue meu e-mail para possíveis contatos... cipii@hotmail.com
Professor Carlos disse…
Meu caro

Devido a limitações dos PDAs não existem muitos bancos de dados que rodem nele. Conseguimos rodar sqlite porque existe essa dll. Podemos também gravar dados em arquivos texto e xml.
Anônimo disse…
Olá Carlos,
testei seu exemplo no meu WM6.5 e sempre crashou... depois tentei com o emulador e o WM6.1 e o mesmo acontecia. Será que fiz alguma coisa errada? vc nao pode testar no 6.1 ou 6.5? muito obrigado!

Pedro
Anônimo disse…
compilei para Win32 e listou a tabela. O problema no WM é quando ele faz OPEN da DB... aqui ele sempre crasha.

Pedro
Professor Carlos disse…
Pedro

Você copiou a dll correta para WinCE? Verifique se o sqliteviewer funciona. Eu testei em um pda com WM 5. Vou tentar um emulador do 6 pra ver se dá certo.
Anônimo disse…
sim, uso os DLL que vinham em:
miniSQLiteViewer-win32-1.1.beta.zip
miniSQLiteViewer-wince-1.1.beta.zip

o sqliteviewer nao crasha mas nao abre a db...

Pedro
Professor Carlos disse…
Testei aqui num emulador 6 e quando tenta abrir a tabela, dá uma mensagem que a tabela não existe. Talvez a dll não funcione no 6.
Unknown disse…
Gostaria de saber como trabalhar com data com sqlite wince?
Professor Carlos disse…
O SQLite tem uma forma particular de tratar os tipos de dados. Dê uma olhada neste post http://professorcarlos.blogspot.com/2010/05/tipos-de-dado-no-sqlite.html
Anônimo disse…
Prof. Carlos, ótima sua iniciativa de criar este blog e postar conteúdo tão útil.
Segui os passos para instalação, ajuste e compilação para a plataforma ARM, mas infelizmente algo não deu certo, pois o HP Jornada 520 que tenho disponível, rodando Windows CE versão 3.0.9348. Processador SH3, 16 MB RAM.
Compilo, copio para um cartão CF, e tento executar. Diz que o meu HelloWorld, codigo abaixo, é incompatível. Poderias me informar como proceder para resolver. Muito obrigado.
unit Unit1;

{$mode objfpc}{$H+}

interface

uses
Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
StdCtrls;

type

{ TForm1 }

TForm1 = class(TForm)
Button1: TButton;
Label1: TLabel;
procedure Button1Click(Sender: TObject);
private
{ private declarations }
public
{ public declarations }
end;

var
Form1: TForm1;

implementation

{ TForm1 }

procedure TForm1.Button1Click(Sender: TObject);
begin
Form1.Label1.Caption:='Hello World';
end;

initialization
{$I unit1.lrs}

end.
Professor Carlos disse…
Obrigado pelo comentário. Você verificou se seu programa roda no emulador? Não tenho informação suficiente pra dizer se o código roda nessa versão. Eu fiz testes em um HP com WinCE 5. Baixe um emulador pra testar sua aplicação.
Unknown disse…
Realmente não fiz o teste, vou baixar e instalar o emulador. O executável gerado é bem maior que o que pode achar para ele e que roda. Algo que pensei, a ainda não fiz foi instalar apenas a versão para ARM, talvez o código saia direto. Este Hello World! vai ter que sair.
Professor Carlos disse…
Você não instalou a versão do Lazarus pra ARM WinCE? Se for isso, então ele não gera o executável corretamente.
Unknown disse…
Prof. eu instalei as duas versões do Lazarus, como indicado no blog, mas digo que se talvez eu instalasse apenas a versãor for ARM o código gerado seria o que preciso para rodar no HP Jornada 520. Vou testar, ou seja, remover os dois com o Revo Uninstaller, e reinstalar apenas a versão para ARM. Informo os resultados.
Rafael jorge disse…
oi. meu nome é rafael..
vc nao poderia postar os fontes desse seu exemplo nao?
e que eu to tentando fazer exatamente como vc colou e nao ta funcionando. obrigado.
t+
Professor Carlos disse…
Ok

Está aqui:
http://sites.google.com/site/carlosctrl/documentos-1/WCE.rar?attredirects=0&d=1
Unknown disse…
Ola Professor, estou me aventurando no porte de uma aplicacao, que hoje já roda em debian/slackware, bem como winXP, eis que agora o cliente pediu que fosse portada para WinCE (IPA280 Hw), no entanto percebi que existem alguns pormenores que estou ajustando.
primeiro, os componentes de tela utilizados são Label,Image, TextBox, EditMask sendo assim acredito que não será necessário KOL-CE,QT4, mesmo pq QT4, esta dando erro na compilação do LCL (0.9.28.2 beta,FPC 2.2.4 SVN 22279)
Até o momento ja vi que terei de colocar este codigo de controle
{$ifdef LCLWinCE}
WinCEWidgetset.WinCETitlePolicy := tpOKButtonOnlyOnDialogs;
Application.ApplicationType := atSmartphone;//atKeyPadDevice; atPDA
//FrmInicio.BorderStyle:=bsDialog;
{$else}
//FrmInicio.BorderStyle:=bsNone; // em windows ou linux nao tem botao de fechar
{$endif} assim como este include
{$ifdef LCLWinCE}
WinCEInt,
{$endif}
hoje a aplicacao em Win/Linux não pode ser encerrada por meio dos botões de Dialogo, espero que o código acima possibilite isto
roadmap:
- verificar diretorios no wincexlinux
- verificar bibliotecas/porte .dll/.so
- verificar coordenadas/dimensao de tela, fontes de letra
- criar "utilitario" para impressão, no linux uso cat > lpt
vou postando o progresso
Anônimo disse…
Professor Carlos,

Segui todos procedimentos e não consegui acessar o banco com o TSQLite3Dataset, pois o mesmo não constava na paleta de componentes.
Pergunto, como faço pra instalar o componente TSQLite3Dataset e deixá-lo funcionando, eu estou usando o Lazarus Version 0.9.28.2.

Obrigado.

Ass. Hugo
Professor Carlos disse…
Não precisa instalar. Só declare a unit sqlite3ds no uses, como está dito no post, na parte onde começa o código.
Anônimo disse…
Prof. Carlos,

estou usando:
- sqliteviewer.exe para criar e visualizar o banco no Win CE;
- sqlite3.dll estou usando essa DLL, sendo que a mesma quando abro o emulador ela não aparece no diretório compartilhado;
Ele está dando um erro de conexão com o banco na hora de inserir um registro. Caso for possível gostaria que mim enviasse os fontes para que eu possa analisar.
Email: hugoleoal@gmail.com

Ass: Hugo

Obrigado.
Professor Carlos disse…
Aqui está:

http://sites.google.com/site/carlosctrl/documentos-1/WCE.rar?attredirects=0&d=1
Unknown disse…
Professor, boa noite.
Baixei seu demo e tentei rodar em iPAQ da HP com Windows CE, coloquei dentro de uma pasta chamada IBGE com a sqlite3.dll, porem percebi que nao tinha o arquivo clientes.db, criei com SQLite Browser com a tabela "cidade" e os campos "Id_Cidade","nome", porem a apalicação abre na hora de cadastrar uma cidade com seu código da msg de erro "SQLITE_ERRC - no such table: cidade."

Obrigado pela ótima dica, com isso estamos crecendo mais em nossas vidas proficionais.

Abraços.

Thiago Gobatti
Professor Carlos disse…
Oi Thiago

Vou checar mais uma vez. Rodei esse demo num iPAQ com WinCE 5.0. Já viu esse outro post? http://professorcarlos.blogspot.com/2010/08/lazarus-wince-com-dbf.html.
Neste eu usei tabelas dBase.
Unknown disse…
Professor bom dia, fiz este exemplo e usei também o Sqlite, só que toda vez que faço alguma operação com banco (Insert, Select, Update, Delete) a aplicação no meu emulador e fechado, sem exibir nenhuma mensagem de erro, a única parte que esta passando sem da erro é no open da tabela. Tem alguma idéia do que pode estar acontecendo?
Grato desde já.
Professor Carlos disse…
Rodolfo se vc está rodando em um emulador WM 6, realmente está dando problema e deve ser a dll que não é compatível. Eu fiz esses testes em um pda com WM 5 e funcionou bem. Infelizmente não tenho idéia de como resolver isso.
Jean Patrick disse…
Funcionou no emulador WinCE 6. Usei os componentes da paleta SQLdb e a DLL citada no artigo. Coloquei a dll e o banco na mesma pasta do executável. Vou colocar um exemplo no livro que estou terminando - IDE Lazarus: Alternativa Gratuita e Multiplataforma ao Delphi
Rafael disse…
Bom dia
estou tentando fazer uma aplicação onde o programa, no WinCE, enxergue a Base de Dados, em SQL Server, em um servidor WinServer.
vc tem alguma dica por onde posso iniciar??
mto obrigado

Rafael
Professor Carlos disse…
Não sei se a MS tem algum cliente SQLServer que rode em WinCE. Mas eu faria usando um appserver. Tem um componente chamado lnet para o lazarus que roda no WinCE. Com ele você pode fazer a comunicação via tcp/ip entre WinCE e Windows.
Unknown disse…
Bom Dia, estou desenvolvendo um sistema comercial para pedidos vendas etc, estou fazendo isso com o lazarus para Windows ce, surgiu um problema, como faço para enviar (do PDA remotamente) e receber (no sistema de retaguarda)os arquivos de pedidos e vendas em formato .txt?
Não consegui entender os exemplos que vem junto com o pacote do LNET, poderia me ajudar ?
Professor Carlos disse…
Perison

Você pode usar o exemplo na pasta tcpudp. Quando você executa ele, pode-se escolher o tipo da conexão e a porta. No desktop você pressiona o botão "Host" pra ficar aguardando uma conexão. No PDA você escolhe o mesmo tipo de conexão, a mesma porta, informa o nome do host e pressiona o botão "Connect". Daí pra testar você digita algo na caixa de texto e pressiona "Send". O host deve receber a mensagem. Eu já fiz testes assim com um PDA enviando comando SQL para um servidor Firebird num desktop. Funcionou bem. Esse exemplo é excelente pra você escrever o seu.
Marco disse…
Olá, Professor Carlos, ótimo blog.

Entre Java e Lazarus fiz os testes e achei Lazarus bem mais interessante.Pois em pouco tempo foi muito fácil criar um aplicativo com tabelas dbf.
Não saberia me dizer se no Windows Mobile 7 o Lazarus funciona?

Valeu.
Professor Carlos disse…
Oi Marco

Eu ainda não fiz testes, mas acredito que funcione. Tente baixar o emulador e verifique isso. Qualquer dúvida, poste aqui ou me mande uma mensagem.
Luciano Uchôa disse…
Gostaria de saber se você conhece alguma função em Lazarus ou API do Windows que faça WinCE hibernar?
Você já conseguiu usar as versões mais recentes do Snapshots do Lazarus para WinCE?
Obrigado.
Jairo Gurgel
jsgurgel@hotmail.com
Professor Carlos disse…
Não tenho conhecimento sobre a função que você deseja. Tenho um snapshot de 17/07 que está compilando normalmente para WinCE
Luciano Uchôa disse…
Em qual endereço eu consigo efetuar o download dessa versão do Lazarus.
Professor Carlos disse…
Penso que você não consegue. Você deve conhecer o site http://www.hu.freepascal.org/lazarus/, e lá só tem os últimos snapshots. Mas, qual é a sua dificuldade?
Anônimo disse…
Oi Professor,
parabens pelo seu trabalho.
fiz um pequeno exemplo para win ce que esta funcionando como preciso, porem gostaria de comunicar em tempo real com um servidor que usa um banco mysql.
ha alguma dll ou algo parecido para se comunicar com o servidor?
[]`s
juvencio
bdxy@bol.com.br
Professor Carlos disse…
Juvencio
Uma solução é usar um componente chamado lnet (lnet.wordpress.com) e fazer a comunicação via tcp/ip.
Anônimo disse…
Oi Professor,
Obrigado pela dica.
Instalei o componente e compilei alguns dos exemplos no desktop sem problemas , porem não compila para o windows ce.
Usei o lazarus 0.9.31 com fpc 2.5.1.
O senhor conseguiu compilar para wince? com qual versão? qual exemplos testou?
[]`s
juvencio
Professor Carlos disse…
Você mudou o widgetset em Opções de projeto -> Opções de compilador?
Anônimo disse…
oi professor
conforme havia prometido, removendo as linhas de comentario consegui compilar tambem para o wince.
Compilei o exemplo testnet da pasta de exemplos.
coloquei em um micro 64 bits, para testar, mas sempre reclama da falta do OpenSSL library.
Ja fiz a instalação, copie para a psta do aplicativo, para a pasta do windows, mas não tem jeito de funcionar.
Nao tentei ainda para o wince,pois primeiro preciso entender o funcionamento, mas nao estou conseguindo.
alguma orientação?

[]'

juvencio
Professor Carlos disse…
Tente copiar a dll para a pasta C:\Windows\SysWOW64
Anônimo disse…
Oi Professor,
Coloquei os arquivos na pasta C:\Windows\SysWOW64, mas no windows 7 não tem jeito de funcionar.
Ha um misterio que nao entendi que é o seguinte:
no windows XP para poder executar fora do diretorio original do exemplo precisa copiar os arquivos pkey e cert para o diretorio do arquivo.
No Windows 7 nem assim funcionou.
bom, esses arquivos não foram "compilados" no momento da compilacao do exemplo, pois mantiveram a data original.
O senhor teria alguma ideia do que fazer com esses arquivos no dispositivo movel?
E as dll's openSSL existem para windows CE? procurei na internet mas nao encontrei nada.
[]`s
Juvencio
Professor Carlos disse…
Não sei o que pode estar acontecendo. Aqui na minha máquina com sistema 64 bits está rodando beleza. Há algum tempo eu fiz um demo funcional no WinCE. Comuniquei com um PC e servidor Firebird sem problemas.
Anônimo disse…
oi professor, boa tarde!

Nao consigo rodar os aplicativos que usam openSSL no windows CE, pois reclama da falta das dll`s.
O Sr. conseguiu localizar essas dll`s?
Poderia disponibiliza-las ou informar onde consegui-las.

Juvencio
Professor Carlos disse…
Eu não tenho essas dlls. O que exatamente você está tentando fazer?
Anônimo disse…
Oi Professor,
Estou tentando integrar "on-line" um aplicativo em dispositivo movel com um sistema em um servidor.
Compilei o exemplo tcpudp que acompanha o lnet, porem para funcionar no celular, somente removendo a parte que usa as bibliotecas SSL.
De micro a micro, com windows xp consegui comunicar, porém no dispositivo movel ainda não.
[]`s
juvencio
Professor Carlos disse…
Juvencio

Não sei se existem essas dlls para WM. Já tentou pesquisar alguma coisa no próprio site da lnet?
Boa tarde, estou com dificuldade na configuração do Lazarus, fiz como descrito acima, mais quando dou um ctrl+f9 aparece a seguinte mensagem:

Error: ppcarm.exe can't be executed, error message: Failed to execute ""ppcarm.exe" -MObjFPC -Scghi -O1 -Twince -gl -Xs -WG -vewnhi -l "-FiC:\Documents and Settings\usuario002\Meus documentos\TESTE LAZRUS\lib\i386-win32" -Fuc:\lazarus\lcl\units\arm-wince -Fuc:\lazarus\lcl\units\arm-wince\wince -Fuc:\lazarus\packager\units\arm-wince "-FuC:\Documents and Settings\usuario002\Meus documentos\TESTE LAZRUS\" -Fu. "-FUC:\Documents and Settings\usuario002\Meus documentos\TESTE LAZRUS\lib\i386-win32\" -oproject1.exe -dLCL -dLCLwince project1.lpr

O que poderia ser feito para contornar esse erro ?
Obrigado pela atenção.
Professor Carlos disse…
Você instalou o compilador para WinCE?
Bom dia Professor!
Estou com 2 Problemas :
1° - Baixe o seu executavel ja compilado para windows ce e da a seguinte mensagem ao executar ele no emulador do windows ce:
"sqlteviewer" is not a valid windows Ce application.

2 ° - Pelos fontes disponibilizados pelo senhor, tentei compilar em ambiente do windows 7 64 bits e no xp 32 bits, em nenhum dos dois com sucesso.
Mensagem:

Error: ppcarm.exe can't be executed, error message: Failed to execute ""ppcarm.exe" -B -MObjFPC -Scgi -O1 -Twince -vewnhi -l -Fuc:\lazarus\lcl\units\arm-wince -Fuc:\lazarus\lcl\units\arm-wince\wince -Fuc:\lazarus\packager\units\arm-wince -FuC:\Users\gustavo\Desktop\WCE\WCE\ -Fu. -oTeste.exe -dLCL -dLCLwince Teste.lpr

Ja instalei tanto o
lazarus-0.9.30-fpc-2.4.2-win32
Quanto o
Lazarus-0.9.31-34218-fpc-2.4.4-20111216-cross-arm-wince-win32.

Pode me ajudar?
Desde de já, agradeco!
Um Abraço
Professor Carlos disse…
O sqliteviewer não é uma aplicação minha, e mesmo assim deveria rodar no emulador. Qual a versão do seu emulador? Eu testei apenas no WM 6.
Quanto à compilação, houve algumas diferenças na forma de configurar o widgetset e o ambiente alvo.
Atualmente você configura o widget em Opções de Projeto -> Opções de compilador -> Caminhos
E o SO alvo você configura em Opções de Projetos -> Opções de compilador -> Geração código
Tente e me retorne
Professor onde consigo baixar o
Lazarus-0.9.28.2-fpc-2.2.4-cross-arm-wince-win32.exe
, pois no link do site nao aponta pra ele!

Desde de ja obrigado.
Att
Professor Carlos disse…
Gustavo

Essa versão está obsoleta. Você precisa baixar a versão mais recente, tanto o Lazarus quanto o pacote para wince. Aqui você tem isso
http://sourceforge.net/projects/lazarus/files/Lazarus%20Windows%2032%20bits/Lazarus%200.9.30.2/
Oi , Professor.
Com o link que me mandou o lazarus compilar certinho para windows Ce, agora os que estao no proprio site , não funcionam.
Ate ai tudo bem, gerei o executavel so que quando coloco no emulador do windows ce 5 diz que nao e compativel, vi que em uma resposta mais acima o Sr disse que o lazarus nao poderia ser o pra cross-arm se nao , nao geraria o executavel corretamente, consigo lhe enviar o .exe para o Sr rodar ou tem como eu saber se o problema esta com o lazarus instalado?
Obrigado
Att
Professor Carlos disse…
Exclua o executável e mande os fontes pra eu tentar ver aqui
paxá disse…
ola professor vc poderia disponibilizar tbm o banco.db pois criei um banco e nao consigo acessar via programa so pelo view q consigo, obrigado
Professor Carlos disse…
Pode baixar aqui
http://sites.google.com/site/carlosctrl/documentos-1/WCE.rar?attredirects=0&d=1
Unknown disse…
Olá professor !

Não consegui fazer a configuração inicial da IDE Lazarus para compilar conforme descrito no inicio de seu post, "Project -> Compiler options. Na aba Paths selecione wince em LCL Widget Type (various). Na aba Code escolha WinCE em Target OS (-T) e arm em Target CPU family (-P). Pronto. O compilador irá gerar um executável que executa apenas no PDA. Dessa forma para compilar use sempre CTRL + F9."
Minha versão do Lazarus 1.0.8 e Fpc 2.6.2 ; Traz o seguinte erro: O compilador C:\lazaus\fpc\2.6.2\bin\i386-win32\fpc.exe nao suporta o alvo arm-wince.
O que faço pra resolver ?

No aguardo !

Marcos Martins
Professor Carlos disse…
Marcos

Para poder compilar para arm é necessário instalar o pacote correspondente. No mesmo local onde você baixou o pacote principal existe o pacote cross-arm-wince.

Postagens mais visitadas deste blog

Lazarus - Acessando banco de dados com SQLdb - Parte I

Para fazer nossa primeira aplicação usando banco de dados no Lazarus vamos usar o SQLite e o conjunto de componentes nativo SQLdb. Inicialmente vamos apresentar passo como essa aplicação foi criada. Essa foi a maneira que eu fiz, e eu agradeço sugestões e questionamentos que pessoas que já passaram por essa experiência. Depois irei fazer algumas considerações sobre o uso do SQLdb. SQLite SQLite é uma biblioteca que implementa um motor de banco de dados SQL. É livre para qualquer finalidade, seja uso particular ou comercial. Lê e escreve em um único arquivo que pode ter além de tabelas, índices, gatilhos e visões. Executa em várias plataformas e é indicado para aplicações embarcadas. Maiores detalhes podem ser encontrados no site oficial. Para usá-lo, baixe-o do site e faça a instalação adequada para o seu sistema operacional. No Windows isso é muito simples, apenas copie sqlite3.dll para o system32 da pasta do sistema operacional. Existe uma ferramenta de linha de comando chamada

Tipos de dados no SQLite

Em SQLite, diferente de outros motores de banco de dados, o tipo de dado de um valor está associado com o valor propriamente dito, e não com o seu contêiner. É um sistema de tipo dinâmico. Um campo de uma tabela em SQLite pode receber qualquer tipo de dado. Assim, o SQLite simplesmente ignora o tipo informado no comando CREATE TABLE. Então, dizemos que no SQLite existem classes de armazenamento. E essas classes são: NULL - como em qualquer outro banco de dados. INTEGER - inteiro com sinal, armazenado em 1, 2, 3, 4, 6 ou 8 bytes dependendo da grandeza do valor. REAL - valor de ponto flutuante armazenado em 8 bytes. TEXT - uma string armazenada usando UTF-8, UTF-16BE ou UTF-16LE. BLOB - armazena um blob, como indica o nome. Uma coluna INTEGER PRIMARY é uma exceção. Só aceita números inteiros. Qualquer valor em um comando SQL tem uma classe de armazenamento implícita. Durante a execução do comando SQL, o SQLite pode converter valores entre classes numéricas (INTEGER e REAL)

Lazarus - Criando relatórios com FortesReport (Parte I)

Para a criação de relatórios, o Lazarus já trás o componente LazReport, no entanto ele precisa ser instalado no IDE. Para fazer a instalação do pacote, acesse o menu Package -> Open package file (.lpk) . Localize o diretório de instalação do Lazarus e na pasta components abra lazreport e depois source . Abra o pacote lazreport.lpk , clique em Compile e depois em Install . Como já sabemos isso irá recompilar o IDE. Depois de inicializado novamente estará disponível a aba LazReport . Leia aqui um tutorial básico sobre o LazReport. No entanto queremos mostrar uma alternativa ao LazReport . Por essa razão, vamos apresentar neste artigo o FortesReport . Para quem conhece o QuickReport, que fazia parte do Delphi, não terá dificuldade de desenvolver com esse componente. Baixe o pacote aqui e instale. Os procedimentos são semelhantes aos que mostramos acima. Você terá uma nova aba chamada Fortes Report . Conectando o banco de dados O primeiro passo para criar a aplicação é fazer