Upload
danghuong
View
219
Download
1
Embed Size (px)
Citation preview
Arbeitsblatt Übungen in Delphi Informatik
Klasse: 11-12 Datum: 1. Juni 2007
Delphi_1.doc Seite 1 von8
1. Es gibt verschiedene Objekte:
1.1. TLabel Das erste Label, das man auf dem Formular platziert erhält automa-tisch den Namen ‚label1’
Eigenschaften
Caption (typ: string)
Ändern der Anzeige eines Labels : label1.caption:= ' neuer Text'
Color (typ: integer)
Beispiele: clred, clblue oder 255 für rot
Ändern der Farbe mit label1.color:=clblue;
1.2. Tedit Das erste Edit-Feld erhält automatisch den Namen ‚edit1’
Eigenschaften
Text
Jede Eingabe erfolgt durch Text, auch Zahlen werden als Text (Zeichenkette) interpre-tiert.
Ändern der Anzeige durch Schreiben in das Feld oder durch eine Wertzuweisung
Edit1.text:= 'neuer Text'
Font
Beim Anklicken der Eigenschaft Font im Objektinspektor öffnet sich das bekannte Font-Menü.
1.3. Tbutton
Der erste Button erhält automatisch den Namen ‚Button1’. Da Nach Doppelklick auf den Button eine neue Prozedur erstellt wird, sollte man den Namen des Buttons sofort ändern. Die zuordnung zu seinen Aktionen wird leichter lesbar.
Name
Im Objektinspektor die Eigenschaft ‚Name’ suchen und ändern, sollte einen Bezug zu den ausglösten Aktionen stehen.
Caption
Ist die Beschriftung des Buttons. Ändern der Anzeige eines Buttons: button1.caption:= ' neuer Text'
1.4. TListbox
Ist vergleichbar mit einem TEdit.
Eigenschaften
Items
Im Objektinspektor kann man Listenelemente eintragen. Im Programm sind folgende Aktionen möglich: Listbox1.items.add('Text’); Hängt an die vorhandene Liste ein neues Element (Item) an.
Arbeitsblatt Übungen in Delphi Informatik
Klasse: 11-12 Datum: 1. Juni 2007
Delphi_1.doc Seite 2 von8
Listbox1.itemindex; Liefert die Nummer des markierten Items. (Zählung beginnt bei 0).
Beispiel:
showmessage(inttostr(listbox1.itemindex));
showmessage(listbox1.items[listbox1.ItemIndex]); Liefert den Inhalt des markierten Items.
showmessage(listbox1.items[3]); Liefert den Inhalt des 4. Items.
Listbox1.clear; Löscht alle Listeneinträge
1.5. TMemo
Ist ein erweitertes TEdit.
Eigenschaften
Text Ist der gesamte Inhalt des TMemo
Memo1.text:=’Neuer Text’; Überschreibt den alten Text mit dem neuen.
Lines Ist der Inhalt einer Zeile im TMemo
memo1.lines.Add('Neue Zeile'); Hängt eine neue Zeile an den vorhandenen Text an.
showmessage(memo1.Lines[2]); Zeigt die 3. Zeile des TMemo. (Beginnt mit 0 zu zählen.
SelText Selektierter Text
a:=memo1.SelText; Schreibt den selektierten Text in die Variable a (Typ: String)
memo1.lines.Add(memo1.SelText); Hängt den slektierten Text als neue Zeile an den vorhandenen an.
Clear
Memo1.clear oder memo1.lines.clear Löscht den Inhalt des TMemo.
CommaText
showmessage(memo1.Lines.CommaText); Zeigt den Text des TMemo’s an, wobei die einzelnen Zeilen durch Kommata getrennt sind.
Delete(Zahl)
memo1.Lines.Delete(2); Löscht die 3. Zeile in einem TMemo.
IndexOf
showmessage(inttostr(memo1.Lines.indexof('memo1')));
Zeigt die Zeilenummer, in der der Text steht.
1.6. TCombobox
Die TCombobox hat die gleichen Eigenschaften wie eine Tlistbox.
Arbeitsblatt Übungen in Delphi Informatik
Klasse: 11-12 Datum: 1. Juni 2007
Delphi_1.doc Seite 3 von8
1.7. TStringGrid
Das TStringGrid ist ein Element, das vergleichbar mit einer Tabelle ist.
Die 1. Spalte und 1. Zeile sind standardmäßig als Bezeichner vorgesehen. Die Nummerierung beginnt bei 0. Das graue Feld links oben hat demnach die Koordinaten ( 0 | 0 ).
Jede Zelle lässt sich direkt beschreiben.
Eigenschaften
Colcount legt die Anzahl der Spalten fest.
Stringgrid1.colcount:=4
Es werden 4 Spalten angelegt, mit der Nummerierung 0..3,
Stringgrid1.rowcount:=6
Rowcount legt die Anzahl der Zeilen fest.
Es werden 6 Zeilen angelegt, mit der Nummerierung 0..5,
Cells (Typ String)
Stringgrid1.Cells[2,4]:=’Text’; schreibt einen String in die Zelle
FixedRows (Typ Integer)
Anzahl der fixierten Spalten (grau hinterlegt)
FixedCols (Typ Integer)
Anzahl der fixierten Zeilen (grau hinterlegt)
GridLineWidth (Typ Integer)
Breite der Gitternetzlinien
DefaultRowHeight (Typ Integer)
Höhe der Zeilen
DefaultColWidth (Typ Integer)
Breite der Spalten
Beispiel:
For i := 1 to 5 do begin
For j := 1 to 5 do begin
stringGrid1.cells[ i , j ]:= inttostr( j );
end;
end;
In die Zellen wird geschrieben, und zwar nacheinander in die Zellen der Reihe 1 (2. Reihe), Reihe 2 (3. Reihe) die Zahlen ' 1 ’ , ' 2 ’ , ' 3 ’ , ' 4 ’ , ' 5 ’ als Zeichen.
Arbeitsblatt Übungen in Delphi Informatik
Klasse: 11-12 Datum: 1. Juni 2007
Delphi_1.doc Seite 4 von8
2. ASCII
Alle druckbaren und nichtdruckbaren Zeichen werden durch einen Zahlencode dargestellt, den sog ASCII-Code.
Es gibt dabei eine Entwicklung seit „Erfindung“ dieser Codierung zu verzweichnen.
Zunächst gab es nur 128 Zeichen. Das Problem war, dass nationale Sonderzeichen immer nur für ein Land darstellbar war, d.h. je nach Ländercode sahen einzelne Zeichen völig anders aus.
Bei der Erweiterung auf 255 Zeichen fielen dies Probleme weg. Aber auch dies reichte nicht mehr aus, daher war die folgerichtige Entwicklung der „ANSI“-Code. Der alte ASCII wurde ü-bernommen und deutlich erweitert, so dass nun auch chinesische Zeichen etc. darstellbar wur-den.
In Delphi werden alle Zeichen, Buchstaben wie Zahlen und Satz- wie auch Sonderzeichen im herkömmliche ASCII-Code verschlüsselt.
Ord
Definition:
Function Ord(x : String) :Integer;
Die Funktion erwartet einen String als Eingabe und liefert als Ergebnis einen Integer-Wert.
Beispiel:
Edit1.text:=inttostr(Ord(‘a’)); schreibt in das TEdit die Zeichenfolge 97.
Chr
Definition:
Function Chr(x : Integer) :String;
Die Funktion erwartet einen Integer-Wert als Eingabe und liefert als Ergebnis einen String.
Beispiel:
Edit1.text:=Chr(65)); schreibt in das TEdit das Zeichen A.
Beispiel2
For i:=65 to 90 do begin
Listbox1.items.add(chr( i ))
End;
For i:=97 to 122 do begin
Listbox1.items.add(chr( i ))
End;
For i:=48 to 57 do begin
Listbox1.items.add(chr( i ))
End;
Schreibt in die Listbox die Buchstaben A .. Z
Schreibt in die Listbox die Buchstaben a .. z
Schreibt in die Listbox die Zeichen 0 .. 9
Arbeitsblatt Übungen in Delphi Informatik
Klasse: 11-12 Datum: 1. Juni 2007
Delphi_1.doc Seite 5 von8
3. Caesar-Verschlüsselung
Der Text steht in einem TEdit (Edit1), der verschlüsselte Text soll in ein zweites TEdit (E-dit2) Geschrieben werden, mit festem Code.
Procedure codieren
const code=3; var i,r:integer; z:char; begin For i:=1 to length(edit1.text) do begin z := edit1.text[i]; // das i-te Zeichen wird gelesen r := ord(z) ; // Umwandlung in ASCII-Code r := r+code; //Codieren, verschieben entlang der Buchstabenachse edit2.text := edit2.text+chr(r); //Eintragen in edit2 end;
Problem: Es können auch “Nichtbuchstaben” entstehen. Durch Weglassen von r := r+code und stattdessen durch Einfügen von If r > 90 then r:=r – 32; // werden Großbuchstaben erzeugt r := r + code; if r > 90 then r := r – 26; // Die Zeichen nach “Z” werden in Zeichen beginnend mit
“A” umgewandelt. Frage: Wie wird entschlüsselt?
Arbeitsblatt Übungen in Delphi Informatik
Klasse: 11-12 Datum: 1. Juni 2007
Delphi_1.doc Seite 6 von8
4. Funktionen
Funktionen haben den Kopf:
function name (x : Typ1) : Typ2
begin ….
Result:=…..; (name:=…….;) end;
x ist dabei das Argument, die Variable, deren Wert an die Funktion übergeben wird.
Typ1 ist der Typ der Variablen
Typ2 ist der Typ der Funktion
Result In der Funktion muss diese Zeile stehen. In ihr wird der Funktion ihr Wert zugewie-sen. Als Alternative ist auch " Funktionsname:= Wert “ möglich.
Der Aufruf erfolgt immer in der folgenden Form:
Y:=name(Wert);
Beispiele für in Delphi „eingebaute“ Funktionen:
IntToStr(x : Integer) : String;
Eine Integer-Zahl wird übergeben, das Ergebnis ist ein String.
StrToInt( x : String) :Integer
Ein String wird übergeben, Das Ergebnis ist eine Zahl.
5. Prozeduren
Erfolgt die Deklaration in der Form:
Procedure Name
Begin … end;
werden in dieser Prozedur globale Variablen verwendet, so wird ihre Wertänderung global gül-tig.
Erfolgt die Deklaration in der Form:
Procedure Name (x : Typ)
Begin … end;
werden von global deklarierten Variablen nur die Kopien verwendet, d.h. globale Werte werden übernommen, Änderungen sind aber nur innerhalb der Prozedur gültig.
Erfolgt die Deklaration in der Form:
Procedure Name (var x : Typ)
Begin … end;
werden global deklarierte Variable direkt verwendet, d.h. globale Werte werden übernommen, Änderungen sind aber global gültig.
In allen drei Formen sind lokal deklarierte Variablen nur lokal gültig, selbst wenn eine global Va-riable unter dem gleichen Namen deklariert wird.
Arbeitsblatt Übungen in Delphi Informatik
Klasse: 11-12 Datum: 1. Juni 2007
Delphi_1.doc Seite 7 von8
6. Typ-Deklarationen
Neben den standarmäßig vorhandenen Typen lassen sich eigene neue Typen dekarieren
6.1. Record
Ein Record ist eine Zusammenfassung mehrer Variablen mit (möglicherweise) unterschi-delichem Typ zu einer neuen.
Type
TRecord = record
a: integer;
b: String;
end;
var
einrecord : TRecord;
Wertzuweisung mit
Einrecord.a:=4;
Einrecord.b:=’text’;
Oder:
With einrecord do begin
a := 4;
b := ' text ’ ;
end;
6.2. Eigenständige Variablen – Typen
Type
Menge1 = 'a' .. 'z' ;
Menge2 = (mo , di , mi , dn , fr);
Zaehlmenge = mo..fr ;
Var
X : menge1; (x ist vom Typ char. Es kann aber auch als Zähler ver-wendet werden
Y : Zaehlmenge; (Y ist ein Enumerationswert, also weder Text noch Zahl, sondern nur als Zähler zu verwenden
Beispiele:
For x:= 'a’ to 'n’ do begin
Showmessage(x);
End;
For y:=mo to fr do begin
Showmessage('x’);
End;
Hier wird der Inhalt der Variablen in einem Fenster ausgegeben
Hier geht nicht das gleiche wie oben, da dieser Typ „enumerisch“ ist, d.h. weder String noh integer.
Arbeitsblatt Übungen in Delphi Informatik
Klasse: 11-12 Datum: 1. Juni 2007
Delphi_1.doc Seite 8 von8
Aufgabe:
Schreibe ein Programm mit folgenden Objekten: Label, Edit-Feld und Button. Nach Drücken auf den Button wird im Feld Edit1 "ein neuer Text" angezeigt. Nach Doppelklick im Editfeld erscheint der Text auch im Label.
Tip: Wähle bei Edit1 im Objektinspektor Ereignisse "OnDblClick" und schreibe in die Prozedur den entsprechenden Befehl.
7. Umgang mit Zahlen Gibt man in Edit eine Zahl ein und will damit rechnen, muß der "String" in eine Zahl verwandelt wer-den:
StrToInt Wandelt einen String in eine Zahl (Integer) um !!!Der String darf nur aus Ziffern bestehen!!!
IntToStr Wandelt einen Zahl in eine String um
StrToFloat Wandelt einen String in eine Zahl (Float oder Turbo3 Real) um !!!Der String darf nur aus Ziffern bestehen!!!
FloatToStr Wandelt einen Zahl in eine String um
Aufgabe:
Schreibe ein Programm mit drei Edit-Feldern und einem Button. Nach Start soll in das erste Feld eine '3' in das zweite eine '5' eingegeben werden. Nach Druck auf den Button sollen die Zahlen addiert werden und das Ergbnis im dritten Edit-Feld ausgegeben werden.
Tip Die Befehle in der Prozedur lauten:
a := stroint(edit1.text) b := stroint(edit2.text) c := a + b edit2.text(inttostr( c )) !!!Vergiß nicht, die Variablen zu deklarieren!!!
Es geht auch kürzer, in einer Zeile! Wie?
7.1 Auf \\ntserver\schueler\delphi\Aufgaben\ befinden sich die Verzeichnisse Aufgabe_1 und Auf-gabe_2.
7.2 Beschreibe die Funktionen des Programmes aus Aufgabe_!.
7.3 In Aufgabe_2 kann man Text auf verschiedene Arten unter den Feldern austauschen. Notiere die Prozeduren, die es erlauben den Text per Drag und Drop von einem Feld in ein anderes zu kopieren. (Es sind hierzu Prozeduren beim Sender (Source) und Empfän-ger nötig.
7.4 Übertrag das Gelernte in ein eigenes Programm. Ein Edit-Feld und ein Label. Es soll der in dem Edit-Feld eingegebene Text per Drag und Drop in das Label kopiert werden.