AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Unerklärliche CPU-Auslastung nach Datenbankspeicherung
Thema durchsuchen
Ansicht
Themen-Optionen

Unerklärliche CPU-Auslastung nach Datenbankspeicherung

Ein Thema von Puddi · begonnen am 2. Nov 2005 · letzter Beitrag vom 2. Nov 2005
Antwort Antwort
Benutzerbild von Puddi
Puddi

Registriert seit: 25. Sep 2005
20 Beiträge
 
Delphi 2005 Architect
 
#1

Unerklärliche CPU-Auslastung nach Datenbankspeicherung

  Alt 2. Nov 2005, 14:20
Datenbank: Paradox • Zugriff über: ODBC?
Ahoi!

Ich hätte folgendes Problem: ich möchte meine Datenbank nach jeder Änderung physisch (d.h. die Post-Methode reicht mir nicht) auf der Festplatte speichern. Dazu wird im AfterPost-Ereignis die folgende Prozedur aufgerufen:

Delphi-Quellcode:
procedure TForm1.Datenbank2Disk(Datenbank: TDataSet);
var LetzterIndex: Word;
begin
  LetzterIndex:=Datenbank.RecNo;
  with Datenbank do
  begin
    Close;
    Open;
    Edit;
    RecNo:=LetzterIndex;
  end;
  // ShowMessage('Trallala.');
end;
Die Variable "LetzterIndex" soll gewährleisten, dass nach der Speicherung wieder auf den letzten Datensatz zurückgesprungen wird. Dies funktioniert soweit alles auch ganz gut.

Problematisch wird es aber, wenn ich im unmittelbaren Anschluss an die with-Anweisung den ShowMessage-Befehl (oder auch andere Befehle) gebe. Das Dialogfenster wird dann nur halbfertig angezeigt (d.h. kein Button vorhanden und wo der Text erscheinen sollte gibt es nur einen weissen Balken). Zudem zeigt der Taskmanager eine Programmauslastung von 98% an und das Programm reagiert nicht mehr. Gebe ich nach dem with-Block innherhalb der Prozedur keine Anweisung mehr, gibt es dieses Problem nicht.

Weiß jemand, woran das liegen könnte?
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.197 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: Unerklärliche CPU-Auslastung nach Datenbankspeicherung

  Alt 2. Nov 2005, 14:23
Ergänz einfach mal ein Application.ProcessMessage vor dem Dialog.

Und vor allem gehst Du wirklich über ODBC und nicht direkt mit der BDE auf die Paradox-Datenbank?

Außerdem ist nicht unbeding gesagt das diese Lösung 100% funktioniert, da das Betriebssystem und die Festplatte ebenfalls noch Caches besitzen und diese du nicht so ohne weiteres "leeren" kannst.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#3

Re: Unerklärliche CPU-Auslastung nach Datenbankspeicherung

  Alt 2. Nov 2005, 14:41
Zitat von Puddi:
ich möchte meine Datenbank nach jeder Änderung physisch (d.h. die Post-Methode reicht mir nicht) auf der Festplatte speichern.
Dazu solltest du DbiSaveChanges verwenden.
Damit sind dann deine ganzen Klimmzüge mit Open und Close überflüssig.
http://info.borland.com/devsupport/b...vechanges.html
Übrigens: Paradox ist keine richtige Datenbank, sondern nur eine Ansammlung von Tabellen, die als Dateien gespeichert werden.
Andreas
  Mit Zitat antworten Zitat
supermuckl

Registriert seit: 1. Feb 2003
1.340 Beiträge
 
FreePascal / Lazarus
 
#4

Re: Unerklärliche CPU-Auslastung nach Datenbankspeicherung

  Alt 2. Nov 2005, 14:56
wird dein showmessage evtl aus einem thread aufgerufen? dann könnte das das problem mit der grafik und cpu auslastung sein
Das echte Leben ist was für Leute...
... die im Internet keine Freunde finden!
  Mit Zitat antworten Zitat
Benutzerbild von Puddi
Puddi

Registriert seit: 25. Sep 2005
20 Beiträge
 
Delphi 2005 Architect
 
#5

Re: Unerklärliche CPU-Auslastung nach Datenbankspeicherung

  Alt 2. Nov 2005, 17:45
Zitat von Bernhard Geyer:
Und vor allem gehst Du wirklich über ODBC und nicht direkt mit der BDE auf die Paradox-Datenbank?
Jo schulligung, das meinte ich eigentlich auch. Bin noch relativ neu im Geschäft .

Shmias Vorschlag hat das Problem in der Tat gelöst. Den Aufruf von Application.ProcessMessages hatte ich zuvor auch probiert, der Effekt war jedoch der gleiche (Absturz).

Danke nochmal an alle!
  Mit Zitat antworten Zitat
Antwort Antwort


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 08:32 Uhr.
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