为便于说明,假设主窗体名称为Form1,通过一命令钮Button1注册ODBC数据源。具体根据读者需要自行设定。
procedure TForm1.Button1Click(Sender: TObject);varI : Integer;
J : double;
RegF: TextFile;
SysDir: PChar;
AppPath, Params, Path, DbPath: string;begin
try
//生成注册用的批处理文件
Params :=′Regedit/s tmp.reg′; //批处理文件内容AppPath := ExtractFilePath(Application.ExeName); //取得应用程序当前路径AssignFile(RegF, AppPath+′Reg.Bat′); //指定批处理文件路径和名称ReWrite(RegF); //创建和打开指定的文本文件WriteLn(RegF, Params); //将注册命令批处理内容写入文件CloseFile(RegF);//生成注册表文件GetMem(SysDir, 255);GetSystemDirectory(SysDir, 255); //取得Windows系统目录Path := String(SysDir);Path := InsertSplash(Path); //将类似C:\WINDOWS\SYSTEM变为C:\\WINDOWS\\SYSTEMDelete(AppPath, Length(AppPath), 1); //将字符串尾部′\′字符删除DbPath := InsertSplash(AppPath); //取得数据库存放路径Params := Format(OdbcStr, [Path, DbPath]);AssignFile(RegF, AppPath+′Tmp.Reg′);ReWrite(RegF);WriteLn(RegF, Params);CloseFile(RegF);//通过Api函数执行reg.bat, Uses中加入对ShellApi的引用If ShellExeCute(Application.Handle,′Open′,′Reg.bat′,′′, PChar(AppPath), SW_HIDE) $#@60;= 32
then
Showmessage(′导入注册表文件信息失败′);finallyFreeMem(SysDir);end;end;上述代码调用了一字符串处理函数InsertSplash,用于将路径字符串中所有的′\′处理为′\\′;这样做是必需的,否则,上述注册信息DRIVER和DBQ项无法正确注册。InsertSplash函数代码如下:
function InsertSplash(AStr: string): string; //需要在单元公有部分进行函数声明var
I : Integer;begin
For I := 1 to Length(AStr) do
case AStr[I] =′\′of
True : Result := Result+′\\′;
False: Result := Result+AStr[I];end;上述操作实现ODBC数据源的动态注册并没有通过Delphi特有的功能去完成,而只是通过文件读写功能,根据具体安装环境,生成ODBC数据源注册信息和批处理文件,以完成ODBC数据源的注册。这种实现方法不依赖于某种特定的开发工具,不需要通过手工进行ODBC数据源的配置,具有通用性强和操作简单的特点。而且,用上述同样的方法,读者也可编写能够注册其它类型数据源的程序,甚至,写成ODBC注册动态连接库,以利于程序复用。
静态页面:http://www.qqread.com/other-database/a225904001.html
相关图文阅读
频道图文推荐
健 康 咨 询
时 尚 咨 询
相关专题
- 基于pureXML技术的数据库表结构扩展 (4次浏览)
- 如何获得当前数据库对象依赖关系 (0次浏览)



