Solved

BDE Langdriver setting at runtime

Posted on 1998-11-29
3
2,309 Views
Last Modified: 2013-11-23
I have some problems with the BDE 'langdriver' parameter.

I have to use german character codes with different ODBC drivers (COBOL ISAM, ORACLE, MS_SQL,..). On some systems I get correct characters, on others I don't. I found that the problem is, that as default there is no entry in the 'lngdriver' parameter of driver in the BDE (V4.51). Once I set this to 'WEUROPE (ANSI)' via BDE-Admin everything works nicely.

My question is: How can I set the 'langdriver' parameter at runtime? I tried TDataSet.Params but this did not work.

Thank you! Roadrunner
0
Comment
Question by:Roadrunner100598
  • 2
3 Comments
 
LVL 5

Accepted Solution

by:
ronit051397 earned 50 total points
Comment Utility
To change the LANGDRIVER to WEUROPE (ANSI) in a Paradox Table, write:

 SetConfigParameter('\DRIVERS\PARADOX\INIT\;LANGDRIVER','WEUROPE (ANSI)');

uses BDE, DBTables, DB;

    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
      Check(dbiInit(Nil));
        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));
        DbiExit;
      end;
    end;
0
 
LVL 1

Author Comment

by:Roadrunner100598
Comment Utility
Thank you Ronit for the excellent answere!

I had to work out two minor problems myself - so just for the record:

For ODBC drivers the LangDriver Parameter is in the path
\DRIVERS\Name of ODBC Driver\DB OPEN\

If the ODBC driver name contains spaces, a backslash has to end the path - otherwise the last backslash is added automatically.
0
 
LVL 5

Expert Comment

by:ronit051397
Comment Utility
Thanks for the info.
0

Featured Post

What Security Threats Are You Missing?

Enhance your security with threat intelligence from the web. Get trending threat insights on hackers, exploits, and suspicious IP addresses delivered to your inbox with our free Cyber Daily.

Join & Write a Comment

Suggested Solutions

This article explains how to create forms/units independent of other forms/units object names in a delphi project. Have you ever created a form for user input in a Delphi project and then had the need to have that same form in a other Delphi proj…
Objective: - This article will help user in how to convert their numeric value become words. How to use 1. You can copy this code in your Unit as function 2. than you can perform your function by type this code The Code   (CODE) The Im…
It is a freely distributed piece of software for such tasks as photo retouching, image composition and image authoring. It works on many operating systems, in many languages.
This video gives you a great overview about bandwidth monitoring with SNMP and WMI with our network monitoring solution PRTG Network Monitor (https://www.paessler.com/prtg). If you're looking for how to monitor bandwidth using netflow or packet s…

771 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

9 Experts available now in Live!

Get 1:1 Help Now