我接到一个课题,其中有这样一个问题:
要求将集装箱信息(集装箱名称、尺寸、最大容重的数据)
写成指定格式的二进制文件。集装箱信息 共66字节,
其中:
集装箱名 字符串 50字节 (需用’\0’结尾,故请注意最大长度)
集装箱L int 4字节
集装箱W int 4字节
集装箱H int 4字节
集装箱容重 int 4字节
要求将集装箱信息(集装箱名称、尺寸、最大容重的数据)
写成指定格式的二进制文件。集装箱信息 共66字节,
其中:
集装箱名 字符串 50字节 (需用’\0’结尾,故请注意最大长度)
集装箱L int 4字节
集装箱W int 4字节
集装箱H int 4字节
集装箱容重 int 4字节
Container_Name As String * 48
Container_Length As Integer
Container_Width As Integer
Container_Height As Integer
Container_Weight As Integer
End TypePrivate Function SaveDataToFile(ByVal strFile As String, tData As Container) As Boolean
Dim lFN As Long, lFL As Long
On Error GoTo Err1
lFN = FreeFile
SaveDataToFile = False
Open strFile For Binary As #lFN
lFL = LOF(lFN)
Put #lFN, lFL + 1, tData
Close #lFN
SaveDataToFile = True
Exit Function
Err1:
Close #lFN
End FunctionPrivate Function GetDataFromFile(ByVal strFile As String, tData() As Container) As Boolean
Dim lFN As Long, lFL As Long, lNum As Long, tD As Container
On Error GoTo Err1
lFN = FreeFile
lNum = 1
GetDataFromFile = False
Open strFile For Random As #lFN Len = Len(tD)
Do Until EOF(lFN)
Get #lFN, lNum, tD
ReDim Preserve tData(lNum) As Container
If Trim(tD.Container_Name) <> "" And tD.Container_Length <> 0 Then
tData(lNum) = tD
End If
lNum = lNum + 1
Loop
Close #lFN
GetDataFromFile = True
Exit Function
Err1:
Close #lFN
End Function
Container_Name的值要加上"\0"哦!
代码改一下!Private Type Container
Container_Name As String * 50'<--------------------
Container_Length As Integer
Container_Width As Integer
Container_Height As Integer
Container_Weight As Integer
End Type
SaveDataToFile ???
^_^。
Dim tD As Container
With tD
.Container_Name = "Name\0"
.Container_Length = 20
.Container_Height = 5
.Container_Width = 4
.Container_Weight = 10
End With
Call SaveDataToFile("C:\ttt.txt", tD)
End Sub
然后在asp里这样调用:
Dim tD As Container
With tD
.Container_Name = "集装箱1"
.Container_Length = 200
.Container_Height = 300
.Container_Width = 400
.Container_Weight = 500
End With
Call SaveDataToFile("d:\aa.txt", tD)可是有提示错误:
语句未结束
/test1.asp, line 25, column 7
Dim tD As Container
------^
set dllobj = server.CreateObject("gm.gmrw")
你早说是在Asp中嘛!我还以为你在VB中呢?
在Asp中不能直接实现对文件的二进制操作。要写一个ActiveX组建!
如果需要,EMail给我![email protected] 我帮你写一个!
后来发的邮件有附件的。