Programmieren mit dBASE PLUS: BDE-Einstellungen optimieren

Aus Wikibooks
Zur Navigation springen Zur Suche springen
Wikibooks buchseite.svg Zurück zu Inhaltsverzeichnis | One wikibook.svg Hoch zu Regal EDV | Wikibooks buchseite.svg Vor zu Inhaltsverzeichnis


Die Standardeinstellungen der BDE sind für heutige Computer, die über reichlich Hauptspeicher verfügen, nicht optimal. Um die zur Verfügung stehende Leistung besser auszuschöpfen wird empfohlen, bei einigen Eigenschaften höhere Werte einzutragen.

Das folgende Programm wurde in den dBASE Newsgroups veröffentlicht. Es liest die BDE-Einstellungen aus der Windows-Registry und passt die Werte entsprechend an. (Den Programmcode als bdeConfig.prg speichern und ausführen.)

// bdeConfig.prg
// Gepostet von Jan Hölterling in den dBASE Newsgroups

#include <windef.h>
#include <winreg.h>
#define CR chr(13)+chr(10)

set procedure to :samples:registry.prg additive

reg = new registry(HKEY_LOCAL_MACHINE, ;
 "SOFTWARE\Borland\Database Engine\Settings\SYSTEM\INIT" )
lsh=reg.queryValue("LOCAL SHARE")
mbs=reg.queryValue("MINBUFSIZE")
xbs=reg.queryValue("MAXBUFSIZE")
ldr=reg.queryValue("LANGDRIVER")
mfh=reg.queryValue("MAXFILEHANDLES")
mms=reg.queryValue("MEMSIZE")
mstring=""
mchgmade=false

if lsh <> "TRUE"
  mstring=mstring+"LOCAL SHARE von "+lsh+" auf TRUE"+CR
  reg.setvalue("LOCAL SHARE","TRUE")
  mchgmade=true
endif

if val(mbs) < 2048
  mstring=mstring+"MINBUFSIZE von "+mbs+" auf 2048."+CR
  reg.setvalue("MINBUFSIZE","2048")
  mchgmade=true
endif

if val(xbs)< 8192
  mstring=mstring+"MAXBUFSIZE von "+mbs+" auf 8192."+CR
  reg.setvalue("MAXBUFSIZE","8192")
  mchgmade=true
endif

if LDR <> "DBWINWE0"
  mstring=mstring+"LANGDRIVER von "+ldr+" auf DBWINWE0."+CR
  reg.setvalue("LANGDRIVER","DBWINWE0")
  mchgmade=true
endif

if val(mfh) < 2048
  mstring=mstring+"MAXFILEHANDLES geändert von "+mfh+" auf 2048."+CR
  reg.setvalue("MAXFILEHANDLES","2048")
  mchgmade=true
endif

if val(mms) < 32
  mstring=mstring+"MEMSIZE von "+mms+" auf 32."+CR
  reg.setvalue("MEMSIZE","32")
  mchgmade=true
endif

release reg
reg = new registry(HKEY_LOCAL_MACHINE, ;
  "Software\Borland\Database Engine\Settings\DRIVERS\DBASE\INIT" )
ldr=reg.queryValue("LANGDRIVER")

if LDR <> "DBWINWE0"
  mstring=mstring+"dbase LANGDRIVER from "+ldr+" to DBWINWE0."+CR
  reg.setvalue("LANGDRIVER","DBWINWE0")
  mchgmade=true
endif

release reg
reg= new registry(HKEY_LOCAL_MACHINE, ;
"Software\Borland\Database Engine\Settings\DRIVERS\DBASE\TABLE CREATE" )
lvl=reg.queryValue("LEVEL")
if lvl<>"7"
  mstring=mstring+"LEVEL von "+lvl+" auf 7."+CR
  reg.setvalue("LEVEL","7")
  mchgmade=true
endif

release reg
close procedure :samples:registry.prg

if mchgmade
  msgbox("Die folgenden BDE-Einstellungen wurden geändert:"+CR+mstring+;
  "Das Programm muss neu gestartet werden, damit die neuen Einstellungen wirksam werden.";
  ,"Information",64)
  // Ergänzung von Bernd Hohenester
  // Neustart programmgesteuert auslösen
  run(true, _app.exeName)
 
  // Programm beenden
  quit
else
  msgbox("Die BDE-Einstellungen sind in Ordnung, es wurden keine Änderungen vorgenommen."; 
  ,"Information", 64)
endif