1. INDEX
-
Introdução
2. CONTEÚDO
-
Resumo do conteúdo:
- Descreve um resumo de como foi feito esse documento com as facilidade encontradas para produzi-lo e dificuldade encontrada.
-
Introdução
-
Objetivo:
-
Para que o framework MarIcarai tenha o máximo possível de programadores utilizando-o preciso diminuir a curva de aprendizado. Para que a curva de aprendizado seja mais rápida possível é preciso aproveitar o máximo do conhecimento do novo programador, por isso devo aproveitar todas a rotinas prontas do lazarus porque as mesmas tem documentação.
-
[🔙]
-
-
Pre-requisitos:
-
Ter o lazarus instalado no windows ou no linux, minha preferência é linux.
- Obs: A forma mais fácil de instalar o lazarus em todas as plataformas é usar o projeto fpcupdeluxe no sistema operacional de sua preferência.
-
Domínio da linguagem pascal.
-
Domínio das apis do sistema operacional destino do código.
-
[🔙]
-
-
Benefícios:
-
O free pascal permite criar projetos em todos os sistemas operacionais existente no momento (25/10/2021).
-
[🔙]
-
-
Desvantagens.
-
Para criar um aplicativo para vários sistemas operacionais é preciso abrir mão de projetos bons mais que existe somente em um sistema operacional.
-
[🔙]
-
-
-
CONTEÚDO ESTUDADO
-
Estudar como o projeto free pascal foi criado.
-
Como o free pascal padroniza o nome das unit?
- O nome das units gravadas em arquivos são sempre em minusculas.
- O nome das units usa a letra maiuscula para separar as palavras por exemplo:
- O arquivo sysinitpas.pp é a unit SysInitPas;
-
Como o free pascal padroniza o nome de classes?
- Nome de classes sempre começa com letra maiuscula.
-
Como o free pascal padroniza o nome de objetos instanciados, variáveis e atributos?
- Analisando o código classes.pp observei que não existe padrão, já que pascal ignora minúsculas e maiusculas, por isso posso adotar o padrão usado em java exceto no nome dos pacotes já que pascal é compilado:
-
Nome de pacotes MarIcarai começa com as letras mi.NomeDoPacote;
-
Nome de atributos privados começa com _ (underline) e a primeira letra é maiuscula e os atributos publicos ou protegidos começa com f e a letra seguinte maiuscula;
-
As propriedade começa com letra maiuscula;
-
Propriedade e métodos das classes começo com letra minusculas;
-
Nome de variáveis e objetos (classes instanciadas) começa com letras minúsculas;
-
Nome de classes, interfaces, tipos e constantes começa com letra maiusculas;
-
Nome de palavras reservadas e identificadores começa com letra minusculas;
-
Nome de constantes usar letras maiusculas e separadas com sinal de underline (_);
-
Exemplo do padrão adotado no projeto MarIcarai:
const NUMERO_PI = 3.14; type TMyClass = class public fNome : String; private _SomeVar : Integer; published SomaVar read _SomeVar write _SomeVar; public procedure escrevaSomeVar(); end; var i : Integer; objeto : TMyClass; begin objeto := Tclass.create(); objeto.fNome := 'Meu padrão'; objeto.SomaValor := 40; objeto.escrevaSomeVar(); for i := 1 to 10 do begin writeLn(i); end; end.
-
.
-
- ..
- Analisando o código classes.pp observei que não existe padrão, já que pascal ignora minúsculas e maiusculas, por isso posso adotar o padrão usado em java exceto no nome dos pacotes já que pascal é compilado:
-
Como o Free pascal organiza suas pastas apos ser instalado.
-
Ao instalar free pascal usando o projeto fpcupdeluxe ele criar dentro da pasta que você informa em fpcupdeluxe as seguintes pasta:
-
SuaPasta/fpc
- Essa pasta contem o compilador e as units compiladas:
- A pasta SuaPasta/fpc/bin conta contém o compilador da plataforma default;
- A pasta SuaPasta/fpc/lib contém as units compiladas, pacotes dll (windows ), .so (linux), etc de todas as plataformas destino instalada;
- Obs: Aqui o sistema criar sub pastas para todas as versões instaladas;
- A pasta SuaPasta/fpc/share é usada para a documentação comum a todas as plataformas;
- O link SuaPasta/fpc/units aponta para a pasta SuaPasta/fpc/lib/fpc/3.3.1/units.
- Essa pasta contem o compilador e as units compiladas:
-
SuaPasta/fpcsrc
- A pasta SuaPasta/fpcsrc/compiler contém os fontes do compilador;
- A pasta SuaPasta/fpcsrc/packages contém os fontes dos pacotes instalados do fpc
- Cada pacote em SuaPasta/fpcsrc/packages contém as seguintes pastas:
-
SuaPasta/fpcsrc/packages/src
- Para criar uma fonte multiplataforma é necessário escrever as units para cada plataforma.
- Exemplo:
- SuaPasta/fpcsrc/packages/rtl-console/src/win
- SuaPasta/fpcsrc/packages/rtl-console/src/linux
- SuaPasta/fpcsrc/packages/rtl-console/src/inc
- Obs: A pasta SuaPasta/fpcsrc/packages/inc contém o código fonte comum em todas as plataformas** . SuaPasta/fpcsrc/packages
- Exemplo:
- Para criar uma fonte multiplataforma é necessário escrever as units para cada plataforma.
-
SuaPasta/fpcsrc/packages/examples
- Contém os exemplos de uso do pacote.
-
SuaPasta/fpcsrc/packages/tests
- .
-
SuaPasta/fpcsrc/packages/units //Units compiladas por plataforma
-
- Cada pacote em SuaPasta/fpcsrc/packages contém as seguintes pastas:
- .
-
.
-
-
Ao instalar o Free pascal na plataforma linux x86_64 ele cria as seguintes pastas:
-
/fpc/bin/x86_64-linux Nota: Binários da plataforma default
-
/fpc/share/doc/fpc-3.2.2 Nota: Esta pasta contém exemplo de como usar free pascal
- Para testar os exemplos desta pasta é necessário usar o IDE /fpc/bin/x86_64-linux/fp no console.
- Para testar usando o ide lazarus é preciso criar um projeto lazarus e configurar para que os mesmos funcionem.
-
/fpc/lib/fpc/3.2.2/units/
- i386-win32 Nota: Units compiladas da plataforma i386-win32
- units/x86_64-linux Nota: Units compiladas da plataforma x86_64-linux
- arm-android Nota: Units compiladas da plataforma arm-android
-
O link units aponta para /fpc/lib/fpc/3.2.2/units/.
-
A pasta /fpcsrc contém os fontes do projeto do compilador free pascal.
-
-
-
Pacotes comuns em todos os sistemas operacionais:
-
O pacote FCL (FCL - FREE COMPONENT LIBRARY) é usado para fornecer um conjunto completo de classes, de forma que um programador seja capaz de lidar com as tarefas de programação mais comuns; sempre que possível, a equipe FP tenta manter a compatibilidade do Delphi, de forma que o código escrito para um compilador possa ser compilado pelo outro.
-
O pacote RTL é mantido pela equipe do free pascal. é importante conhecer todas as units deste pacote para que seja aproveitado o máximo possível do trabalho feito pela equipe free pascal.
-
A unidade objpas é feita para compatibilidade com Object Pascal implementado pelo Delphi. A unidade é carregada automaticamente pelo compilador Free Pascal sempre que o modo Delphi ou objfpc é inserido, seja através das opções de linha de comando -Sd ou -Sh ou com as diretivas {ParseError: KaTeX parse error: Expected 'EOF', got '}' at position 13: MODE Delphi}̲** ou **{ MODE OBJFPC};
-
A unit printer foi implementada nas seguintes plataformas:
- Dos,
- Windows
- Linux
- OS/2
-
-
-
Utilitários:
- O utilitário h2pas converte um arquivo de cabeçalho C em uma unidade pascal.
-
Como o projeto free pascal implementa o conceito de multiplataforma?.
- Analisando o pacote rtl percebi que as units são implementada em todas as plataformas e são incluida através de duas includes sendo uma antes da palavra implementation e outra após a palavra implementation. A unit principal só tem programas comuns a todas as plataformas e nas includes tem a implementação em cada plataforma.
- Exemplo: 1.
- Analisando o pacote rtl percebi que as units são implementada em todas as plataformas e são incluida através de duas includes sendo uma antes da palavra implementation e outra após a palavra implementation. A unit principal só tem programas comuns a todas as plataformas e nas includes tem a implementação em cada plataforma.
-
Exemplo do assunto 01.
-
Descrição do exemplo
-
-
Referências:
-
[🔙] -
Assunto 02
-
Assunto 03
-
Assunto 04
-
Assunto 05
-
Descrição do conteúdo.
-
Exemplo do assunto 05.
-
Descrição do exemplo
-
-
[🔙] -
Assunto 06
-
Descrição do conteúdo.
-
Exemplo do assunto 06. 1. Descrição do exemplo
-
[🔙] -
Assunto 07
-
Descrição do conteúdo.
-
Exemplo do assunto 07. 1. Descrição do exemplo
-
[🔙] -
Assunto 08
-
Descrição do conteúdo.
-
Exemplo do assunto 08. 1. Descrição do exemplo
-
[🔙] -
Assunto 09
-
Descrição do conteúdo.
-
Exemplo do assunto 09. 1. Descrição do exemplo
-
[🔙] -
Assunto 10
-
[🔙]
-
-
REFERÊNCIAS GLOBAIS
-
HISTÓRICO
-
26/10/2021 - [x] Criar este documento baseado no modelo03.md ; - [x] Escrever tópico Objetivos; - [x] Escrever tópico Pre-requisitos - [x] Escrever tópico Benefícios - [x] Escrever tópico desvantagens
- <text onclick="goBack()">[🔙]</text>
- 27/10/2021
- [x]Instalar o pacote PasDoc
- [ ] Escrever tópico Conteúdo
- Estudar como o projeto free pascal foi criado.
- [ ] Escrever tópico Exemplos - [ ] Escrever tópico Referências - [ ] Atualizar o histórico deste documento. - [ ] Testar este documento depois após uma semana de concluído.
- 27/10/2021
- [x]Instalar o pacote PasDoc
- [ ] Escrever tópico Conteúdo