Delphi-PRAXiS
Seite 1 von 4  1 23     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Fehler: zu wenig Arbeitsspeicher für Datenbank (https://www.delphipraxis.net/134244-fehler-zu-wenig-arbeitsspeicher-fuer-datenbank.html)

BAMatze 18. Mai 2009 14:01

Datenbank: DBE- Table • Version: 2007 • Zugriff über: dynamisch

Fehler: zu wenig Arbeitsspeicher für Datenbank
 
Hallo nochmal an alle DP´ler,

Wusste jetzt nicht, in welche Sparte ich das Posten sollte, da ich eigentlich eine Komponente derzeit vorbereite, die eine Datenbank-Anbindung beinhaltet aber da ich derzeit nur bei der Implementierung der Datenbank stecke, habe ich für diese Sparte entschieden.

Also ich habe folgenden Code für meine Datenbank erstellt:
Delphi-Quellcode:
unit TischDatenbank;

interface

uses Classes, Controls, DBTables, DB, DBCtrls, Dialogs, Graphics;

const DatenbankFile = 'Sensordatenbank.db';

Type TTischDatenbank = class(TWinControl)
  private
    FTable: TTable;
    FTBTableSensorname: TStringfield;
    FTBVersuchstabelleSpleisspositionrechts: TFloatField;
    FTBVersuchstabelleSpleisspositionlinks: TFloatField;
    FTBVersuchstabelleMantellaenge: TFloatField;
    FTBVersuchstabelleGap: TFloatField;
    FTBVersuchstabelleManteldurchmesser: TFloatField;
    FDataSource: TDataSource;
    FDBNavigator: TDBNavigator;
    FDBEdit: TDBEdit;
    function CreateTable: TTable;
    function CreateDataSource: TDataSource;
    function createDBNavigator: TDBNavigator;
    function createTDBEdit: TDBEdit;
  protected
    //procedure CreateWnd; override;
  published

  public
    constructor create(AOwner: TComponent);

end;

implementation

constructor TTischDatenbank.create(AOwner: TComponent);
begin
  inherited create(AOwner);
  Controlstyle := Controlstyle - [csAcceptsControls];
  Visible := true;
  Color := clBlack;
  Width := 300;
  Height := 300;
  FTable := CreateTable;
  //FDataSource := CreateDataSource;
  //FDBNavigator := CreateDBNavigator;
end;

function TTischDatenbank.CreateTable: TTable;
begin
  result := TTable.Create(nil);
  result.TableName := DatenbankFile;
  result.TableType := ttParadox;
 
  if not result.Exists then // <--- hier kommt der Fehler
    begin
      Showmessage('Die Datenbankdatei "Sensorendaten.db" konnte nicht gefunden werden');
      Enabled := false;
    end
  else result.Open;
  {FTBTableSensorname := TStringField.create(nil);
  result.Fields.Add(FTBTableSensorname);
  {result.Fields.Add(FTBVersuchstabelleSpleisspositionrechts);
  result.Fields.Add(FTBVersuchstabelleSpleisspositionlinks);
  result.Fields.Add(FTBVersuchstabelleMantellaenge);
  result.Fields.Add(FTBVersuchstabelleGap);
  result.Fields.Add(FTBVersuchstabelleManteldurchmesser); }
  //result.CreateTable;
end;

function TTischDatenbank.CreateDataSource: TDataSource;
begin
  result := TDataSource.Create(nil);
  result.DataSet := FTable;
end;

function TTischDatenbank.createDBNavigator: TDBNavigator;
begin
  result := TDBNavigator.Create(nil);
  result.Parent := Self;
  result.DataSource := FDatasource;
  result.Left := 10;
  result.Top := 10;
  result.Width := 200;
  result.Height := 20;
end;

function TTischDatenbank.createTDBEdit: TDBEdit;
begin
  result := TDBEdit.Create(nil);
  result.Parent := Self;
  result.Enabled := true;
  result.DataSource := FDataSource;
  //result.DataSource.DataSet := FTable;
  result.DataField := FTBTableSensorname.FieldName;
  result.Left := 10;
  result.Top := 50;
  result.Width := 100;
  result.Height := 20;
end;

{procedure TTischDatenBank.CreateWnd;
begin
  //FDBEdit := CreateTDBEdit;
end;}

end.
Die db-Datei existiert und es hat auch bis ebend sehr gut funktioniert, bis auf einmal die Meldung in der gekennzeichneten Zeile kommt, dass zu wenig Arbeitsspeicher vorhanden ist. Habe alle Änderungen, welche ich seit der funktionierenden Version, rückgängig gemacht (glaube ich :-D ) trotzdem bleibt der Fehler.

mkinzler 18. Mai 2009 14:04

Re: Fehler: zu wenig Arbeitsspeicher für Datenbank
 
Alle Anwendungen, welche die BDE verwenden (auch die IDE) beenden und neu starten.
Das ist einer der Gründe, warum man die BDE nicht mehr verwenden sollte.

BAMatze 18. Mai 2009 14:07

Re: Fehler: zu wenig Arbeitsspeicher für Datenbank
 
Zitat:

Zitat von mkinzler
Alle Anwendungen, welche die BDE verwenden (auch die IDE) beenden und neu starten.
Das ist einer der Gründe, warum man die BDE nicht mehr verwenden sollte.

Passiert sowas oft?

hoika 18. Mai 2009 14:08

Re: Fehler: zu wenig Arbeitsspeicher für Datenbank
 
Hallo,

Ursache ist, dass du das Programm beim Debuggen wohl manchmal abschiesst,
die BDE bleibt aufgrund der offenen IDE aber auch offen.

Die BDE benutzt intern ein paar begrenzte Speicher,
die dann irgendwann voll sind.


Heiko

mkinzler 18. Mai 2009 14:10

Re: Fehler: zu wenig Arbeitsspeicher für Datenbank
 
Zitat:

Passiert sowas oft?
Hin und wieder bis oft.

BAMatze 18. Mai 2009 14:11

Re: Fehler: zu wenig Arbeitsspeicher für Datenbank
 
Also bleibt mir doch nur auf externe Komponenten zurückzugreifen, wenn ich nicht alles in Ini oder Excel über Ole speichern will?

mkinzler 18. Mai 2009 14:13

Re: Fehler: zu wenig Arbeitsspeicher für Datenbank
 
Ist IBX nicht Teil von TDE? Sonst wären vielleicht Zeos einen Blick wert ( auf jeden Fall für lokale/embedded Datenbestände)

hoika 18. Mai 2009 14:17

Re: Fehler: zu wenig Arbeitsspeicher für Datenbank
 
Hallo,

Zitat:

Hin und wieder bis oft.
Moment ! ;)

Das kommt drauf an.

Bsp. 1
TTable wird im Design-Mode schon geöffnet
-> besser erst zur Laufzeit öffnen

Bsp2:
excessives Nutzen von Ctrl+F2.
-> besser das Programm sauber beenden.


Heiko

nahpets 18. Mai 2009 14:24

Re: Fehler: zu wenig Arbeitsspeicher für Datenbank
 
Hallo,

welche Datenmenge?

Wenn's wenig ist, schau Dir mal TDBF an, kann mit dBase-Tabellen umgehen, braucht keine BDE und keinen (wie auch immer gearteten) Datenbankserver. Für kleinere Sachen durchaus brauchbar.

Hoika nennt die wesentlichen Ursachen für Probleme mit der BDE, bei "sachgerechter" Nutzung läuft sie durchaus über lange Zeiträume stabil.

mkinzler 18. Mai 2009 14:26

Re: Fehler: zu wenig Arbeitsspeicher für Datenbank
 
Trotzdem würde ich heute keine (Neu-)Programm mehr damit entwickeln bzw. den Umgang mit der BDE erlernen


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:28 Uhr.
Seite 1 von 4  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