关于定型文件的问题
请问谁用过定型文件,它主要是在你执行一系列程序之后生成的一个文本文件
当用户下次还做同样的一系列操作时,直接选择按定型文件执行,即可实现上次同样
的操作。请问这应该如何实现,需要用到 API 函数么?
问题点数:50、回复次数:13Top
1 楼xiaoxiao5055(xiaoxiao)回复于 2003-06-04 10:15:22 得分 0
请问谁用过定型文件,它主要是在你执行一系列程序之后生成的一个文本文件
当用户下次还做同样的一系列操作时,直接选择按定型文件执行,即可实现上次同样
的操作。请问这应该如何实现,需要用到 API 函数么?
有谁可以提供相关的资料么?谢谢
Top
2 楼qingming81(晴明)回复于 2003-06-04 10:40:41 得分 0
可能就是所谓的INI文件吧。没有听说过定型文件。Top
3 楼xiaoxiao5055(xiaoxiao)回复于 2003-06-04 11:02:47 得分 0
我还是不明白,但还是谢谢你Top
4 楼qingming81(晴明)回复于 2003-06-04 11:13:17 得分 20
这是API函数的读写INI文件示例:
Private Declare Function GetPrivateProfileString Lib "kernel32" Alias "GetPrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpDefault As String, ByVal lpReturnedString As String, ByVal nSize As Long, ByVal lpFileName As String) As Long
Private Declare Function WritePrivateProfileString Lib "kernel32" Alias "WritePrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpString As Any, ByVal lpFileName As String) As Long
Private Sub Form_Load()
'KPD-Team 1999
'URL: http://www.allapi.net/
'E-Mail: KPDTeam@Allapi.net
Dim Ret As String, NC As Long
'Write the setting to the file (c:\test.ini) under
' Project1 -> Keyname
WritePrivateProfileString App.Title, "KeyName", "This is the value", "c:\test.ini"
'Create a buffer
Ret = String(255, 0)
'Retrieve the string
NC = GetPrivateProfileString(App.Title, "KeyName", "Default", Ret, 255, "C:\test.ini")
'NC is the number of characters copied to the buffer
If NC <> 0 Then Ret = Left$(Ret, NC)
'Show our string
MsgBox Ret
End SubTop
5 楼qingming81(晴明)回复于 2003-06-04 11:14:54 得分 0
实际上就是将程序的相关设置写在INI文件中,下次执行程序时,从记录的INI文件读出相关设置,用户看到的结果就象接着上次程序操作一样!Top
6 楼xiaoxiao5055(xiaoxiao)回复于 2003-06-04 15:13:31 得分 0
谢谢
我做的是一个数据库访问程序,读出其中的表,最后形成csv 文件。 当用户执
行一次后,例如选择了一种数据库 a, 又读出了表 b,生成
了csv 文件 c ,对这种操作过程生成一个定型文件。 请问如果这个用户,下次
操作时还需要同样的操作,这时,只要用户选择按照定型文件执行,即可
按照第一次相同的操作执行我的程序。
请问这如何实现呢?
Top
7 楼xiaoxiao5055(xiaoxiao)回复于 2003-06-05 08:53:02 得分 0
有办法可以实现么?Top
8 楼qingming81(晴明)回复于 2003-06-05 09:13:34 得分 10
你是要记录用户的操作?好象Windows录制宏一样?
如果真是这样的话:得记录的东西多着哩。
象“选择了一种数据库 a, 又读出了表 b,生成了csv 文件 c ”,如果是用户常用的操作的话,不用写什么定型文件,将这些操作都写在代码里就行了。你需要的只是让用户自己指定表a,指定其中的一个表b,然后就可以了。Top
9 楼qingming81(晴明)回复于 2003-06-05 09:14:59 得分 0
当然也可以写在INI文件中。Top
10 楼xiaoxiao5055(xiaoxiao)回复于 2003-06-05 10:05:34 得分 0
你意思是说,将这些代码在重写,这不是很浪费么?
请问写在INI 里该如何写?Top
11 楼qingming81(晴明)回复于 2003-06-05 12:00:38 得分 0
代码怎么会重写?代码是固定的,只是调用的用户指定库及表不同而已。Top
12 楼qingming81(晴明)回复于 2003-06-05 14:09:15 得分 20
'下面给出写INI文件的模块代码:
Private Declare Function WritePrivateProfileString Lib "kernel32" Alias _
"WritePrivateProfileStringA" (ByVal lpApplicationName As String, _
ByVal lpKeyName As Any, ByVal lpString As Any, _
ByVal lpFileName As String) As Long
Private Declare Function GetPrivateProfileString Lib "kernel32" Alias _
"GetPrivateProfileStringA" (ByVal lpApplicationName As String, _
ByVal lpKeyName As Any, ByVal lpDefault As String, _
ByVal lpReturnedString As String, ByVal nSize As Long, _
ByVal lpFileName As String) As Long
Public Sub SetIni(Strkey As String, Stritem As String, Str As Variant)
'文件写入函数 '[strkey]为小节名称、stritem= 为项名或条目名、 buff为写入的值
Dim lngX As Long
Dim buff As String * 128
buff = Str & Chr(0)
lngX = WritePrivateProfileString(Strkey, Stritem, buff, App.Path & "\Test.ini")
End Sub
Public Function GetIni(Strkey As String, Stritem As String) As String
'取得初始信息的子过程 '[strkey]小节名称、stritem= 要取得地项名或条目名的值
Dim lngX As Long, intX As Integer
Dim buff As String * 128
Call GetPrivateProfileString(Strkey, Stritem, "", buff, 128, App.Path & "\Test.ini")
intX = InStr(buff, Chr(0))
GetIni = Trim(Left(buff, intX - 1))
'返回字串
End Function
'在每次退出时写
Testfile =app.path & "\A.txt"
SetIni "Test", "TestFile", TestFile
'在每次启动时写,你将得到上次退出写下的文件名及路径TestFile。
TestFile = GetIni("Test", "TestFile")
Top
13 楼qingming81(晴明)回复于 2003-06-05 14:12:24 得分 0
你可以用同样方式,将用户选择的数据库a,及表b的名字保存在INI文件中,下次用户启动时,在INI文件中读出数据库a,及表b的名字,用程序内部的代码生成csv 文件 c。就可以了。Top




