想得到下面程序的源代码,请高手帮忙!!!!!!!
我现在正打算写一个INI文件,这个文件包括以下内容:(怎么写INI文件作为一张表)
计算机ID号,安装的地点,网络IP地址,安装的时间
[Item1]
ID=8883
Address=Beijing
NetIP=128.127.128.22
Time=04-27-2004
[Item2]
ID=8283
Address=Beijing
NetIP=128.127.128.23
Time=04-27-2004
ItemXX作为一条记录,
问题点数:0、回复次数:13Top
1 楼VBDN( PowerBASIC.CN )回复于 2004-05-02 10:48:15 得分 0
密切关注Top
2 楼cso(无聊中...)回复于 2004-05-02 11:44:08 得分 0
http://www.sijiqing.com/vbgood/experience/index.asp?action=read&id=3243Top
3 楼dongge2000(目前叫西西了)回复于 2004-05-02 12:37:31 得分 0
'vbCrLf
Public Function WriteTxt(ByVal PathTxt As String, ByVal inText As String) As Boolean
On Error GoTo tErr
Dim f As Integer
f = FreeFile
Open PathTxt For Binary As #f
Put #f, , inText
Close #f
WriteTxt = True
Exit Function
tErr:
WriteTxt = False
End FunctionTop
4 楼KiteGirl(小仙妹)回复于 2004-05-05 21:15:21 得分 0
哈哈!这个问题其实好解决:
原数据:
[Item1]
ID=8883
Address=Beijing
NetIP=128.127.128.22
Time=04-27-2004
[Item2]
ID=8283
Address=Beijing
NetIP=128.127.128.23
Time=04-27-2004
1、将上述记录文本全部读入到一个String里面,假设叫做tString。关于如何将文本文件一次读入到一个String里面,如果你不了解可以另行开贴询问。假设我们有一个函数叫做TextGetByFile(),假设该函数可以将一个文本文件读入到一个字符传里。(该函数我手头就有)
Dim tString As String
tString=TextGetByFile("Test.ini")
2、现在假设tString包含上述全部字符(包括换行)。我们从tString里获得每个Item。tItemStrs()是每段记录的文本。
Dim tItemStrs() As String
tItemStrs()=Split(tString,"[Item") '注意这一句的用法。
现在,我们得到了每个记录的文本。注意:tItemStrs(0)必定是无效的记录。
如果是tItemStrs(1),则内容会是:
1]
ID=8883
Address=Beijing
NetIP=128.127.128.22
Time=04-27-2004
接着,要从tItemStrs()的元素里获得ID、Address、NetIP、Time等信息。首先拆分tItemStrs每一行。假设tItemStr是tItemStrs()的一个元素。我们现在在另外一个函数里。
tItemStr_Lines()=Split(tItemStr,vbCrlf)
现在,tItemStr_Lines()数组的内容是:
0:1]
1:ID=8883
2:Address=Beijing
3:NetIP=128.127.128.22
4:Time=04-27-2004
5:
接着,对tItemStr_Lines()的每一个元素做下列操作,我们假设这是又一个函数。
tAttribs()=Split(tItemStr_Lines(i),"=")
tAttribs(0)是属性的名称,tAttribs(1)是属性的值。依次以IF解析就可以了。
如果你看不明白,我会尝试把这个程序写出来。Top
5 楼KiteGirl(小仙妹)回复于 2004-05-05 22:17:19 得分 0
测试代码:
Private Sub Command1_Click()
Dim tInfos() As tpRecordInstallInfo
tInfos = RecordInstallInfos_GetByText(Text1.Text)
Text2.Text = RecordInstallInfos_PutToText(tInfos())
End Sub
RecordInstallInfos_Cound函数:用来计算tpRecordInstallInfo数组的数量,如果是0则说明该数组为空,不可操作(如操作则出错)。
RecordInstallInfos_PutToText函数:将tpRecordInstallInfo数组输出到文本。
RecordInstallInfos_GetByText函数:从文本获得tpRecordInstallInfo数组。
以下是:INILoad.bas的内容(是一个公共模块)。
Type tpRecordInstallInfo
riID As Long
riAddress As String
riIP(0 To 3) As Byte
riTime As Date
End Type
Function RecordInstallInfos_Cound(ByRef pInfos() As tpRecordInstallInfo) As Long
Dim tOutLong As Long
Err.Clear
On Error Resume Next
tOutLong = UBound(pInfos) + 1
RecordInstallInfos_Cound = tOutLong
End Function
Function RecordInstallInfos_PutToText(ByRef pInfos() As tpRecordInstallInfo) As String
Dim tOutString As String
Dim tInfos_Length As Long
Dim tIndex As Long
tInfos_Length = UBound(pInfos)
For tIndex = 0 To tInfos_Length
tOutString = tOutString & "[Item" & CStr(tIndex) & "]" & vbCrLf & RecordInstallInfo_PutToText(pInfos(tIndex)) & vbCrLf
Next
RecordInstallInfos_PutToText = tOutString
End Function
Function RecordInstallInfos_GetByText(ByVal pText As String) As tpRecordInstallInfo()
Dim tOutInfos() As tpRecordInstallInfo
Dim tStrings() As String
Dim tStrings_Length As Long
Dim tIndex As Long
tStrings() = Split(pText, "[Item")
tStrings_Length = UBound(tStrings)
If tStrings_Length > 1 Then
ReDim tOutInfos(tStrings_Length - 1)
For tIndex = 1 To tStrings_Length
tOutInfos(tIndex - 1) = RecordInstallInfo_GetByText(tStrings(tIndex))
Next
End If
RecordInstallInfos_GetByText = tOutInfos()
End Function
Function RecordInstallInfo_GetByText(ByVal pText As String) As tpRecordInstallInfo
Dim tOutInfo As tpRecordInstallInfo
Dim tStrings() As String
Dim tStrings_Length As Long
Dim tItemStrings() As String
Dim tItem_Name As String
Dim tItem_Value As String
Dim tIPStrings() As String
Dim tIP_Index As Long
Dim tIndex As Long
tStrings() = Split(pText, vbCrLf)
tStrings_Length = UBound(tStrings)
For tIndex = 0 To tStrings_Length
tItemStrings() = Split(tStrings(tIndex), "=")
If UBound(tItemStrings) = 1 Then
tItem_Name = UCase(tItemStrings(0))
tItem_Value = tItemStrings(1)
End If
With tOutInfo
If tItem_Name = "ID" Then
.riID = CLng(tItem_Value)
ElseIf tItem_Name = "ADDRESS" Then
.riAddress = tItem_Value
ElseIf tItem_Name = "NETIP" Then
tIPStrings() = Split(tItem_Value, ".")
If UBound(tIPStrings) = 3 Then
For tIP_Index = 0 To 3
If IsNumeric(tIPStrings(tIP_Index)) Then
.riIP(tIP_Index) = CByte(CLng(tIPStrings(tIP_Index)) Mod 256)
End If
Next
End If
ElseIf tItem_Name = "TIME" Then
.riTime = CDate(tItem_Value)
Else
End If
End With
Next
RecordInstallInfo_GetByText = tOutInfo
End Function
Function RecordInstallInfo_PutToText(ByRef pInfo As tpRecordInstallInfo) As String
Dim tOutString As String
Dim tStrID As String
Dim tStrAddress As String
Dim tStrIP As String
Dim tStrTime As String
With pInfo
tStrID = "ID=" & Format(.riID, "0000")
tStrAddress = "Address=" & .riAddress
tStrIP = "NetIP=" & .riIP(0) & "." & .riIP(1) & "." & .riIP(2) & "." & .riIP(3)
tStrTime = "Time=" & Format(.riTime, "dd-mm-yyyy")
End With
tOutString = tStrID & vbCrLf & tStrAddress & vbCrLf & tStrIP & vbCrLf & tStrTime
RecordInstallInfo_PutToText = tOutString
End Function
Top
6 楼suntrip(善本)回复于 2004-05-07 12:21:08 得分 0
谢谢楼上的妹妹,我正在试,遇到不会的问题我还会问你,你不会繁我吧,交个朋友好吗啊?
我的qq:51106861,你的呢啊Top
7 楼ryuginka(一米八五的猪)回复于 2004-05-07 13:39:45 得分 0
upTop
8 楼kmzs(.:RNPA:.山水岿濛)回复于 2004-05-07 14:23:13 得分 0
晕了,又来了一个jjTop
9 楼suntrip(善本)回复于 2004-05-08 09:39:23 得分 0
麻烦各位写具体些好吗啊?小弟是新手,有很多地方都不是很懂,不过老板要求紧急所以来此求大家帮忙啊!!!!!!
谢谢谢谢!!!!!!!!!!Top
10 楼suntrip(善本)回复于 2004-05-09 11:16:24 得分 0
谢谢各位的帮助小弟已经搞定了,在此说声谢谢Top
11 楼broown(程序员吃鱼香肉丝是很合理的)回复于 2004-05-09 14:03:57 得分 0
把你的做法,也说说看!
markTop
12 楼ryuginka(一米八五的猪)回复于 2004-05-09 14:10:51 得分 0
upTop
13 楼suntrip(善本)回复于 2004-05-13 10:43:59 得分 0
小弟已经搞定了阿,谁想要代码说一声,如果人多的话我就铁出来啊要是人少的话就给我邮箱我发给你们,我怕小弟编得太差了阿Top




