Entwickler-Ecke

Datenbanken - BDE-Admin-Config. zur Laufzeit ändern


kiwicht - Do 30.01.03 00:13
Titel: BDE-Admin-Config. zur Laufzeit ändern
Hallöle..

ist es möglich Configurations-Daten des BDE-Admin zur Laufzeit zu ändern?
Hintergrund: Meine Datenbank zeigt die enthaltenen deutschen Umlaute nur an, wenn ich im BDE-Admin unter Config. - Drivers - Native - DBase den Language-Driver auf dBase Deu cp850 stelle. Das will ich natürlich meinen Usern nicht zumuten, daher mein Anliegen....

vielen Dank für die (nächtliche) Aufmerksamkeit

mfg
kiwicht


bis11 - Mi 05.02.03 14:00

Steht das nicht irgendwo in der Registry ?


kiwicht - Mi 05.02.03 14:48

meines erachtens nicht, da kann ich alles mögliche einstellen, aber leider keine sprachtreiber.... ich dachte es gibt vielleicht in delphi irgendeine procedure, die einen anderen sprachtreiber lädt?!?

:?


smiegel - Mi 05.02.03 15:11

Hallo,

das Beispiel ändert in der Procedure Button2Click den Sprachtreiber in das von Dir gewünschte Format.

In der Listbox (Button1Click) werden alle Einträge, die Du im BDE-Admin unter "Konfiguration" - "System" - "INIT" siehst, aufgelistet.


Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
uses
  BDE, DBTables;

procedure TForm1.Button1Click(Sender: TObject);
var
  hCursor:HDBICur;
  aConfig:CFGDesc;
begin
  ListBox1.Items.Clear;
  Session.Open;
  Check(DbiOpenCfgInfoList(nil, dbiREADWRITE, cfgPERSISTENT, '\SYSTEM\INIT', hCursor));
  try
    while (DbiGetNextRecord(hCursor, dbiNOLOCK, @aConfig, nil)=0) do
      ListBox1.Items.Add(Format('%s=%s', [aConfig.szNodeName, aConfig.szValue]));
  finally
    DbiCloseCursor(hCursor);
  end; // try
end;


procedure TForm1.Button2Click(Sender: TObject);
var
  hCursor:HDBICur;
  aConfig:CFGDesc;
begin
  Session.Open;
  Check(DbiOpenCfgInfoList(nil, dbiREADWRITE, cfgPERSISTENT, '\SYSTEM\INIT', hCursor));
  try
    while (DbiGetNextRecord(hCursor, dbiNOLOCK, @aConfig, nil)=0) do
    if (aConfig.szNodeName='LANGDRIVER') then
    begin
      aConfig.szValue:='DB850DE0';
      Check(DbiModifyRecord(hCursor, @aConfig, True));
    end; // if
  finally
    DbiCloseCursor(hCursor);
  end; // try
end;


kiwicht - Do 06.02.03 11:49

jepp..... sehr schön.. danke, werd das mal testen! :D


smiegel - Do 06.02.03 17:41

Hallo,

was hat Dein Test ergeben? Funktionierts?


kiwicht - Fr 07.02.03 11:02

ein breites grinen von links nach rechts.. :D ... funktioniert einwandfrei! dankeschön! :) :)