Lazarus/Technisches: Unterschied zwischen den Versionen

Aus ZUM-Unterrichten
main>Peterdauscher
K (Matthias Scharwies verschob die Seite Lazarus-Buch/Technisches nach Lazarus/Technisches: kürzere URL)
 
(27 dazwischenliegende Versionen von 3 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
== Installation ==
== Installation ==


== Ein erstes eigenes Programm ==
Lazarus gibt es für die unterschiedlichsten Plattformen/Betriebssysteme. Eine detaillierte Beschreibung der Installationsmöglichkeiten findet sich hier:
 
http://wiki.freepascal.org/Installing_Lazarus/de
 
Für Benutzer von Microsoft-Windows-Versionen empfiehlt sich im Allgemeinen, wie [http://wiki.freepascal.org/Installing_Lazarus/de#Installation_von_Lazarus_unter_Windows  hier] beschrieben eine Installationsdatei herunterzuladen und auszuführen. Eine Installation von den Quellen ist sehr viel aufwändiger und eher etwas für Spezialisten. Und für die meisten Programmierer auch zunächst nicht sinnvoll.
 
== Ein erstes eigenes Lazarus-Projekt ==
 
=== Vorbereitungen für ein neues Lazarus ===
 
Bevor wir mit dem eigentlichen Programmieren loslegen, sollten wir dafür sorgen, dass Lazarus unsere nun folgenden Versuche ordentlich verwaltet. Das hier beschriebene Vorgehen empfiehlt sich auch in Zukunft bei jedem neuen Projekt.
 
* Im Menü <tt>Projekt | Neues Projekt ... </tt> wählen
* Im nun auftauchenden Fenster den Punkt <tt>Anwendung</tt> auswählen und mit <tt>OK</tt> bestätigen.
* Das Projekt gleich abspeichern, dafür zunächst <tt>Projekt | Projekt speichern unter ... </tt> wählen.
* Den Ordner wählen, in dem man seine Lazarus-Projekte abspeichern möchte.<br><small>Auf manchen Netzwerk-Systemen in Schulen kann es zu Schwierigkeiten kommen, wenn man etwa in einem Ordner unter "Eigene Dateien" speichern will. Eine typische Fehlermeldung ist dann <br><tt>Kann Verzeichnis "" nicht erzeugen.</tt><br> Grund hierfür sind die Kennungen von Netzwerklaufwerken. Häufig sind die Eigenen Dateien aber auch direkt über einen gesonderten Laufwerksbuchstaben, etwa <tt>G:</tt> erreichbar. Sollte es Probleme geben, nochmal mit dem Informatiklehrer Rücksprache halten.</small>
 
* In diesem Ordner einen Unterordner mit dem Namen des Projekts erstellen, z.B. <tt>testlazarus</tt>. Zumindest bei Windows-Rechnern kann man das direkt mit einem rechten Mausklick im Speichern-Dialogfeld erreichen.<br><small>'''Wichtig:''' Als Dateinamen sollte man unter keinen Umständen Bezeichnungen nehmen, die in Lazarus Befehle oder andere Bezeichner darstellen. Besonders sicher ist es, wenn man nicht-englische, also z.B. deutsche Namen verwendet. Umlaute jedoch sollte man besser vermeiden.</small>
* In diesen Unterordner wechseln.
* Die Projektdatei unter dem gleichen Namen wie der Ordner speichern (es kann natürlich auch ein anderer sein, aber das führt zu unnötiger Verwirrung), also im Beispiel wieder <tt>testlazarus</tt>.
* Danach fragt der Computer gleich noch einmal, wo er etwas speichern soll. Das ist kein Fehler: zu einem Projekt können eine oder mehrere sogenannte Pascal-Units gehören, und die wollen extra gespeichert werden. Wir speichern sie im gleichen Ordner wie die Projektdatei. Ärgerlicherweise kann man nicht den gleichen Dateinamen verwenden. Wir verwenden einen Trick und hängen hinter den Projektnamen einfach noch ein <tt>_main</tt> an, im Beispiel also <tt>testlazarus_main</tt>.
 
Jetzt hat alles seinen geordneten Platz auf der Festplatte, oder sollte es zumindest haben. Bevor man jetzt zu programmieren anfängt, empfiehlt es sich zu testen, ob Lazarus dieses (noch leere Projekt) kompilieren (d.h. in die Computer-eigene Maschinensprache übersetzen) kann. Wenn das schon nicht funktioniert, muss man erst einmal schauen, woran es liegt (z.B. am oben erwähnten Netzwerk-Laufwerk-Problem).
 
* Wir wählen im Menü <tt>Start | Start</tt> oder drücken die Taste <tt>F9</tt>, was auf Dauer natürlich etwas praktischer ist.
* Lazarus übersetzt das (noch leere) Projekt. Am Ende sollte im Fenster "Nachrichten" etwa stehen <tt>Projekt "testlazarus" erfolgreich kompiliert</tt>.
* Außerdem sollte auf dem System ein neues Fenster aufgegangen sein, über dem <tt>Form1</tt> steht, das aber in der Liste der laufenden Programme (bei Windows meist am unteren Bildschirmrand) wie das Projekt heißt, also z.B. <tt>testlazarus</tt>.
 
Das Fenster ist zwar leer, aber man kann es mit der Maus größer und kleiner ziehen, auf dem Bildschirm verschieben, usw. Und man kann es schließen, und das sollte man immer tun, um am Programm weiter zu arbeiten.
 
=== Erste Programmiertätigkeiten ===


Wir ziehen eine TButton-Komponente (ein Schaltknopf mit der Beschriftung <tt> OK </tt>) auf das Formular. Diese Komponente heißt dann automatisch <tt>Button1</tt>.  
Wir ziehen eine TButton-Komponente (ein Schaltknopf mit der Beschriftung <tt> OK </tt>) auf das Formular. Diese Komponente heißt dann automatisch <tt>Button1</tt>.  
Im Objektinspektor kann man die Beschriftung dieses Knopfes ändern. Man ändert den Inhalt im Feld <tt>Caption</tt> . Nach Beendigung durch die Eingabetaste ändert sich dann auch die Beschriftung des Buttons.  
Im Objektinspektor kann man die Beschriftung dieses Knopfes ändern. Man ändert den Inhalt im Feld <tt>Caption</tt> . Nach Beendigung durch die Eingabetaste ändert sich dann auch die Beschriftung des Buttons.  
Durch Druck der Taste <tt>F9</tt> wird das Programm in eine ausführbare Datei übersetzt und diese automatisch gestartet. Man sieht den Knopf auf der Oberfläche kann ihn mit der Maus drücken. Aber es tut sich noch nichts, wenn man auf den Knopf drückt. Man kann das Fenster wie jede normale Windows-Anwendung mit den Kreuzchen am oberen rechten Rand schließen.
Durch Druck der Taste <tt>F9</tt> wird dieses (nun nicht mehr leere) Projekt wieder in eine ausführbare Datei übersetzt und diese automatisch gestartet. Man sieht den Knopf auf der Oberfläche kann ihn mit der Maus drücken. Aber es tut sich noch nichts, wenn man auf den Knopf drückt.  
 
Nun möchten wir natürlich auch, dass unser Programm etwas tut – zunächst etwas ganz einfaches: Die Beschriftung des Knopfes soll sich ändern, wenn man ihn anklickt.
Nun möchten wir natürlich auch, dass unser Programm etwas tut – zunächst etwas ganz einfaches: Die Beschriftung des Knopfes soll sich ändern, wenn man ihn anklickt.


Zeile 12: Zeile 41:




{{kasten_blau|<source  line highlight="29" lang="pascal">
<source  line highlight="29" lang="pascal">
unit Unit1;  
unit Unit1;  
{$mode objfpc}{$H+}
{$mode objfpc}{$H+}
Zeile 48: Zeile 77:


end.         
end.         
</source>}}
</source>


Die Anweisung  
Die Anweisung  
Zeile 63: Zeile 92:
Alles, was hinter // steht, ist ein Kommentar, der für den Computer „unsichtbar“ ist und nur Anmerkungen für den Programmierer darstellt.
Alles, was hinter // steht, ist ein Kommentar, der für den Computer „unsichtbar“ ist und nur Anmerkungen für den Programmierer darstellt.


Um den Programmtext zu speichern, wählt man <tt>Datei | Speichern unter ...</tt>
Natürlich sollte man nicht vergessen, das Projekt auch zu speichern. Am Besten geht das, indem man <tt>Datei | Alles speichern </tt> wählt. Das entsprechende graphische Symbol (mehrere Disketten hintereinander) gibt es in der Regel auch auf der Hauptsymbolleiste von Lazarus.
 
Nennen wir den Programmtext <tt>button_main.pas</tt> . Die Endung <tt>.pas</tt> weist auf die Programmiersprache Pascal hin, die nach dem französischen Mathematiker Blaise Pascal benannt ist.
Danach fragt Lazarus noch nach, wie das zugehörige Projekt heißen soll. Wir nennen es <tt>button.lpi</tt>.
Der Grund für diese doppelte Speicherung ist, dass ein Lazarus-Projekt mehrere Programmtexte (so genannte units)  haben kann, was allerdings erst bei komplizierteren Programm nützlich ist.
 
 
Der Programmtext ändert sich beim Speichern. Die erste Zeile heißt jetzt nicht mehr


<source lang="pascal">
== Verschiedene Datei-Typen in Lazarus ==
unit Unit1;
</source>
sondern
<source lang="pascal">
unit Button_main;
</source>


Öffnet man einen Ordner, in dem ein Lazarus-Projekt gespeichert ist, so finden sich darin häufig eine Reihe von Dateien mit unterschiedlichen Endungen. Die (am Anfang) wichtigsten davon sind:


{| class ="wikitable toptextcells"
! Dateityp
! Inhalt
|-
| .lpi || '''L'''azarus-'''P'''rojekt-'''I'''nformation <br> Hier sind die wichtigsten Projekteinstellungen (im XML-Format) gespeichert.
|-
| .lpr || '''L'''azarus-(Haupt-)'''Pr'''ogramm. <br> Das Hauptprogramm wird vom System automatisch erstellt und eigentlich vom Programmierer nicht per Hand verändert.
|-
| .pas || '''Pascal'''-Unit. <br> Die Programmierarbeit wird in den "Untereinheiten" (Units) geleistet.
|-
| .lfm || '''L'''azarus '''F'''or'''m'''ular-Datei <br> Informationen über das Aussehen von Fenstern, Formular genannt. <br>Zu jeder <tt>.lfm-Datei</tt> gibt es typischerweise auch eine <tt>.pas</tt>-Datei, die die Funktion des Formulars steuert.
|-
| .ppu, <br>.o|| '''P'''räcompilierte '''P'''ascal-'''U'''nit und '''O'''bjekt-Datei.<br> Der Compiler erzeugt für jede (korrekte) Pascal-Unit bereits eine Übersetzung in Maschinensprache.
|-
| .exe || Die ausführbare Datei (engl. '''Exe'''cutable). Diese ist auch ohne das Vorhandensein von Lazarus auf anderen Rechnern lauffähig.
|-
|}


{{Aufgabe|
# Ändere das Programm so ab, dass beim Drücken des Knopfes der Button die Beschriftung heißt: „Das kitzelt!“ und führe es aus!
# Lege einen neuen Ordner "kitzel" an. Speichere dort die geänderte Unit unter einem anderen Dateinamen ab: <br />Datei <nowiki>|</nowiki> Speichern unter ...  (kitzel_main.pas).<br/> Dann speichere das gesamte Projekt in dem neuen Ordner "kitzel" ab: Projekt <nowiki>|</nowiki> Projekt speichern unter ...    (kitzel.lpi )<br> <small>Eventuell fragt Lazarus nach, ob die alte Datei gelöscht werden soll. Wenn man die vorhergehende Version aus Sicherheitsgründen behalten will, empfiehlt es sich, hier mit "nein" zu antworten. Dagegen können Sie auf die Frage, ob die Datei aus dem Unit-Pfad entfernt werden soll, ruhig mit "Ja" antworten.</small>
# Füge weitere Buttons hinzu, die beim Drücken ebenfalls ihre Beschriftung ändern.
# Ändere das Programm aus Aufg. 3 so ab, dass das Drücken der Buttons, die Beschriftung anderer Buttons ändern.}}




{{Kasten_blau|[http://wiki.zum.de/Benutzer:Peterdauscher/Lazarus-Buch Zur Hauptseite]
{{Lazarus-Buch}}
}}

Aktuelle Version vom 10. August 2019, 06:13 Uhr

Installation

Lazarus gibt es für die unterschiedlichsten Plattformen/Betriebssysteme. Eine detaillierte Beschreibung der Installationsmöglichkeiten findet sich hier:

http://wiki.freepascal.org/Installing_Lazarus/de

Für Benutzer von Microsoft-Windows-Versionen empfiehlt sich im Allgemeinen, wie hier beschrieben eine Installationsdatei herunterzuladen und auszuführen. Eine Installation von den Quellen ist sehr viel aufwändiger und eher etwas für Spezialisten. Und für die meisten Programmierer auch zunächst nicht sinnvoll.

Ein erstes eigenes Lazarus-Projekt

Vorbereitungen für ein neues Lazarus

Bevor wir mit dem eigentlichen Programmieren loslegen, sollten wir dafür sorgen, dass Lazarus unsere nun folgenden Versuche ordentlich verwaltet. Das hier beschriebene Vorgehen empfiehlt sich auch in Zukunft bei jedem neuen Projekt.

  • Im Menü Projekt | Neues Projekt ... wählen
  • Im nun auftauchenden Fenster den Punkt Anwendung auswählen und mit OK bestätigen.
  • Das Projekt gleich abspeichern, dafür zunächst Projekt | Projekt speichern unter ... wählen.
  • Den Ordner wählen, in dem man seine Lazarus-Projekte abspeichern möchte.
    Auf manchen Netzwerk-Systemen in Schulen kann es zu Schwierigkeiten kommen, wenn man etwa in einem Ordner unter "Eigene Dateien" speichern will. Eine typische Fehlermeldung ist dann
    Kann Verzeichnis "" nicht erzeugen.
    Grund hierfür sind die Kennungen von Netzwerklaufwerken. Häufig sind die Eigenen Dateien aber auch direkt über einen gesonderten Laufwerksbuchstaben, etwa G: erreichbar. Sollte es Probleme geben, nochmal mit dem Informatiklehrer Rücksprache halten.
  • In diesem Ordner einen Unterordner mit dem Namen des Projekts erstellen, z.B. testlazarus. Zumindest bei Windows-Rechnern kann man das direkt mit einem rechten Mausklick im Speichern-Dialogfeld erreichen.
    Wichtig: Als Dateinamen sollte man unter keinen Umständen Bezeichnungen nehmen, die in Lazarus Befehle oder andere Bezeichner darstellen. Besonders sicher ist es, wenn man nicht-englische, also z.B. deutsche Namen verwendet. Umlaute jedoch sollte man besser vermeiden.
  • In diesen Unterordner wechseln.
  • Die Projektdatei unter dem gleichen Namen wie der Ordner speichern (es kann natürlich auch ein anderer sein, aber das führt zu unnötiger Verwirrung), also im Beispiel wieder testlazarus.
  • Danach fragt der Computer gleich noch einmal, wo er etwas speichern soll. Das ist kein Fehler: zu einem Projekt können eine oder mehrere sogenannte Pascal-Units gehören, und die wollen extra gespeichert werden. Wir speichern sie im gleichen Ordner wie die Projektdatei. Ärgerlicherweise kann man nicht den gleichen Dateinamen verwenden. Wir verwenden einen Trick und hängen hinter den Projektnamen einfach noch ein _main an, im Beispiel also testlazarus_main.

Jetzt hat alles seinen geordneten Platz auf der Festplatte, oder sollte es zumindest haben. Bevor man jetzt zu programmieren anfängt, empfiehlt es sich zu testen, ob Lazarus dieses (noch leere Projekt) kompilieren (d.h. in die Computer-eigene Maschinensprache übersetzen) kann. Wenn das schon nicht funktioniert, muss man erst einmal schauen, woran es liegt (z.B. am oben erwähnten Netzwerk-Laufwerk-Problem).

  • Wir wählen im Menü Start | Start oder drücken die Taste F9, was auf Dauer natürlich etwas praktischer ist.
  • Lazarus übersetzt das (noch leere) Projekt. Am Ende sollte im Fenster "Nachrichten" etwa stehen Projekt "testlazarus" erfolgreich kompiliert.
  • Außerdem sollte auf dem System ein neues Fenster aufgegangen sein, über dem Form1 steht, das aber in der Liste der laufenden Programme (bei Windows meist am unteren Bildschirmrand) wie das Projekt heißt, also z.B. testlazarus.

Das Fenster ist zwar leer, aber man kann es mit der Maus größer und kleiner ziehen, auf dem Bildschirm verschieben, usw. Und man kann es schließen, und das sollte man immer tun, um am Programm weiter zu arbeiten.

Erste Programmiertätigkeiten

Wir ziehen eine TButton-Komponente (ein Schaltknopf mit der Beschriftung OK ) auf das Formular. Diese Komponente heißt dann automatisch Button1. Im Objektinspektor kann man die Beschriftung dieses Knopfes ändern. Man ändert den Inhalt im Feld Caption . Nach Beendigung durch die Eingabetaste ändert sich dann auch die Beschriftung des Buttons. Durch Druck der Taste F9 wird dieses (nun nicht mehr leere) Projekt wieder in eine ausführbare Datei übersetzt und diese automatisch gestartet. Man sieht den Knopf auf der Oberfläche kann ihn mit der Maus drücken. Aber es tut sich noch nichts, wenn man auf den Knopf drückt. Nun möchten wir natürlich auch, dass unser Programm etwas tut – zunächst etwas ganz einfaches: Die Beschriftung des Knopfes soll sich ändern, wenn man ihn anklickt.

Um dies zu programmieren, klickt man doppelt auf den Button. Lazarus fügt selbstständig einen Programmbereich (eine procedure) ein, in der das Verhalten beim Klicken des Buttons festgelegt wird. Wirklich hineinschreiben muss man nur die gelb unterlegte Zeile. Diese sorgt dafür, dass sich die Beschriftung ändert und nun lautet "Du hast mich gedrückt".


unit Unit1; 
{$mode objfpc}{$H+}

interface

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

type
  { TForm1 }

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

var
  Form1: TForm1; 

implementation
{ TForm1 }

procedure TForm1.Button1Click(Sender: TObject);
begin
  Button1.Caption:='Du hast mich gedrückt.'; // Ändere Beschriftung 
end;

initialization
  {$I unit1.lrs}

end.

Die Anweisung

Button1.Caption:='Du hast mich gedrückt';

bedeutet folgendes:

Der Knopf Button1 hat die Eigenschaft Caption. Diese Eigenschaft wird jetzt geändert. Dies wird dem Computer über die Zeichen := angedeutet, die einen Pfeil nach links (←) andeuten soll.

Der Text „Du hast mich gedrückt.“ besteht aus einer Folge von Buchstaben. Solche Folgen von Buchstaben, werden als String bezeichnet und durch einfache Anführungszeichen markiert.

Alles, was hinter // steht, ist ein Kommentar, der für den Computer „unsichtbar“ ist und nur Anmerkungen für den Programmierer darstellt.

Natürlich sollte man nicht vergessen, das Projekt auch zu speichern. Am Besten geht das, indem man Datei | Alles speichern wählt. Das entsprechende graphische Symbol (mehrere Disketten hintereinander) gibt es in der Regel auch auf der Hauptsymbolleiste von Lazarus.

Verschiedene Datei-Typen in Lazarus

Öffnet man einen Ordner, in dem ein Lazarus-Projekt gespeichert ist, so finden sich darin häufig eine Reihe von Dateien mit unterschiedlichen Endungen. Die (am Anfang) wichtigsten davon sind:

Dateityp Inhalt
.lpi Lazarus-Projekt-Information
Hier sind die wichtigsten Projekteinstellungen (im XML-Format) gespeichert.
.lpr Lazarus-(Haupt-)Programm.
Das Hauptprogramm wird vom System automatisch erstellt und eigentlich vom Programmierer nicht per Hand verändert.
.pas Pascal-Unit.
Die Programmierarbeit wird in den "Untereinheiten" (Units) geleistet.
.lfm Lazarus Formular-Datei
Informationen über das Aussehen von Fenstern, Formular genannt.
Zu jeder .lfm-Datei gibt es typischerweise auch eine .pas-Datei, die die Funktion des Formulars steuert.
.ppu,
.o
Präcompilierte Pascal-Unit und Objekt-Datei.
Der Compiler erzeugt für jede (korrekte) Pascal-Unit bereits eine Übersetzung in Maschinensprache.
.exe Die ausführbare Datei (engl. Executable). Diese ist auch ohne das Vorhandensein von Lazarus auf anderen Rechnern lauffähig.

Aufgabe
  1. Ändere das Programm so ab, dass beim Drücken des Knopfes der Button die Beschriftung heißt: „Das kitzelt!“ und führe es aus!
  2. Lege einen neuen Ordner "kitzel" an. Speichere dort die geänderte Unit unter einem anderen Dateinamen ab:
    Datei | Speichern unter ... (kitzel_main.pas).
    Dann speichere das gesamte Projekt in dem neuen Ordner "kitzel" ab: Projekt | Projekt speichern unter ... (kitzel.lpi )
    Eventuell fragt Lazarus nach, ob die alte Datei gelöscht werden soll. Wenn man die vorhergehende Version aus Sicherheitsgründen behalten will, empfiehlt es sich, hier mit "nein" zu antworten. Dagegen können Sie auf die Frage, ob die Datei aus dem Unit-Pfad entfernt werden soll, ruhig mit "Ja" antworten.
  3. Füge weitere Buttons hinzu, die beim Drücken ebenfalls ihre Beschriftung ändern.
  4. Ändere das Programm aus Aufg. 3 so ab, dass das Drücken der Buttons, die Beschriftung anderer Buttons ändern.