Lazarus/Die Unit LazIOStuff: Unterschied zwischen den Versionen

Aus ZUM-Unterrichten
main>Peterdauscher
main>Peterdauscher
Keine Bearbeitungszusammenfassung
Zeile 25: Zeile 25:
|}
|}


Das folgende Beispiel  
Das folgende Beispiel demonstriert die verschiedenen Befehle der Unit LazIOStuff und benötigt die Komponenten Button1, Edit1 und Memo1.
 
{{kasten_blau|<source  line highlight="31-41" lang="pascal">
unit lazio_testumgebung;
{$mode objfpc}{$H+}
interface
 
uses
  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls,
  ExtCtrls,LazIOStuff;
 
type
  { TForm1 }
 
  TForm1 = class(TForm)
    Button1: TButton;
    Edit1: TEdit;
    Memo1: TMemo;
    procedure Button1Click(Sender: TObject);
  private
    { private declarations }
  public
    { public declarations }
  end;
 
var
  Form1: TForm1;
 
implementation
 
{$R *.lfm}
{ TForm1 }
 
procedure TForm1.Button1Click(Sender: TObject);
var zahl : integer;
begin
ReadFrom(Edit1,zahl);
Clear(Memo1);
WriteLnTo(Memo1,'Es geht los!');
WriteLnTo(Memo1,zahl);
WriteLnTo(Memo1,zahl,10);
WriteLnTo(Memo1,' wurde eingegeben. Und die Hälfte davon ist:');
WriteLnTo(Memo1,zahl/2,20,5);
end;
 
end.
</source>}}
 
Die Ausgabe in dem Memo-Feld nach Eingabe der Zahl "7" in der Komponente Edit1 ist:
{{kasten_blau|<source lang="pascal">Es geht los!
7
        7
wurde eingegeben. Und die Hälfte davon ist:
            3,50000
</source>}}
 
 


{{Lazarus-Buch}}
{{Lazarus-Buch}}

Version vom 14. Januar 2013, 20:14 Uhr


Wozu die Unit LazIOStuff

LazIOStuff ist eine Lazarus-Unit, die eine Reihe von Befehlen zur vereinfachten Ein- und Ausgabe zur Verfügung stellt. Man kann sich fragen, weshalb man überhaupt eine solche Unit schreibt, wo doch Lazarus von sich aus doch schon jede Menge Möglichkeiten zur Ein- und Ausgabe von Werten hat. Und weshalb man innerhalb eines Online-Lehrbuchs diese Unit benutzt.

Der Hauptgrund besteht darin, dass es beim Lernen einer Programmiersprache angenehm ist, wenn man sich auf die wesentlichen Dinge konzentrieren kann. Vereinfachte Befehle für Ein- und Ausgabe sollen genau dabei helfen. So haben wir z.B. in den vergangenen Kapiteln gesehen, dass wir immer wieder den Inhalt von Edit-Feldern zu Integer- oder Real-Zahlen übersetzen mussten. In den folgenden Kapiteln wollen wir Ergebnisse in Memo-Felder ausgeben, das sind Komponenten mit mehreren Textzeilen. Das alles würde auch relativ leicht in Lazarus direkt funktionieren, jedoch würde der Programmcode etwas unübersichtlich, und das kann dem Lernen dann doch abträglich sein.


Die von LazIOStuff bereitgestellten Befehle

Befehl Bedeutung
WriteTo(Komponente, Wert, [Gesamtanzahl Zeichen, Nachkommastellen]) Schreibt einen Wert (vom Typ String, Integer oder Double) in eine Komponente.
Das kann entweder eine Edit-Komponente oder eine mehrzeilige Memo-Komponente sein.
Bei Edit-Komponenten wird der darin befindliche Inhalt einfach ersetzt, bei Memo-Komponenten jedoch hinter den bisherigen Inhalt angehängt.
Bei Integer-Werten kann zusätzlich angegeben werden, wie viele Zeichen die Ausgabe insgesamt haben soll (rechtsbündige Zahlen).
Bei Double-Zahlen kann man zusätzlich dazu wiederum noch einstellen, mit wie vielen Nachkommastellen die Zahl angezeigt wird.
WriteLnTo(Komponente, Wert, [Gesamtanzahl Zeichen, Nachkommastellen]) Funktioniert ähnlich wie WriteTo, mit einem wesentlichen Unterschied:
Diese Funktion bezieht sich ausschließlich auf die mehrzeiligen Memo-Komponenten.
Nach der Ausgabe verursacht sie gezielt einen Zeilenumbruch.
WriteLnTo kann man auch ganz ohne Klammern verwenden; dann erzeugt es einfach nur einen Zeilenumbruch.
ReadFrom(Edit-Komponente, Wert) Liest aus einer Edit-Komponente einen Wert (entsprechend des Datentyps) aus. Möglich sind Zeichenketten (Strings), Integer- und Double-Werte.
Clear(Komponente) Löscht den Inhalt der entsprechenden Komponente.

Das folgende Beispiel demonstriert die verschiedenen Befehle der Unit LazIOStuff und benötigt die Komponenten Button1, Edit1 und Memo1.

Vorlage:Kasten blau

Die Ausgabe in dem Memo-Feld nach Eingabe der Zahl "7" in der Komponente Edit1 ist: Vorlage:Kasten blau