Análisis completo del primer proyecto

En la lección anterior, al abrir el IDE se carga un proyecto con ventana vacía por defecto, pero el proyecto aún no se ha guardado. Pulsa Ctrl + S para guardarlo en una carpeta.

Los archivos del proyecto tras guardar se muestran arriba.

Carpeta backup

Directorio de copias de seguridad automáticas, almacena versiones históricas de los archivos para recuperarlos en caso de borrado accidental o errores de edición.

project1.ico

Icono de la aplicación, se muestra en la ventana del programa y el acceso directo del escritorio tras compilar.

project1.lpi

Archivo de configuración del proyecto: almacena parámetros de compilación, unidades referenciadas, ajustes de plataforma, paquetes de dependencias y otras configuraciones globales del proyecto.

project1.lpr

Archivo fuente principal del proyecto, punto de arranque del programa que gestiona todas las unidades de formulario.

project1.lps

Registro de sesión del IDE: guarda los archivos abiertos la última vez, disposición de ventanas y posiciones del cursor; restaura automáticamente el entorno de edición al abrir el proyecto.

project1.res

Archivo de recursos compilado que empaqueta recursos integrados como iconos e información de versión.

unit1.lfm

Archivo de disposición del formulario, almacena tamaño de ventana, coordenadas, controles, títulos y demás ajustes de la interfaz visual.

unit1.pas

Archivo de lógica del formulario, aquí se escriben los eventos de botones, variables, funciones y lógica de negocio; se usa en conjunto con el archivo lfm correspondiente.

unit1.pas

Este es nuestro archivo fuente Pascal. Al igual que Delphi, Lazarus está basado en el lenguaje Pascal.

  1. Pascal: Lenguaje de programación base con sintaxis sencilla, dividido en Pascal estándar y Object Pascal (orientado a objetos).
  2. Delphi: IDE y compilador comercial de código cerrado, usa Object Pascal, solo nativo para Windows y cuenta con la librería de interfaz VCL.
  3. Lazarus: IDE multiplataforma gratuito y de código abierto basado en el compilador Free Pascal con la librería LCL, compatible con la sintaxis de Delphi y capaz de compilar programas para Windows, macOS, Linux y otros sistemas.

Resumen en una frase: Pascal es el lenguaje, Lazarus y Delphi son dos herramientas de desarrollo IDE distintas.

A continuación el código fuente del archivo pas:

unit Unit1;                // Nombre de unidad Unit1

{$mode objfpc}{$H+}        // Directiva de compilación: modo ObjFPC + soporte de cadenas largas

interface                  // Sección de interfaz: expone clases y variables externamente
uses
  Classes, SysUtils, Forms, Controls, Graphics, Dialogs; // Importa librerías base

type
  TForm1 = class(TForm)    // Clase de ventana principal que hereda de Form base
  private                  // Miembros privados
  public                   // Miembros públicos
  end;

var
  Form1: TForm1;           // Instancia global de la ventana

implementation            // Sección de implementación: aquí va toda la lógica
{$R *.lfm}                 // Vincula el archivo de disposición visual Unit1.lfm

end.Lenguaje del código: JavaScript (javascript)

*.lfm: Archivo de disposición de formularios de Lazarus, guarda los controles arrastrados, tamaño de ventana y propiedades;

interface declara elementos visibles externamente, implementation contiene la lógica de negocio;

La directiva integrada {$mode objfpc} activa el modo de compilación orientado a objetos estándar de Free Pascal;

Un proyecto vacío no tiene botones ni eventos, solo una estructura básica de ventana; puedes arrastrar controles directamente para añadir funcionalidades.

unit1.lfm

unit1.lfm es nuestro archivo de disposición del formulario

object Form1: TForm1
  Left = 915
  Height = 240
  Top = 237
  Width = 320
  Caption = 'Form1'
  LCLVersion = '4.8.0.0'
end
Lenguaje del código: JavaScript (javascript)

A continuación la explicación de cada parámetro:

object Form1: TForm1 // Define el objeto: instancia de ventana de tipo TForm1
Left = 915 // Distancia del borde izquierdo de la pantalla: 915 píxeles
Height = 240 // Altura de ventana: 240 píxeles
Top = 237 // Distancia del borde superior de la pantalla: 237 píxeles
Width = 320 // Ancho de ventana: 320 píxeles
Caption = ‘Form1’ // Texto de la barra de título de la ventana
LCLVersion = ‘4.8.0.0’ // Versión de la librería LCL que generó esta disposición
end // Fin de la definición del objeto ventana

project1.ico

Se trata de un archivo ico que actúa como icono de la aplicación

Se puede abrir con cualquier navegador web.

project1.lpi

Es un documento XML

Este archivo project1.lpi es el archivo de configuración central del proyecto, dividido en tres bloques principales:

1. ProjectOptions Ajustes básicos del proyecto

  • <Version Value="12"/>: Versión 12 del formato de archivo de configuración
  • <PathDelim Value="\\"/>: Barra invertida separadora de rutas en Windows

General Ajustes generales del proyecto

  • SessionStorage=InProjectDir: Los registros de edición del IDE se guardan en la carpeta del proyecto
  • Title=project1: Nombre visible del proyecto
  • Scaled=True: La ventana se escala automáticamente para pantallas de alta resolución
  • ResourceType=res: Usa archivos res para almacenar iconos
  • UseXPManifest=True: Habilita los estilos visuales modernos de Windows
    • DpiAware=True: El programa soporta pantallas de alto DPI para evitar interfaces borrosas
  • Icon=0: Usa el icono ico por defecto del proyecto

BuildModes

Solo existe el perfil de compilación por defecto Default (aquí se distinguen los modos Debug y Release)

RequiredPackages

Dependencia de la librería de componentes gráficos LCL (imprescindible para programas GUI)

Units Lista de archivos incluidos en el proyecto

  1. project1.lpr: Punto de entrada principal del programa
  2. unit1.pas: Unidad de formulario vinculada a la clase Form1 correspondiente a la ventana visual

2. CompilerOptions Parámetros del compilador

  • Nombre del ejecutable de salida: project1
  • Carpeta de archivos intermedios de compilación: lib\CPU-sistema (ej: lib\x86_64-win64)
  • <GraphicApplication=True>: Marca el programa como aplicación gráfica Windows, no consola

3. Debugging Configuración de depuración

Ignora excepciones específicas sin interrumpir la depuración: EAbort, errores al abrir archivos, errores de código de herramientas, etc.

project1.lpr

También usa sintaxis de Free Pascal (Object Pascal)

// Define este archivo como punto de entrada principal del proyecto
program project1;

// Directivas de compilación: habilita sintaxis OOP y soporte cadenas largas
{$mode objfpc}{$H+}

uses
  // Importa librería de hilos para sistemas Unix (Linux/macOS)
  {$IFDEF UNIX}
  cthreads,
  {$ENDIF}
  // Importa librería de hilos para sistemas Amiga
  {$IFDEF HASAMIGA}
  athreads,
  {$ENDIF}
  Interfaces, // Capa gráfica multiplataforma base de LCL
  Forms,     // Marco base de formularios
  Unit1      // Unidad de ventana personalizada principal
  { you can add units after this }; // Aquí puedes añadir nuevas unidades

{$R *.res} // Carga el archivo de recursos del proyecto (iconos, información de versión)

begin
  RequireDerivedFormResource:=True; // Habilita la lectura de archivos de disposición lfm
  Application.Scaled:=True;        // Escala automática de interfaz para pantallas de alto DPI
  {$PUSH}{$WARN 5044 OFF}          // Desactiva temporalmente la advertencia de compilación 5044
  Application.MainFormOnTaskbar:=True; // Muestra icono independiente de la ventana principal en la barra de tareas
  {$POP}                           // Restaura la configuración original de advertencias

  Application.Initialize;           // Inicializa el entorno de ejecución de la app GUI
  Application.CreateForm(TForm1, Form1); // Crea la instancia de la ventana principal Form1
  Application.Run;                 // Inicia el bucle de mensajes de ventana a la espera de interacciones
end.Lenguaje del código: PHP (php)

Diferenciación:

  • Archivos .pas normales: unidades (formularios o módulos funcionales)
  • .lpr: Archivo Pascal principal del proyecto, punto de arranque del programa

project1.lps

Lazarus Project Session (archivo de sesión del proyecto), no es código Pascal

Es un registro de configuración exclusivo del IDE que guarda el estado de edición de la última vez que abriste el proyecto

Ejemplos: archivos de código/formulario abiertos, posición y tamaño de cada ventana, disposiciones divididas, posición del cursor, puntos de interrupción, historial de búsquedas, etc.

.lpr/.pas: Código fuente, obligatorios para compilar;

.lps: Archivo temporal solo para el IDE, no tiene efecto en la compilación.

project1.res

Archivo binario de recursos compilados

Se genera automáticamente a partir de project1.ico, información de versión del programa y manifiesto de interfaz de Windows durante la compilación

  • Almacena el icono del software que se visualiza al hacer clic derecho en el ejecutable, en la barra de tareas y en accesos directos de escritorio tras compilar
  • Guarda configuraciones de recursos del sistema como alto DPI y estilos visuales XP de Windows

Vinculación de compilación La directiva de código {$R *.res} integra este archivo de recursos dentro del exe final Características

  • Se puede borrar sin problemas; se regenera automáticamente al volver a compilar el proyecto;
  • Solo es necesario para programas GUI de Windows; las aplicaciones de consola no generan este archivo.

Al abrir el IDE veremos este panel

Este es nuestro diseñador visual de ventanas, puedes arrastrar todo tipo de controles sobre él. Su funcionamiento es básicamente igual a VB, WinForm, WPF, Delphi, Qt y otras herramientas de desarrollo por formularios.

Por ejemplo, arrastra un botón sobre el formulario

Vuelve a ejecutar el proyecto.

Aparecerá un botón en la ventana.

En la ventana Messages inferior puedes ver la carpeta donde se genera el exe

Dentro de la carpeta del proyecto aparecerá un archivo exe nuevo

Este exe es nuestro programa terminado, puedes enviarlo directamente a otros equipos para ejecutarlo, se trata de un ejecutable compilado sin dependencias externas.

Se ejecuta extremadamente rápido…

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *