![]() |
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
|
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~ |
Re: Datenbank realisieren, aber ohne Server und Treiber ?
Zitat:
@Smart Schau dir mal Absolute Database an. André |
Re: Datenbank realisieren, aber ohne Server und Treiber ?
ich seh schon ... vergiss die frage mit den files/sequentiellen krams....
![]() |
Re: Datenbank realisieren, aber ohne Server und Treiber ?
Zitat:
|
Re: Datenbank realisieren, aber ohne Server und Treiber ?
Zitat:
|
Re: Datenbank realisieren, aber ohne Server und Treiber ?
Zitat:
Das zieh ich jeder Sequenziellen Datei vor! Naja kommt auch wieder auf die größe der Datenmengen an... Greetz Boombuler |
Re: Datenbank realisieren, aber ohne Server und Treiber ?
Zitat:
|
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.
|
Re: Datenbank realisieren, aber ohne Server und Treiber ?
hmm ich schreib dir erstmaln beispiel her wie ichs >dann< machen würde ...
Delphi-Quellcode:
p00h - ich hoffs iss soweit verständlich :)
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; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:03 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