Delphi-PRAXiS
Seite 1 von 5  1 23     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Datenbank realisieren, aber ohne Server und Treiber ? (https://www.delphipraxis.net/46839-datenbank-realisieren-aber-ohne-server-und-treiber.html)

smart 1. Jun 2005 12:36

Datenbank: Noch keine • Version: ? • Zugriff über: ?

Datenbank realisieren, aber ohne Server und Treiber ?
 
Ich möchte gern eine Datenbank realisieren. Aber ohne Server und Treiber direkt das DBfile erzeugen/bearbeiten. Ich habe leider wenig Kenntnisse von der Datenbankprogrammierung. Was brauche ich dazu? Welche Komponenten kann man benutzen? Kann mir Einer von Euch mal bitte helfen? Achso, dass ganze sollte auch auf WIN95 laufen

barf00s 1. Jun 2005 12:42

Re: Datenbank realisieren, aber ohne Server und Treiber ?
 
du willst also .db / .dbf dateien erzeugen, ohne BDE oder irgendeinen anderen treiber, und die .db/.dbf oder was, soll für andere programme die dieses (öhm paradox?) format unterstützen?

ooooooder ginge es auch wenn du dir deine daten in sequentiellen dateien oder so speicherst? ~dummfrag~

MagicAndre1981 1. Jun 2005 12:45

Re: Datenbank realisieren, aber ohne Server und Treiber ?
 
Zitat:

Zitat von barf00s
du willst also .db / .dbf dateien erzeugen, ohne BDE oder irgendeinen anderen treiber, und die .db/.dbf oder was, soll für andere programme die dieses (öhm paradox?) format unterstützen?

ooooooder ginge es auch wenn du dir deine daten in sequentiellen dateien oder so speicherst? ~dummfrag~

Du meinst Typisierte Dateien, oder?

@Smart

Schau dir mal Absolute Database an.

André

barf00s 1. Jun 2005 12:46

Re: Datenbank realisieren, aber ohne Server und Treiber ?
 
ich seh schon ... vergiss die frage mit den files/sequentiellen krams....

FireBird ist wohl sone datenbank wie du vllt suchst.

MagicAndre1981 1. Jun 2005 12:48

Re: Datenbank realisieren, aber ohne Server und Treiber ?
 
Zitat:

Zitat von barf00s
ich seh schon ... vergiss die frage mit den files/sequentiellen krams....

FireBird ist wohl sone datenbank wie du vllt suchst.

Der FB braucht aber (auch) als Embedded eine Dll.

smart 1. Jun 2005 13:02

Re: Datenbank realisieren, aber ohne Server und Treiber ?
 
Zitat:

Zitat von barf00s
du willst also .db / .dbf dateien erzeugen, ohne BDE oder irgendeinen anderen treiber, und die .db/.dbf oder was, soll für andere programme die dieses (öhm paradox?) format unterstützen?

ooooooder ginge es auch wenn du dir deine daten in sequentiellen dateien oder so speicherst? ~dummfrag~

Das geht auch.

Boombuler 1. Jun 2005 13:09

Re: Datenbank realisieren, aber ohne Server und Treiber ?
 
Zitat:

Zitat von MagicAndre1981
Zitat:

Zitat von barf00s
ich seh schon ... vergiss die frage mit den files/sequentiellen krams....

FireBird ist wohl sone datenbank wie du vllt suchst.

Der FB braucht aber (auch) als Embedded eine Dll.

Ich benutz auch teilweise den Embeddes Server von FB und ich kann nur sagen TOP!
Das zieh ich jeder Sequenziellen Datei vor! Naja kommt auch wieder auf die größe der Datenmengen an...

Greetz
Boombuler

MagicAndre1981 1. Jun 2005 13:13

Re: Datenbank realisieren, aber ohne Server und Treiber ?
 
Zitat:

Zitat von Boombuler
Zitat:

Zitat von MagicAndre1981
Zitat:

Zitat von barf00s
ich seh schon ... vergiss die frage mit den files/sequentiellen krams....

FireBird ist wohl sone datenbank wie du vllt suchst.

Der FB braucht aber (auch) als Embedded eine Dll.

Ich benutz auch teilweise den Embeddes Server von FB und ich kann nur sagen TOP!
Das zieh ich jeder Sequenziellen Datei vor! Naja kommt auch wieder auf die größe der Datenmengen an...

Greetz
Boombuler

FireBird ist ja auch gut, aber smart will keinen Treiber (DLL) haben. Da dürfte Absolute DataBase passen, da alles was zum Zugriff gebraucht wird, in die Exe mit eingebunden wird.

smart 1. Jun 2005 13:20

Re: Datenbank realisieren, aber ohne Server und Treiber ?
 
Ich hatte mal so Komponenten für Delphi2, die erzeugten DB-Dateien. Leider bietet der Hersteller sie nicht mehr an. Delphi2 habe ich leider nicht mehr.

barf00s 1. Jun 2005 13:22

Re: Datenbank realisieren, aber ohne Server und Treiber ?
 
hmm ich schreib dir erstmaln beispiel her wie ichs >dann< machen würde ...

Delphi-Quellcode:
uses
  Classes, // TStream
  Contnrs; // TObjectList

type
  TDatensatz = class
  private
    FSpalte1: string; // oder machst aus allem nen string, je nachdem wie deine datensaetze aufgebaut werden sollen
    FSpalte2: integer;
    FSpalte3: double;
  public
    procedure LoadFromStream(Stream: TStream);
    procedure SaveToStream(Stream: TStream);
  property
    Spalte1: string read FSpalte1 write FSpalte1; // oder string read FSpalte1 write SetSpalte1; - dann müsstest dir noch private procedure SetSpalte1(const Value: string); reinbasteln
//    SpalteX...
  end;

  TDatensaetze = class(TObjectList)
  private
    function GetItems(Index: integer): TDatensatz;
    procedure SetItems(Index: integer; const Value: TDatensatz);
  public
    procedure LoadFromFile(const FileName: string);
    procedure LoadFromStream(Stream: TStream);
    procedure SaveToFile(const FileName: string);
    procedure SaveToStream(Stream: TStream);
    property Items[Index: integer]: TDatensatz read GetItems write SetItems; default;
  end;

implementation

procedure WriteStringToStream(Stream: TStream; const sText: string);
begin
  Stream.Write(Length(sText), 4); // 4 = SizeOf(Integer);
  Stream.Write(Pointer(sText)^, Length(sText));
// oder Stream.Write(sText[1], Length(sText));
end;

procedure ReadStringFromStream(Stream: TStream; var sText: string);
var
  iLength: integer;

begin
  Stream.Read(iLength, 4);
  SetLength(sText, iLength);
  Stream.Read(Pointer(sText)^, iLength);
// oder wieder Stream.Read(sText[1], iLength);
end;

{ TDatensatz }

procedure TDatensatz.LoadFromStream(Stream: TStream);
begin
  WriteStringToStream(Stream, FSpalte1);
  Stream.Write(FSpalte2, 4); // 4 = SizeOf(Integer)
  Stream.Write(FSpalte3, 8); // 8 = SizeOf(Double)
end;

procedure TDatensatz.SaveToStream(Stream: TStream);
begin
  ReadStringFromStream(Stream, FSpalte1);
  Stream.Read(FSpalte2, 4);
  Stream.Read(FSpalte3, 8);
end;

{ TDatensaetze }

function TDatensaetze.GetItems(Index: integer): TDatensatz;
begin
  if (Index > -1) and (Index < Count) then
    Result := TDatensatz(inherited Items[Index])
  else
    Result := nil;
end;

procedure TDatensaetze.LoadFromFile(const FileName: string);
var
  xFS: TFileStream;

begin
  if not FileExists(FileName) then
    Exit;
  xFS := TFileStream.Create(FileName, fmOpenRead or fmShareDenyNone);
  try
    LoadFromStream(xFS);
  finally
    FreeAndNil(xFS);
  end;
end;

procedure TDatensaetze.LoadFromStream(Stream: TStream);
var
  iCount: integer;
  iIndex: integer;
  xDatensatz: TDatensatz;

begin
  Stream.Read(iCount, 4);
  for iIndex := 0 to iCount - 1 do begin
    xDatensatz := TDatensatz.Create;
    xDatensatz.LoadFromStream(Stream);
    Add(xDatensatz);
  end;
end;

procedure TDatensaetze.SaveToFile(const FileName: string);
var
  xFS: TFileStream;

begin
  xFS := TFileStream.Create(FileName, fmCreate);
  try
    SaveToStream(xFS);
  finally
    FreeAndNil(xFS);
  end;
end;

procedure TDatensaetze.SaveToStream(Stream: TStream);
var
  iIndex: integer;

begin
  Stream.Write(Count, 4); // Count = Self.Count
  for iIndex := 0 to Count - 1 do
    Items[iIndex].SaveToStream(Stream);
end;

procedure TDatensaetze.SetItems(Index: integer; const Value: TDatensatz);
begin
  if (Index > -1) and (Index < Count) then
    Items[Index] := Value;
end;
p00h - ich hoffs iss soweit verständlich :)


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:45 Uhr.
Seite 1 von 5  1 23     Letzte »    

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