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
 
#10

Re: Einfaches Abspeichern in externer Datei

  Alt 28. Sep 2009, 20:39
Sorry, dass ich mich nicht gemeldet habe.

Also ich habe mal versucht eure Vorschläge mit einzuarbeiten. Wenn ich jetzt allerdings auf das Feld "Datenbank Laden" klicke erhalte ich eine Fehlermeldung in neuem Fenster: "Project raised exception class EInOutError with message 'Read beyond end of file'. Process stopped. Use step or run to continue"

So sieht mein Quelltext jetzt aus:

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..10] of tSchueler; //Array für Schuelerdatensätze
  f: file of tSchueler;

implementation

{$R *.dfm}

function Kontrolle:Boolean; //Prozedur zum Test, ob einige der bekannten IO-Fehler gefunden werden
begin
  result := false;
  case IOResult of
     0: result := true;
     2: begin showmessage ('Datei nicht vorhanden.' +#13+ 'Datei wird angelegt');
          rewrite(f);
          result := true;
        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); {$I+}
if Kontrolle then
  begin
    for i:=1 to 10 do write (f, Datensatz[i]);
    closefile (f);
  end;
end;

procedure TForm1.ButtonAuslesenClick(Sender: TObject); //Datenbank laden
var i:integer;
begin
  i:=1;
  Assignfile (f,Datenpfad);
  {$I-} reset(f); {$I+}
  if Kontrolle then
    begin
       while not eof(f) do
         begin
           read(f, Datensatz[i]);
           inc(i);
         end;
     end;
   closefile (f);
end;

procedure TForm1.ButtonEintragSpeichernClick(Sender: TObject); //Schüler-Eintrag speichern
var fehler: boolean; //Wird true gesetzt, wenn ein Eingabefeld leer ist
         i:integer;
begin
fehler:=false;
i:=1;
if length(EditSNr.Text)=0 then fehler:=true
else
begin
  i:=StrToInt(EditSNr.Text);
  if length(EditSNr.Text)<>0 then Datensatz[i].Nr:= EditSNr.Text else fehler:=true;
  if length(EditName.Text)<>0 then Datensatz[i].Name:= EditName.Text else fehler:=true;
  if length(EditVorname.Text)<>0 then Datensatz[i].Vorname:= EditVorname.Text else fehler:=true;
  if length(EditGebOrt.Text)<>0 then Datensatz[i].Geburtsort:= EditGebOrt.Text else fehler:=true;
  if length(EditGebDat.Text)<>0 then Datensatz[i].GebDat:= EditGebDat.Text else fehler:=true;
  if length(EditOrt.Text)<>0 then Datensatz[i].Ort:= EditOrt.Text else fehler:=true;
  if length(EditKlasse.Text)<>0 then Datensatz[i].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.
Ich habe noch nicht ganz verstanden, wie ihr das mit den dynamische Arrays meint. Ich habe jetzt erstaml aus Testzwecken die Schülerzahl auf 10 gesenkt.


Vielen Dank im Voraus
Jan
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 00:28 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz