Announcement

Collapse
No announcement yet.

LOCAL SHARE aus Delphi setzen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • LOCAL SHARE aus Delphi setzen

    Wie kann ich für ein Peer-to-peer Netzwerk den BDE-Parameter LOCAL SHARE von Delphi aus auf TRUE setzen?
    Danke
    Stefan

  • #2
    Hallo Stefan,

    das folgende Beispiel setzt den LEVEL-Wert der BDE für dBASE-Tabellen und ist als Hinweis für derartige Zugriffe geeignet. Über die folgenden Aufrufe kann das eigene Programm prüfen, welcher LEVEL zur Zeit gerade aktiv ist (das Beispiel verwendet eine eigene TSession-Instanz, statt dessen kann aber auch die Standard-Session »Session« verwendet werden:

    <pre>uses BDE, DrvCaps;

    procedure TForm1.Button1Click(Sender: TObject);
    var
    aSL : TStringList;
    begin
    aSL := TStringList.Create;
    try
    Session1.GetConfigParams('\DRIVERS\DBASE\TABLE CREATE', '%', aSL);
    ListBox1.Items := aSL;
    finally
    aSL.Free;
    end;
    end;</pre>

    Wenn dort noch die Zeile »LEVEL=5« zurückgeliefert wird, kann über den folgenden Aufruf der Level von 5 auf 7 erhöht werden:

    <pre>procedure TForm1.Button2Click(Sender: TObject);
    var
    aSL : TStringList;
    begin
    aSL := TStringList.Create;
    aSL.Add('LEVEL=7');
    try
    Session1.ModifyDriver('DBASE', aSL);
    Session1.SaveConfigFile;
    finally
    aSL.Free;
    end;
    end;
    </pre>

    Allerdings ist diese Änderung erst beim nächsten Programmstart wirksam (die Einschränkung gilt aber auch für alle Änderungen, die man von Hand in der BDE-Verwaltung vornimmt).

    Sollte es mit diesem Weg trotzdem Probleme geben, steht immer noch die Option des direkten Zugriffs auf den <b>Registry</b>-Zweig der BDE zur Verfügung:
    </pre>
    [HKEY_LOCAL_MACHINE\SOFTWARE\Borland\Database Engine\Settings\SYSTEM\INIT]<br>
    "VERSION"="1.0"]<br>
    "LOCAL SHARE"="FALSE" <br>
    "MINBUFSIZE"="128"<br>
    "MAXBUFSIZE"="2048"<br>
    "LANGDRIVER"="intl"<br>
    "MAXFILEHANDLES"="48"<br>
    "SYSFLAGS"="0"<br>
    "LOW MEMORY USAGE LIMIT"="32"<br>
    "AUTO ODBC"="FALSE"<br>
    "DEFAULT DRIVER"="PARADOX"<br>
    "SQLQRYMODE"=""<br>
    "SHAREDMEMSIZE"="4096"<br>
    "SHAREDMEMLOCATION"=""<br>
    "DATA REPOSITORY"="Sample Data Dictionary"<br>
    "MEMSIZE"="32"<br>
    "MTS POOLING"="TRUE"<br>
    </pre&gt

    Comment


    • #3
      Hallo Stefan,
      habe ein änliches Problem: bei jeder Installation mit Install Shield erstellten Installationen wird Local Share auf false gesetzt. Aufgrund des oben genannten Hinweises versuche ich den Wert LOCAL SHARE wärend der Installation an der Stelle HKEY_LOCAL_MACHINE\Software\Borland\Database Engine\Settings\SYSTEM\INIT auf TRUE zu setzten. Kann dies aber erst Montag auf einem Zielnetzwerkrechner ausprobieren.
      Habe die Beispiele oben durchprobiert und festgestellt, das es zwar Session1.ModifyDriver gibt aber nichts vergleichbares für SYSTEM. Mann muss wohl direkt die Registrierung bearbeiten. Eine Abfrage ob local Share auf true gesetzt ist, wäre aus Sicherheitsgründen sehr sinvoll. Mit TRegistry habe ich noch nicht gearbeitet.
      Im Buch Delphi 3 Datenbankentwicklung von Andreas Kosch auf Seite 144 ist ein Beispiel zur Abspeicherung der Fensterposition in der Registrierung mit privaten Pfad dargestellt.

      gruss jen

      Comment

      Working...
      X