AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Einfaches Abspeichern in externer Datei // Schülerverwaltung
Thema durchsuchen
Ansicht
Themen-Optionen

Einfaches Abspeichern in externer Datei // Schülerverwaltung

Ein Thema von jawo3 · begonnen am 22. Sep 2009 · letzter Beitrag vom 29. Sep 2009
 
jawo3

Registriert seit: 15. Sep 2009
Ort: Niedersachsen
41 Beiträge
 
#1

Einfaches Abspeichern in externer Datei // Schülerverwaltung

  Alt 22. Sep 2009, 20:44
Hallo,
ich bin gerade dabei ein Programm zu schreiben, mit dessen Hilfe ich Schülerdaten (Schülernr., Name, Vorname, Klasse, usw.) in einer Datei abspeichern kann, sodass diese nach Schließen und erneutem Öffnen des Programms über den Klick eines Buttons wieder eingelesen werden und wieder verfügbar sind. Soweit so gut. Allerdings werden, wenn ich Daten zu verschiedenen Schülern gespeichert habe, und mich vergewissert habe, dass diese auch wieder über die Schülernummer aufrufbar sind, diese nicht geladen bzw. wieder korrekt ausgegeben, wenn ich das Programm neustarte. Ich würde mich sehr freuen, wenn ihr mich ein bisschen bei der Fehlersuche unterstützen könntet. Im Unterricht wurden uns jedenfalls heute einfach diese ganzen assignfile-Sachen an den Kopf geknallt. Der Test auf IO-Fehler ist übrigens ein Pflichtelement des Programms.

Hier mal der Quelltext:
Delphi-Quellcode:
unit zeugnis;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls;

type
  TForm1 = class(TForm)
    ButtonSpeichern: TButton;
    ButtonAuslesen: TButton;
    ButtonBeenden: TButton;
    EditSNr: TEdit;
    EditName: TEdit;
    EditVorname: TEdit;
    EditGebDat: TEdit;
    EditGebOrt: TEdit;
    EditOrt: TEdit;
    EditKlasse: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    Label7: TLabel;
    Label8: TLabel;
    Label9: TLabel;
    ButtonClear: TButton;
    EditDatensatzNr: TEdit;
    Label10: TLabel;
    ButtonSchuelerDaten: TButton;
    Label11: TLabel;
    ButtonEintragSpeichern: TButton;
    procedure ButtonBeendenClick(Sender: TObject);
    procedure ButtonSpeichernClick(Sender: TObject);
    procedure ButtonAuslesenClick(Sender: TObject);
    procedure ButtonClearClick(Sender: TObject);
    procedure ButtonSchuelerDatenClick(Sender: TObject);
    procedure ButtonEintragSpeichernClick(Sender: TObject);
  end;

  tSNr = string[5];
  tName = string[20];
  tVorname = string[15];
  tGebDat = string[10];
  tGebOrt = string[15];
  tOrt = string[15];
  tKlasse = string[4];

  tSchueler = record
        Nr :tSNr; //Schuelernummer bzw. Datensatznummer
        Name :tName; //Schuelername
        Vorname :tVorname; //Schuelervorname
        Geburtsort :tGebOrt; //Geburtsort
        GebDat :tGebDat; //Geburtsdatum
        Ort :tOrt; //Wohnort
        Klasse :tKlasse; //Klasse
  end;
  const Datenpfad='Schueler.dta';

var
  Form1: TForm1;
  Datensatz: array[1..99999] of tSchueler; //Array für Schuelerdatensätze
  num: integer; //Datensatznummer
  f: file of tSchueler;

implementation

{$R *.dfm}

procedure Kontrolle; //Prozedur zum Test, ob einige der bekannten IO-Fehler gefunden werden
begin

 case IOResult of
 2: begin showmessage ('Datei nicht vorhanden.' +#13+ 'Datei wird angelegt');
     rewrite(f);
     closeFile(f);
    end;
 3: showmessage ('Ungueltiger Dateiname/Pfad');
 5: showmessage ('Dateizugriff verweigert.');
 21: showmessage ('Laufwerk nicht bereit!');
 end;
end;

procedure TForm1.ButtonSpeichernClick(Sender: TObject); //Datenbank abspeichern
var i:integer;
begin
Assignfile (f,Datenpfad);
{$I-} reset (f); {$T+}
Kontrolle;
if IOResult=0 then
  begin
    for i:=1 to 99999 do write (f, Datensatz[i]);
    closefile (f);
  end;
end;

procedure TForm1.ButtonAuslesenClick(Sender: TObject); //Datenbank laden
var i:integer;
begin
Assignfile (f,Datenpfad);
Kontrolle;
if IOResult=0 then
  begin
    for i:=1 to 99999 do read (f, Datensatz[i]);
    closefile (f);
  end;
end;

procedure TForm1.ButtonEintragSpeichernClick(Sender: TObject); //Schüler-Eintrag speichern
var fehler: boolean; //Wird true gesetzt, wenn ein Eingabefeld leer ist
begin
fehler:=false;
num:=1;
if length(EditSNr.Text)=0 then fehler:=true
else
begin
  num:=StrToInt(EditSNr.Text);
  if length(EditSNr.Text)<>0 then Datensatz[num].Nr:= EditSNr.Text else fehler:=true;
  if length(EditName.Text)<>0 then Datensatz[num].Name:= EditName.Text else fehler:=true;
  if length(EditVorname.Text)<>0 then Datensatz[num].Vorname:= EditVorname.Text else fehler:=true;
  if length(EditGebOrt.Text)<>0 then Datensatz[num].Geburtsort:= EditGebOrt.Text else fehler:=true;
  if length(EditGebDat.Text)<>0 then Datensatz[num].GebDat:= EditGebDat.Text else fehler:=true;
  if length(EditOrt.Text)<>0 then Datensatz[num].Ort:= EditOrt.Text else fehler:=true;
  if length(EditKlasse.Text)<>0 then Datensatz[num].Klasse:= EditKlasse.Text else fehler:=true;
end;
if fehler=true then showmessage('Bitte füllen Sie alle Felder aus!')
else
  begin
    showmessage('Eintrag erfolgreich gespeichert');
  end;
end;

procedure TForm1.ButtonClearClick(Sender: TObject); //Felder leeren
begin
EditSNr.Text:='';
EditName.Text:='';
EditVorname.Text:='';
EditGebOrt.Text:='';
EditGebDat.Text:='';
EditOrt.Text:='';
EditKlasse.Text:='';
end;

procedure TForm1.ButtonSchuelerDatenClick(Sender: TObject); //Daten zu einem Schüler anzeigen
var i: integer; //Datensatznummer
begin
i:=StrToInt(EditDatensatzNr.Text);
if (length(EditDatensatzNr.Text)<>0) and (length(EditDatensatzNr.Text)<=5) then
begin
  EditSNr.Text:=Datensatz[i].Nr;
  EditName.Text:=Datensatz[i].Name;
  EditVorname.Text:=Datensatz[i].Vorname;
  EditGebOrt.Text:=Datensatz[i].GeburtsOrt;
  EditGebDat.Text:=Datensatz[i].GebDat;
  EditOrt.Text:=Datensatz[i].Ort;
  EditKlasse.Text:=Datensatz[i].Klasse;
end
else showmessage('Bitte eine gültige Datensatz-Nummer eintragen');
end;

procedure TForm1.ButtonBeendenClick(Sender: TObject); //Programm beenden
begin
close;
end;
end.
Im Anhang habe ich noch mal ein Bild, das zeigt, wie das Programm so aussieht.


Vielen Dank
Jan
Angehängte Grafiken
Dateityp: png schuelerverwaltung_140.png (15,1 KB, 21x aufgerufen)
Jan
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:07 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz