Entwickler-Ecke

Sonstiges (Delphi) - Kleine Datenbank (Feld, Datei und Menge)


MKzero - So 14.01.07 18:47
Titel: Kleine Datenbank (Feld, Datei und Menge)
Benötige für die Schule ein kleines Beispielprogramm in Delphi.
Habe jetzt hin und her probiert und komme einfach nicht weiter:

Habe mir gedacht ein klitze-kleines Adressbuch zu nehmen. Nur mit Vorname, Nachname und Telefonnummer.

Meine Aufgabe:
Zeigen Sie am Beispiel einer kleinen Datenbank(Programm in Delphi) die Deklaration und die Verwendung der Datentypen „Feld“, „Verbund“, „Datei“ und „Menge“.

Kann mir jemand weiterhelfen, wie ich Datei und Menge da einbauen kann? Was bringt mir das Feld in diesem Fall? Wie kann ich die Ausgabe sinnvoll darstellen?

Quelltext:



Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
...

     type TGeburtsdatum=record
          Tag:1..31;
          Monat:1..12;
          Jahr:1900..2007;
     end;

     type TPerson=record
          Vorname:string[25];
          Nachname:string[20];
          Telefon:integer;
          Geburtsdatum:TGeburtsdatum;
     end;

     type Adressliste=array[1..3of TPerson;

var
  Form1: TForm1;
  Person:Adressliste;
  x:integer;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin

for x:=1 to 3 do
    with Person[x] do
         begin
         Nachname:=Edit1.Text;
         Vorname:=Edit2.Text;
         with Geburtsdatum do
              begin
              Tag:=StrToInt(Edit3.Text);
              Monat:=StrToInt(Edit4.Text);
              Jahr:=StrToInt(Edit5.Text);
              end;
         end;


...


Moderiert von user profile iconChristian S.: Delphi-Tags hinzugefügt
Moderiert von user profile iconChristian S.: Titel geändert. (Hilfe will hier jeder ;-))


jaenicke - So 14.01.07 19:42

Erstmal :welcome: hier im Forum!

Ist die Aufgabe nun etwas mit einer (echten) Datenbank zu machen oder sowas, was du gemacht hast? :gruebel:
user profile iconMKzero hat folgendes geschrieben:
Meine Aufgabe:
Zeigen Sie am Beispiel einer kleinen Datenbank(Programm in Delphi) die Deklaration und die Verwendung der Datentypen "Feld", "Verbund", "Datei" und "Menge".

Ein Feld, also ein Array hast du ja schon. Was soll Verbund sein? Ein Record? :lol:
Datei? http://www.dsdt.info/tutorials/typdateien/
Menge?

Delphi-Quelltext
1:
2:
3:
type
TKleidungsstueck = (klsHut, klsJacke, klsHose, klsSchuhe);
TKleidung = set of TKleidungsstueck;


MKzero - So 14.01.07 20:05

Naja, ist im Info Unterricht der 13. Klasse! Habe mir gedacht das es mit ner Tabelle(StringGrid) als Ausgabe ist.

Mit der Menge verstehe ich noch nicht! Heißt das, das Vorname, Nachname und z.B. Telefonnummer eine Menge von Person ist? Ist also so ähnlich wie Verbungd(Record)? Was bringt mir dann eine Menge in meinem Beispiel?

Das Feld habe ich schon drin, weiß aber nicht was es mir in diesem Fall bringt!

Und dann noch das Problem mit Datei(File)! Gibt es dafür ein Beispiel? Kann mal eine ganze Tabelle(StringGrid) speichern? Wenn ja, wäre ein kleines Beispiel ganz nett!

Als Anhang seht ihr mein momentanes Programm!


oldmax - Mo 15.01.07 07:52

Hi
Ich glaube, was du suchst habe ich schon einmal ziemlich ausführlich beschrieben. Geh einfach in die Suche und gebe unter Autoren "Oldmax" ein. Dort findest du unter Datenbank für Adressbuch gesucht einen ausführlichen Beitrag. Ist aber schon gut 4 monate her.
Viel Spaß damit
Gruß Oldmax


jaenicke - Mo 15.01.07 09:30

user profile iconMKzero hat folgendes geschrieben:
Mit der Menge verstehe ich noch nicht! Heißt das, das Vorname, Nachname und z.B. Telefonnummer eine Menge von Person ist? Ist also so ähnlich wie Verbungd(Record)? Was bringt mir dann eine Menge in meinem Beispiel?

Eine Menge enthält einen oder mehrere Elemente. In meinem Beispiel dachte ich, würde das klar werden. In einer Variable vom Typ Kleidung können ein oder mehrere Elemente aus TKleidungsstueck enthalten sein. Zum Beispiel nur klsJacke und klsHose...
Ob ein Element enhalten ist, kannst du mit

Delphi-Quelltext
1:
2:
3:
4:
5:
var
  test: TKleidung;
begin
  test := [klsHut, klsHose];
  CheckBox1.Checked := klsHut in test;
feststellen, so wie hier kannst du ja mehrere CheckBoxen verwenden.
user profile iconMKzero hat folgendes geschrieben:
Das Feld habe ich schon drin, weiß aber nicht was es mir in diesem Fall bringt!
Ich hätte statt

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
     type Adressliste=array[1..3of TPerson; 


var 
  Form1: TForm1; 
  Person:Adressliste;
lieber

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
var 
  Form1: TForm1; 
  Person: array of TPerson;

// eine Person mehr:
SetLength(Person, Length(Person) + 1);

// eine Person weniger:
SetLength(Person, Length(Person) - 1);
genommen, weil sonst ist die Anzahl der Personen ja fest. Komisches Adressbuch... ;-)
user profile iconMKzero hat folgendes geschrieben:
Und dann noch das Problem mit Datei(File)! Gibt es dafür ein Beispiel? Kann mal eine ganze Tabelle(StringGrid) speichern? Wenn ja, wäre ein kleines Beispiel ganz nett!

Du solltest lieber die Daten selbst speichern statt dem Inhalt des StringGrids... Das Tutorial wie sowas geht, habe ich doch verlinkt...


MKzero - Mi 17.01.07 17:46

Danke für die vielen Tipps! Bekomme das Tutorial nicht auch mein Projekt übertragen!

Mit der Menge ist jetzt schon deutlicher geworden, habe es mit Bundesländern gemacht! Was ist wenn ich überprüfen möchte, ob in einem Edit-Feld ein Element der Menge steht? Das funktionmiert nicht wie ich es mir denke!

Die Deklaration:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
type TBundesland=(Berlin,Brandenburg,Sachsen);
     Ort=set of TBundesland;

type TPerson=record
          Vorname:string[25];
          Nachname:string[25];
          Telefon:integer;
          Geburtsdatum:TGeburtsdatum;
          Ort:string[25];
end;
type Adressliste=array[1..4of TPerson;


In Programm:


Delphi-Quelltext
1:
2:
Bundesland:=(Edit1.Text);
if Bundesland in Ort then Edit2.Text:="ja";


Aber so funktioniert das nicht! Kann mir jemand helfen?

Moderiert von user profile iconraziel: Delphi-Tags hinzugefügt