Announcement

Collapse
No announcement yet.

LANGDRIVER-Einstellung bei DBASE-Treiber aus Programm ändern

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

  • LANGDRIVER-Einstellung bei DBASE-Treiber aus Programm ändern

    Hallo,

    ich möchte den LandDriver des dBase-Treibers aus dem Programm heraus ändern. Über einen lokalen Alias mittels TDatabase bzw. TSession habe ich es schon erfolglos probiert. Es gibt den Parameter LangDriver leider nicht. Hat jemand eine Idee. Irgendwelche BDE-Api-Funktionen? Oder geht es nur über die Registry-Einträge der BDE?

    Gruß Thorsten

  • #2
    Hallo, <p>
    bei Borland habe ich dazu mal eine Prozedur gefunden, die dieses Problem löst. Sie wird folgendermaßen benutzt:
    <pre>
    SetConfigParameter('\DRIVERS\DBASE\INIT\;LANGDRIVE R','DB850DE0');
    </pre>

    <pre>
    {only for BDE 4.51 and later!}
    procedure SetConfigParameter(Param: string; Value: string);
    var
    hCur: hDBICur;
    rslt: DBIResult;
    Config: CFGDesc;
    Path, Option: string;
    Found: boolean;
    Temp: array[0..255] of char;
    begin
    hCur := nil;
    Found := False;
    try
    if Pos(';', Param) = 0 then
    raise EDatabaseError.Create('Invalid parameter passed to function. There must ' +
    'be a semi-colon delimited sting passed');
    Path := Copy(Param, 0, Pos(';', Param) - 1);
    Option := Copy(Param, Pos(';', Param) + 1, Length(Param) - Pos(';', Param));
    Check(DbiOpenCfgInfoList(nil, dbiREADWRITE, cfgPERSISTENT, StrPCopy(Temp, Path), hCur));
    repeat
    rslt := DbiGetNextRecord(hCur, dbiNOLOCK, @Config, nil);
    if rslt = DBIERR_NONE then
    begin
    if StrPas(Config.szNodeName) = Option then
    begin
    StrPCopy(Config.szValue, Value);
    Check(DbiModifyRecord(hCur, @Config, FALSE));
    Found := True;
    break;
    end;
    end
    else
    if rslt <> DBIERR_EOF then
    Check(rslt);
    until rslt <> DBIERR_NONE;
    if Found = False then
    raise EDatabaseError.Create(Param + ' entry was not found in configuration file');
    finally
    if hCur <> nil then
    Check(DbiCloseCursor(hCur));
    end;
    end;
    </pre&gt

    Comment


    • #3
      Hallo Bruno,

      tausend Dank. Hat einfach funktioniert. Kannst Du mir eventuell noch sagen, wo genau Du auf die Antwort gestoßen bist ( für die Zukunft ).

      Danke und Grüße
      Thorste

      Comment


      • #4
        Hallo Thorsten,<p>
        ich weiss es leider nicht mehr. Aber es war irgendwo bei Borland (vielleicht Codecentral). Mir fehlt mittlerweile ein Programm zum Verwalten von Snipplets...

        Comment

        Working...
        X