AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Fehler "Zu wenig Arbeitsspeicher" beim Füllen der Datenbank
Thema durchsuchen
Ansicht
Themen-Optionen

Fehler "Zu wenig Arbeitsspeicher" beim Füllen der Datenbank

Ein Thema von Thomas2017 · begonnen am 5. Okt 2017 · letzter Beitrag vom 8. Okt 2017
 
Thomas2017

Registriert seit: 7. Mär 2017
7 Beiträge
 
#1

Fehler "Zu wenig Arbeitsspeicher" beim Füllen der Datenbank

  Alt 5. Okt 2017, 13:44
Datenbank: Fierbird embedded • Version: 2.1 • Zugriff über: Interbase
Hallo,
ich habe mich an einem kleinen Datenbank-Programm versucht und bekomme beim Füllen der Datenbank mit Daten den Fehler "Zu wenig Arbeitsspeicher",
nachdem ca. 180 000 Datensätze geschrieben wurden.

Eckdaten: Delphi 7 prof. (alle verfügbaren und relevanten Updates von Embarcadero installiert)

Bei der Datenbank handelt es sich um eine Firebird-Datenbank (embedded).
Ich nutze die Interbase-Komponenten von Delphi 7.

Hier der Teil, der den Speicherfehler verursacht:
Ich lese aus der Textdatei C:\daten.txt die Daten zeilenweise aus und
übertrage sie folgendermaßen in die Datenbank.

Delphi-Quellcode:
  AssignFile(F, 'C:\daten.txt');
  reset(F);
  repeat
    begin
      readln(F, temp);
      x := x + 1;
      form1.DataSet1.append;
      form1.DataSet1.Edit;
      form1.DataSet1.FieldByName('NAME').AsString := temp;
    end
  until eof(F);

  showmessage('...fertig. ' + inttostr(x) + ' Datensätze');
Lasse ich das Schreiben in die Datenbank weg, tritt der Fehler nicht auf.

Da es ein 32-Bit-Programm ist, beträgt der maximale (virtuelle) Speicher (da noch nicht erweitert, weil keine Ahnung wie...) 2 GB,
der durch das Programm belegt werden kann.
Zur Laufzeit werden jedoch "nur" ~500 MB RAM-Speicher belegt.
Der Rechner hat satt RAM (32 GB) und es ist auch stets genug freier Speicher vorhanden.

Ich habe testweise alle 1000 Datensätze
DataSet1.ApplyUpdates; abgesetzt, hat aber den Fehler nicht abgestellt.

Ferner habe ich
DataSet1.CachedUpdates :=false; ausprobiert, was nach meinem Kenntnisstand bewirken soll, das die Änderungen sofort in die Datenbank geschrieben werden sollen und nicht im
virtuellen Speicher zwischengespeichert werden sollen.
Das hat auch nichts gebracht.


Weiss jemand, woran es liegt und was zu tun ist?
  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 03:56 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 by Thomas Breitkreuz