关于数据库应用程序的紧急求助!(100分)

  • 主题发起人 主题发起人 qxue
  • 开始时间 开始时间
Q

qxue

Unregistered / Unconfirmed
GUEST, unregistred user!
我编了一个数据库应用程序,其中设置了
数据库别名‘testtj’,还用到几个已存在的
数据库,放在‘database’子目录下。
我的程序,要在win。ini中加入以下语句:
[testtj]
path=c:/xwb
请问如何在installshield中设置?
(我用的市installshieldexpress for delphi4。0)
还有一个问题,以上程序我作成安装程序后,通过
手动设置win。ini,在一些装过delphi4的机器上
能够应用,而在没装过delphi4的机器上不能运行
并显示如下语句:
list index out of bouns(0)。
请高人指点。
(安装选项我只选了BDE完全安装,是否有影响?)
谢谢。


 
第一个问题你可以用register的键值来代替
或者在你程序第一次运行的使用编辑win.ini
(你不会总加入c;/xwb吧? 你可以取得当前你应用程序的路径的: TApplication.ExeName)
第二个问题你提供的信息太少了
是不是你用了第三方的控件?
 
第二个问题我的意思是
因为第一个问题没有解决,
因而程序无法直接安装后运行。
因此我直接去改win.ini,旧可以用了。
一台电脑装有delphi4,我的程序用以上方法旧能运行。
另一台电脑装的是delphi1,用以上方法不能运行,并显示
前面所说的语句。
我想之所以这样,可能市建立安装程序时,我只选了
full BDE。再装有delphi4的电脑上,程序利用了有关设置,因而可以
运行。而另一台电脑,没有delphi4的设置,所以不能用。
我的意思市,对于这个数据库,再建立安装程序市,
到底应选身摸选乡。为身摸出现上面的显示?
(我的数据库只用到了简单的sql查询。)
thankyou.

 
yifeng:
如何设置register
能说具体点吗?
另外,刚才忘说了,
我没用第三方控件。
 
yifeng: ini 有什么不好?我一直用
不过不要写WIN。INI,可以建立自己的INI,installsheilder EXPRESS。有编辑
INI文件这个向导的呀。可以放在<windir>中。
问题2:
 
1.访问registry的例子:
uses
Registry, Windows;
var
TheReg: TRegistry;
KeyName: String;
ValueStr: String;
begin
TheReg := TRegistry.Create;
try
TheReg.RootKey := HKEY_CURRENT_USER;
KeyName := 'Software/MyTinyApp/StartUp;
if TheReg.OpenKey(KeyName, False) then
begin
ValueStr := TheReg.ReadString('WorkPath');
TheReg.CloseKey;
end;
finally
TheReg.Free;
end;
end;

2.写Registry
uses
Registry, Regstr;
var
TheReg: TRegistry;
KeyName: String;
begin
TheReg := TRegistry.Create;
try
{Check AppPath setting, update if necessary}
TheReg.RootKey := HKEY_LOCAL_MACHINE;
KeyName := REGSTR_PATH_APPPATHS + ExtractFileName(Application.ExeName);
if TheReg.OpenKey(KeyName, True) then
begin
if CompareText(TheReg.ReadString(''), Application.ExeName) <> 0 then
TheReg.WriteString('', Application.ExeName);
TheReg.CloseKey;
end;
finally
TheReg.Free;
end;
end;

3. 你可以在installshield中创建registry key
 
cj, 当然可以用自己的ini,我也这么用
可是全局一点的东西还是放在registry里面比较好
这可是win95的进步之处啊,总不能把win.ini搞的像垃圾堆一样把 :-)
 
win.ini 最不好
Registry 比较不好
自己的INI 好
人家要INI,你偏要REGISTRY。
INI用TINIFILE类
var
inif:Tinifile;
begin
inif := tinifile.create(your file name);//好象自动在WIN目录下
inif.writestring('secon','key','value');
end;
 
hehe,看你们两个吵吵的厉害,俺也来凑热闹
1。我也爱用INI文件
2。建议QUE 在程序里动态创建自己的INI文件
3。下面是你所写
“一台电脑装有delphi4,我的程序用以上方法旧能运行。另一台电脑装的是delphi1,用以上方法不能运行,并显示前面所说的语句。”
怎么会有DELPHI1, 难道你把一个 WIN95 32位程序装到了 WINDOWS 3。1里吗?
即使DELPHI1没有装在 WIN31里,你的错误也可以解释为 BDE初始化错误
因为DELPHI1所带的BDE版本实在太低了。 你用DELPHI4写的程序再用
DELPHI1里带的BDE去支持,那可要保不准就出错。
 
大可不必修改Win.ini,本人的做法是:
建立自己的文本文件如TKConf.ini,并将其置入Windows目录下/For NT则放入
WinNT目录下,这样便于管理和修改重置,也便于安装程序的实现。
直接读取Win.ini弊端太多,不便于数据库路径的改变。
数据库的存在路径全由TKConf.ini来决定,如:
[系统路径]
_DBpath = 'c:/temp/tkprg/课程库'
_SysDBpath = 'c:/temp/tkprg/tkdbf'
_NewDBpath = 'c:/temp/tkprg/成卷库'
[系统标题]
_SysTitle = '山东工业大学'
 
建议象这样少的配置信息写入Registry 比较好,
因为如果都把自己程序的配置单独写成INI放入系统目录,系统目录会成垃圾堆
如果都把自己程序的配置单独写成INI放入win.ini,win.ini会成垃圾堆
 
如果都把自己程序的配置放入Registry ,Registry也会成垃圾堆
 
呵呵,比较好的做法是: 和delphi一样,registry和ini结合
全局的东西,其他程序要用的信息或者其他你认为比较重要的信息放在registry里
相对比较安全
程序的私用资料或者用户一些设定值可以放到自己的ini里,这些ini即使丢掉也没什
么大问题,可以通过default值重新生成
 
q1:
installshield可方便地在REGIST里改东西;而且可以使用相对路径。
如<WindowsPath>到安装后就是你的WINDOWS95安装的目录,如:
c:/windows;d:/pwin97
q2:
bde的版本太低了
 
各位的建议都很好,谢谢大家。
由于特殊原因,程序不能改了。
我最需要的,是在installshield中如何设置
以便能更改win.ini.

to
CJ:
编辑INI文件这个向导
再哪?怎摸用?
 
sorry:是向导中的一个版面
 
多人接受答案了。
 
后退
顶部