Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Datenbank ohne BDE für delphi 5.0 (https://www.delphipraxis.net/11635-datenbank-ohne-bde-fuer-delphi-5-0-a.html)

dazon 10. Nov 2003 23:20


Datenbank ohne BDE für delphi 5.0
 
ich versuche seid gut 3 Tagen eine Datenbank per record zu erstellen, leider ohne grossen erfolg. Zwar habe ich in diesem forum schon eine tolle source gefunden, leider ist die aber für delphi 7.0, was ich leider nicht besitze. Meine delphi kenntnisse sind sehr gering, darum ist es mir peinlich meine bisherige source in dieses forum zu posten, ich tue es aber trotzdem, vielleicht hilft mir ja jemand.

Delphi-Quellcode:
type
  TForm1 = class(TForm)
    ename: TEdit;
    evorname: TEdit;
    estrasse: TEdit;
    enr: TEdit;
    etelefonnummer: TEdit;
    ewohnort: TEdit;
    eplz: TEdit;
    ehandy: TEdit;
    eemail: TEdit;
    eschule: TEdit;
    egeburtsdatum: TEdit;
    ehomepage: TEdit;
    estand: TEdit;
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Button4: TButton;
    Button5: TButton;
    Button6: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button5Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button6Click(Sender: TObject);
 ...

 ...
Type
  tperson      = record
  name         : String [30];
  vorname      : string [30];
  strasse      : String [30];
   {usw}
  end;

 var
  Form1: TForm1;
  person : tperson;
  adresse: array[1..100] of tperson;
  Datei : file of tperson;
 
procedure TForm1.Button1Click(Sender: TObject);  // übertragung von edit in array
var i : Integer;
begin
 assignfile(datei, 'Datenbank.dat');
 rewrite(datei);
 for i := 1 to 100 do begin
  adresse[i].name := ename.text;
  adresse[i].vorname := evorname.text;
  adresse[i].strasse := estrasse.text;
  {usw}
  Write(datei, adresse[i]);              // speichern der array daten in datei
                       end;
end;

das ist er einmal die wichtige prozedur, mit der ich Probleme habe. Es soll den array in eine externe datei speichern, was er aber glaube ich nicht richtig tut, denn wenn ich es wieder lade, sind alle textfelder leer. Vielleicht speichert er auch nur den letzten array.... ich weiss es nicht so recht.
Bitte versucht mit zu helfen, egal wie......

[edit=r_kerber]Delphi-Tags eingefügt. Mfg, r_kerber[/edit]

dazon 11. Nov 2003 00:46

ganz neue Auflage
 
Delphi-Quellcode:
TYPE
TAdressRecord = RECORD
Name         : STRING[40];
Strasse      : STRING[40];
PLZ          : STRING[5];
Geb          : STRING[10];
END;

var        //Global
  Form1: TForm1;

implementation

{$R *.DFM}




FUNCTION ReadMyDataset(n: LongInt): BOOLEAN;         // Lesen von Datensätzen
VAR
MyDatabase : File OF TAdressRecord;
DBError : BOOLEAN;
 BEGIN
  Assign(MyDatabase, '.\..\MYDATABASE.DAT');
  Reset(MyDatabase);
  {$I-}            //nen richtigen durchblick hab ich von seek noch ned....
   Seek(MyDatabase, n);
   IF IOResult = 0 THEN
   DBError := FALSE
   ELSE
       DBError := TRUE;
       {$I+}
       IF NOT DBError THEN BEGIN
{ der Datensatz kann nun gelesen und verarbeitet werden}
       ...
       END;
  Close(MyDatabase);
  ReadMyDataset := DBerror;
END;
{Die Funktion UpdateMyDataset geht zum Datensatz n und bearbeitet
diesen.}

FUNCTION UpdateMyDataset(n : LongInt): BOOLEAN;   // Aktualisierung von Datensätzen
VAR
  MyDatabase: File OF TAdressRecord;
  DBError : BOOLEAN;
  BEGIN
    Assign(MyDatabase, '.\..\MYDATABASE.DAT');
    Reset(MyDatabase);
    {$I-}
    Seek(MyDatabase,n);
    IF IOResult = 0 THEN
    DBError := FALSE
    ELSE
    DBError := TRUE;
    {$I+}
    IF NOT DBError THEN BEGIN
{ der Datensatz kann nun überschrieben werden }
    ...
 END;
Close(MyDatabase);
ReadMyDataset := DBError;
END;


FUNCTION InsertNewDataset: BOOLEAN;    // Hinzufügen von neuen Datensätzen
VAR
MyDatabase : File OF TAdressRecord;
DBError : BOOLEAN;
BEGIN
   Assign(MyDatabase, '.\..\MYDATABASE.DAT');
   Reset(MyDatabase);
   {$I-}
   Seek(MyDatabase, FileSize(MyDatabase));
   IF IOResult = 0 THEN DBError := FALSE ELSE DBError := TRUE;
   {$I+}
   IF NOT DBError THEN BEGIN
{der Datensatz kann nun angefügt werden}
   ...
END;
Close(MyDatabase);
ReadMyDataset := DBError;
END;


end. //Ende des Programms
klappt das mit dem .\..\Pfad?
was muss ich jetzt bei den gekenntzeichneten ... Lücken einfüllen (ich mein wie mach ich des mit editfeldern ohne ....., ach einfach ma helfen

[edit=r_kerber]Delphi-Tags eingefügt. Mfg, r_kerber[/edit]

Marco Haffner 11. Nov 2003 02:20

Re: Datenbank ohne BDE für delphi 5.0
 
Hallo,
erstmal herzlich Willkommen.

Bitte benutze in Zukunft die Delphi-Code-Tags.

Hansa 11. Nov 2003 02:25

Re: Datenbank ohne BDE für delphi 5.0
 
Zitat:

Zitat von dazon

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);  // übertragung von edit in array
var i : Integer;
begin
 assignfile(datei, 'Datenbank.dat');
 rewrite(datei);
 for i := 1 to 100 do begin
  adresse[i].name := ename.text;
  adresse[i].vorname := evorname.text;
  adresse[i].strasse := estrasse.text;
  {usw}
  Write(datei, adresse[i]);              // speichern der array daten in datei
                       end;
end;

Sei gegrüßt als Neuling. 8) Erstens fehlt nach der for-schleife ein close, also ist nicht die ganze Datei gespeichert, oder gar nichts. Und durch das rewrite machst du die Datei beim Start sofort wieder leer, die wird dadurch nämlich einfach überschrieben. Das ist der Hauptfehler.

P.S.: Ah, da ist noch ein wichtiger Kommentar durchgerutscht, der Dir sicherlich nicht hilft. Gehe in Deinem Text auf "Delphi-Source", füge dann den Code ein und dann wieder auf "Delphi-Source*". Danach schreibst Du normal weiter.

r_kerber 11. Nov 2003 06:09

Re: Datenbank ohne BDE für delphi 5.0
 
Hallo dazon,

zunächst erst mal herzlich willkommen in der Delphi-Praxis. Benutze künfzig doch die Delphi-Tags. Ich habe diese in Deine beiden Postings schon mal eingefügt. Wie Du siehst ist der Quellcode so besser lesbar.

dazon 11. Nov 2003 12:55

Re: Datenbank ohne BDE für delphi 5.0
 
Danke für die hilfe, ich habe eine ganz neue idee gehabt (als man mir erklärte, wie man mit seek arbeitet). Sind da irgendwelche fehler drin??? und kann ich bei den gekenntzeichneten ... leerpassagen mit editfeldern = zuweisung arbeiten?

dazon 11. Nov 2003 13:12

Re: Datenbank ohne BDE für delphi 5.0
 
also wie genau mach ich jetzt die ein und ausgabe?


Hat zufällig jemand einen record-datenbank programm ohne BDE aufm rechner, dass ich mir ma anschauen kann wie derjenige es gemacht hat? Ich mach immer andere logische fehler....

dazon 14. Nov 2003 10:06

Re: Datenbank ohne BDE für delphi 5.0
 
Delphi-Quellcode:
    Type
     tperson = record
     vorname:string[30];
     name:string[30];
     strasse:string[50];
     hausnummer:string[3];
     plz:string[5];
     ort:string[30];
     //zeiger: integer;

  end;



var
  Form1: TForm1;
  person:tperson;
  adresse:Array[1..100]of tperson;
  Datei: File of tperson;
  i,w: integer;

implementation

{$R *.DFM}



procedure TForm1.Felder_leerenClick(Sender: TObject);
begin
edvorname.text:='';
edname.text:='';
edstrasse.text:='';
edhausnummer.text:='';
edplz.text:='';
edort.text:='';
end;

procedure TForm1.FormCreate(Sender: TObject);
var s: integer;
begin
  s:= 1;
  assignfile(Datei,'Adressen.dat');
  i:= 1;
  reset(Datei);
  while not EoF(Datei) do
    begin
      read(Datei,adresse[s]);
      s:= s+1;
    end;
  w:=1;
end;

procedure TForm1.SpeichernClick(Sender: TObject);
begin
  with person do begin
  adresse[i].vorname   := edvorname.text;
  adresse[i].name      := edname.text;
  adresse[i].strasse   := edstrasse.text;
  adresse[i].hausnummer := edhausnummer.text;
  adresse[i].plz       := edplz.text;
  adresse[i].ort       := edort.text;
  end;
  write(Datei,adresse[i]);
  i:=i+1;


end;


procedure TForm1.DB_verlassenClick(Sender: TObject);
begin
closefile(datei);
close;
end;


end.
ich kapier des mit code libary ned


wie mach ich jetzt das laden, und wie kann ich das bisherige mit dynamischen arrays machen?

iamjoosy 14. Nov 2003 10:52

Re: Datenbank ohne BDE für delphi 5.0
 
Hi, benutze besser keine Records, habe das auch schon gemacht, und kann nur dringend abraten. Verwende besser ein TclientDataset und benutze es mit lokalen files (sogenannter MyBase Ansatz).

Eine Einführung findest du hier: Mybase Einstieg

Falls Englisch kein Problem eine hervorragende Artikelserie gibt es hier:Cary Jensen

dazon 14. Nov 2003 17:31

Re: Datenbank ohne BDE für delphi 5.0
 
hmm schade, ich habe aber dieses plugin ned in der delphi 5 standart version


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:15 Uhr.
Seite 1 von 2  1 2      

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