Skip to content
| Marketplace
Sign in
Visual Studio Code>Programming Languages>CrabPascalNew to Visual Studio Code? Get it now.
CrabPascal

CrabPascal

CrabPascal

|
11 installs
| (0) | Free
🦀 Suporte completo para Delphi/Pascal com CrabPascal Compiler
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

🦀 CrabPascal - Extensão VSCode

Version License

A única extensão Pascal que simplesmente funciona! ✨

Compilador incluído · Zero configuração · Pronto em 1 minuto


🚀 Instalação Ultra-Rápida

Passo 1: Instale a extensão

Extensões (Ctrl+Shift+X) → Buscar "CrabPascal" → Instalar

Passo 2: Pronto!

Abra um arquivo .pas → Ctrl+Shift+B → Compila!

Sim, é só isso! O compilador já vem incluído na extensão (~1MB).

Nenhuma configuração adicional necessária! 🎉


✨ Por que CrabPascal?

Recurso Outros CrabPascal
Instalação Manual, complexa ✅ 1 clique
Compilador Baixar separado ✅ Incluído
Configuração Obrigatória ✅ Zero
Tempo Setup 15+ minutos ✅ 1 minuto

🎯 Recursos

Core

  • ✅ Syntax Highlighting - Destaque de sintaxe Pascal/Delphi
  • ✅ Compilação Integrada - Ctrl+Shift+B compila na hora
  • ✅ Execução Rápida - Ctrl+F5 compila e executa
  • ✅ Erros em Tempo Real - Veja erros ao salvar
  • ✅ Problem Matcher - Erros na aba Problemas
  • ✅ Auto-complete - Fechamento automático de blocos

Avançado

  • 🔥 Horse Framework - Suporte completo para APIs REST
  • 🔥 OOP Moderno - Classes, herança, polimorfismo
  • 🔥 Properties - Getters/Setters automáticos
  • 🔥 Generics - Tipos genéricos (parcial)

⌨️ Atalhos de Teclado

Atalho Ação
Ctrl+Shift+B Compilar arquivo atual
Ctrl+F5 Executar arquivo atual
Ctrl+Shift+C Verificar sintaxe
F8 Próximo erro
Shift+F8 Erro anterior
Ctrl+Shift+M Lista de problemas

📝 Exemplos Práticos

🎯 Hello World

program HelloWorld;
begin
  WriteLn('Hello from CrabPascal! 🦀');
  ReadLn;
end.

Ctrl+Shift+B → Compilado! Ctrl+F5 → Executado!


🧮 Calculadora Console Interativa

program Calculadora;
uses SysUtils;

var
  num1, num2, resultado: Double;
  operacao: Char;
  continuar: String;

begin
  repeat
    WriteLn('=================================');
    WriteLn('    CALCULADORA CRABPASCAL 🦀    ');
    WriteLn('=================================');
    WriteLn;
    
    Write('Digite o primeiro número: ');
    ReadLn(num1);
    
    Write('Digite a operação (+, -, *, /): ');
    ReadLn(operacao);
    
    Write('Digite o segundo número: ');
    ReadLn(num2);
    
    WriteLn;
    
    case operacao of
      '+': resultado := num1 + num2;
      '-': resultado := num1 - num2;
      '*': resultado := num1 * num2;
      '/': begin
             if num2 <> 0 then
               resultado := num1 / num2
             else begin
               WriteLn('ERRO: Divisão por zero!');
               Continue;
             end;
           end;
    else
      begin
        WriteLn('ERRO: Operação inválida!');
        Continue;
      end;
    end;
    
    WriteLn('Resultado: ', resultado);
    WriteLn;
    Write('Continuar? (S/N): ');
    ReadLn(continuar);
    WriteLn;
    
  until (continuar <> 'S') and (continuar <> 's');
  
  WriteLn('Obrigado por usar CrabPascal! 👋');
end.

🌐 API REST com Horse Framework

program APIServer;
uses Horse, Horse.CORS;

begin
  THorse
    .Use(CORS)
    
    // Rota GET
    .Get('/api/hello', 
      procedure(Req: THorseRequest; Res: THorseResponse; Next: TProc)
      begin
        Res.Send('{"message": "Hello from CrabPascal + Horse! 🦀"}');
      end)
    
    // Rota POST
    .Post('/api/calc', 
      procedure(Req: THorseRequest; Res: THorseResponse; Next: TProc)
      var
        a, b, resultado: Integer;
      begin
        a := StrToInt(Req.Query['a']);
        b := StrToInt(Req.Query['b']);
        resultado := a + b;
        Res.Send('{"resultado": ' + IntToStr(resultado) + '}');
      end)
    
    .Listen(9000, 
      procedure(Horse: THorse)
      begin
        WriteLn('🚀 Servidor rodando em http://localhost:9000');
        WriteLn('📍 GET  /api/hello');
        WriteLn('📍 POST /api/calc?a=5&b=3');
      end);
end.

Teste: curl http://localhost:9000/api/hello


🎮 Jogo de Adivinhação

program JogoAdivinhacao;
uses SysUtils;

var
  numeroSecreto, palpite, tentativas: Integer;

begin
  Randomize;
  numeroSecreto := Random(100) + 1;
  tentativas := 0;
  
  WriteLn('=================================');
  WriteLn('   JOGO DE ADIVINHAÇÃO 🎯        ');
  WriteLn('=================================');
  WriteLn('Adivinhe o número entre 1 e 100!');
  WriteLn;
  
  repeat
    Inc(tentativas);
    Write('Tentativa ', tentativas, ': ');
    ReadLn(palpite);
    
    if palpite < numeroSecreto then
      WriteLn('📈 Muito baixo! Tente novamente.')
    else if palpite > numeroSecreto then
      WriteLn('📉 Muito alto! Tente novamente.')
    else begin
      WriteLn;
      WriteLn('🎉 PARABÉNS! Você acertou!');
      WriteLn('Número: ', numeroSecreto);
      WriteLn('Tentativas: ', tentativas);
    end;
    
  until palpite = numeroSecreto;
  
  WriteLn;
  WriteLn('Pressione Enter para sair...');
  ReadLn;
end.

🏦 Sistema Bancário OOP

program SistemaBancario;
uses SysUtils;

type
  TContaBancaria = class
  private
    FTitular: String;
    FSaldo: Double;
  public
    constructor Create(Titular: String; SaldoInicial: Double);
    procedure Depositar(Valor: Double);
    function Sacar(Valor: Double): Boolean;
    procedure ExibirSaldo;
    property Titular: String read FTitular;
    property Saldo: Double read FSaldo;
  end;

constructor TContaBancaria.Create(Titular: String; SaldoInicial: Double);
begin
  FTitular := Titular;
  FSaldo := SaldoInicial;
end;

procedure TContaBancaria.Depositar(Valor: Double);
begin
  FSaldo := FSaldo + Valor;
  WriteLn('✅ Depósito de R$ ', Valor, ' realizado!');
end;

function TContaBancaria.Sacar(Valor: Double): Boolean;
begin
  if Valor <= FSaldo then begin
    FSaldo := FSaldo - Valor;
    WriteLn('✅ Saque de R$ ', Valor, ' realizado!');
    Result := True;
  end else begin
    WriteLn('❌ Saldo insuficiente!');
    Result := False;
  end;
end;

procedure TContaBancaria.ExibirSaldo;
begin
  WriteLn('👤 Titular: ', FTitular);
  WriteLn('💰 Saldo: R$ ', FSaldo);
end;

var
  conta: TContaBancaria;

begin
  WriteLn('=================================');
  WriteLn('    SISTEMA BANCÁRIO 🏦          ');
  WriteLn('=================================');
  WriteLn;
  
  conta := TContaBancaria.Create('João Silva', 1000.00);
  
  conta.ExibirSaldo;
  WriteLn;
  
  conta.Depositar(500.00);
  WriteLn;
  
  conta.Sacar(300.00);
  WriteLn;
  
  conta.Sacar(2000.00); // Vai falhar
  WriteLn;
  
  conta.ExibirSaldo;
  
  conta.Free;
  
  WriteLn;
  WriteLn('Pressione Enter para sair...');
  ReadLn;
end.

🛠️ Comandos

Acesse via Ctrl+Shift+P:

  • CrabPascal: Compilar arquivo atual - Compila o arquivo ativo
  • CrabPascal: Executar arquivo atual - Compila e executa
  • CrabPascal: Verificar sintaxe - Apenas verifica erros
  • CrabPascal: Build completo - Build com todas otimizações

⚙️ Configurações (Avançado)

99% dos usuários NÃO precisam configurar nada!

Mas se você compilou o CrabPascal do fonte ou quer usar uma versão customizada:

{
  "crabpascal.compilerPath": "C:\\caminho\\para\\crab-pascal.exe",
  "crabpascal.rtlPath": "C:\\caminho\\para\\rtl",
  "crabpascal.enableLinting": true
}

Opções:

crabpascal.compilerPath

  • Tipo: string
  • Padrão: Detectado automaticamente
  • Descrição: Caminho customizado para o compilador

crabpascal.rtlPath

  • Tipo: string
  • Padrão: ""
  • Descrição: Caminho customizado para RTL

crabpascal.enableLinting

  • Tipo: boolean
  • Padrão: true
  • Descrição: Verificação automática de erros ao salvar

🎯 Roadmap

  • ✅ v2.9.0 - Compilador incluído · Zero configuração
  • ⏳ v3.0.0 - IntelliSense avançado · Auto-complete inteligente
  • ⏳ v3.1.0 - Debugger integrado · Breakpoints
  • ⏳ v3.2.0 - Refactoring tools · Go to Definition

🐛 Suporte

Problemas ou sugestões?

  • 📝 Issues: https://bitbucket.org/alphatecnologia/crabpascal/issues
  • 📚 Documentação: https://bitbucket.org/alphatecnologia/crabpascal
  • 📁 Exemplos: Pasta examples/ no repositório

📚 Recursos Adicionais

Documentação Completa

Veja a pasta documentation/ no repositório para:

  • Guias detalhados
  • Tutoriais avançados
  • Referência da linguagem
  • Exemplos completos

Exemplos Incluídos no Repositório

  • 🧮 Calculadora Console - Interface interativa
  • 🌐 API REST - Horse Framework completo
  • 📋 CRUD - Sistema completo com classes
  • 🎮 Jogos - Exemplos práticos e divertidos
  • 🏦 Sistema Bancário - OOP avançado

💖 Contribuindo

Contribuições são muito bem-vindas!

  1. Fork o repositório
  2. Crie sua feature branch (git checkout -b feature/MinhaFeature)
  3. Commit suas mudanças (git commit -m 'Adiciona MinhaFeature')
  4. Push para a branch (git push origin feature/MinhaFeature)
  5. Abra um Pull Request

📄 Licença

MIT License - use livremente em projetos pessoais e comerciais.

Veja LICENSE para detalhes.


🙏 Créditos

Desenvolvido com ❤️ pela Alpha Tecnologia

Especial thanks para a comunidade Pascal/Delphi! 🦀


⭐ Gostou?

Se você está gostando do CrabPascal, considere:

  • ⭐ Dar uma estrela no repositório
  • 📢 Compartilhar com outros desenvolvedores Pascal
  • 💬 Deixar uma avaliação no marketplace
  • 🐛 Reportar bugs ou sugerir melhorias

🦀 CrabPascal - A única extensão Pascal que simplesmente funciona!™

Instale agora e comece a programar em 1 minuto! 🚀

  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
© 2025 Microsoft