Want to win a PS4? Go Premium and enter to win our High-Tech Treats giveaway. Enter to Win

x
?
Solved

BDE Langdriver setting at runtime

Posted on 1998-11-29
3
Medium Priority
?
2,470 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
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 2
3 Comments
 
LVL 5

Accepted Solution

by:
ronit051397 earned 200 total points
ID: 1348555
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
ID: 1348556
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
ID: 1348557
Thanks for the info.
0

Featured Post

Concerto Cloud for Software Providers & ISVs

Can Concerto Cloud Services help you focus on evolving your application offerings, while delivering the best cloud experience to your customers? From DevOps to revenue models and customer support, the answer is yes!

Learn how Concerto can help you.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

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…
In my programming career I have only very rarely run into situations where operator overloading would be of any use in my work.  Normally those situations involved math with either overly large numbers (hundreds of thousands of digits or accuracy re…
This course is ideal for IT System Administrators working with VMware vSphere and its associated products in their company infrastructure. This course teaches you how to install and maintain this virtualization technology to store data, prevent vuln…
Is your data getting by on basic protection measures? In today’s climate of debilitating malware and ransomware—like WannaCry—that may not be enough. You need to establish more than basics, like a recovery plan that protects both data and endpoints.…
Suggested Courses

610 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