Hi ,
so hat ne Weile gedauert , bis ich die Infos von wp_xyz und af0815 verstanden habe.
Ich weis nicht , wie ich das letzte Jahrzehnt ohne diese Möglichkeiten überlebt habe, aber 'wat der bur net kennt dat fret er net' .
Hier nun mal ne Anleitung (für Dummies) , wie ich zum Ziel gekommen bin .
Aufgabe ist :
a) Die Anwendung soll es als Voll- und Demo-Version geben.
b) Die Kompilierung soll sowohl per Lazarus-IDE , als auch ohne IDE durch ein externes Steuerungsprogramm möglich sein .
1) In Lazarus eine neue Anwendung erzeugen .
2) Wir klicken nun den Button für 'Einstellmodus ändern' siehe
Bild1 .
Es öffnet sich das Fenster 'Einstellungen für project:project1'
3) Dort ganz oben rechts auf den Button (mit den drei Punkten) drücken , siehe
Bild2 .
Es öffnet sich nun der Editor für den Einstellmodus .
Hier dann zwei mal auf den Button '+' klicken , um zwei neue Einträge zu bekommen .
Die Texte für die neuen Zeilen mit 'Voll' und 'Demo' beschriften .
Dann auf die Zeile 'default' gehen und einmal den Button '-' clicken um diese Zeile zu löschen.
Fertige Eingaben siehe
Bild3 .
Mit Button 'OK' verlassen.
4) Im Fenster 'Einstellungen für project:project1' wählen wir nun den Menüpunkt 'Benutzerdefinierte Einstellungen' und rechts oben in der Combobox einen unsere beiden neuen Modi aus (Voll oder Demo) .
Dann tragen wir in das Textfeld unter 'Benutzerdefinierte Einstellungen' einmal '-dVoll' oder '-dDemo' ein .
Siehe
Bild4 und
Bild5.
Dann auf OK , Fenster 'Einstellungen für project:project1' schließen.
Projekt komplett speichern.
Test in der IDE:
Im Quelltext der HauptUnit tragen wir nun die Defines für die Voll- Und Demo-Version ein .
Code: Alles auswählen
unit Unit1;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs;
type
{ TForm1 }
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
private
public
end;
// Hier Defines für Voll- und Demo-Version zum Testen eintragen.
// Beim Programmstart soll dann in der Titelzeile 'Demo-Version' oder 'Voll-Version' angezeit werden.
{$ifdef Demo}
const Titel='Demo-Version';
{$endif}
{$ifdef Voll}
const Titel='Voll-Version';
{$endif}
var
Form1: TForm1;
implementation
{$R *.lfm}
{ TForm1 }
procedure TForm1.FormCreate(Sender: TObject);
begin
caption:=titel; // Titel je nach Define
end;
end.
5) Zum probieren können wir nun die Voll- oder Demoversion per Menü-Popup auswählen (Pfeil neben dem Zahnradbutton 'Einstellmodus ändern' .
Siehe
Bild6.
Es sollte dann im Quelltext
const Titel='Demo-Version';
oder
const Titel='Voll-Version';
scharf geschaltet werden .
Und die fertige Exe sollte dann in der Titel-Caption auch 'Voll-Version' oder 'Demo-Version' ausgeben.
Fersteuerungs-Programm:
Wenn man sich ein Konfigurations-Tool bauen will , kann man die Application 'hier project1' auch per Lazbuild kompilieren.
Benutze dazu hier TProcess , das geht ja auch unter LINUX.
Im ZIP das Programm Fernsteuerungs_Programm.lpi .
Code: Alles auswählen
unit unit_fernsteuerung;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls,
process;
type
{ TForm1 }
TForm1 = class(TForm)
Button1: TButton;
RadioButton1: TRadioButton;
RadioButton2: TRadioButton;
procedure Button1Click(Sender: TObject);
private
public
end;
var
Form1: TForm1;
implementation
{$R *.lfm}
{ TForm1 }
// Project kompilieren mit lazbuild
procedure TForm1.Button1Click(Sender: TObject);
var prozess:tprocess;
voll_demo:string;
begin
if radiobutton1.Checked
then voll_demo:='voll'
else voll_demo:='demo';
// Das Project neu copilieren
// Programmaufruf
prozess:=tprocess.create(nil);
// prozess.CommandLine:='C:\lazarus\lazbuild -B --build-mode='+voll_demo+' project.lpr';
prozess.Executable:='C:\lazarus\lazbuild.exe'; // Pfad zu Lazbuild
prozess.Parameters.Add('-B');
prozess.Parameters.Add('--build-mode='+voll_demo); // Einstellmodus 'voll' oder 'demo'
prozess.Parameters.Add('project.lpr');
prozess.Execute;
prozess.free;
end;
end.
Kompilieren mit Batch-Datei:
Siehe die beiden Bat-Dateien im ZIP im Anhang :
Entweder:
Für die Vollversion mit
start C:\lazarus\lazbuild -B --build-mode=voll project.lpr
oder
start C:\lazarus\lazbuild -B --build-mode=demo project.lpr
Sorry , mir ist es leider nicht gelungen , die Bilder in den Text einzufügen , hab es ne halbe Stunde ohne Erfolg probiert.Bilder sind im ZIP enthalten.Gruß
Frank