俺是初学者,求救!读写文件

lsmhg 2003-10-10 11:15:28
我用readfile 函数把文件的数据读如textbox中,为什么老是莫名奇妙的退出.
难道缓从区类型不对?
如何定义
...全文
39 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
rainstormmaster 2003-10-11
  • 打赏
  • 举报
回复
//不过我想用API函数:
Createfile,Readfile等实现,该如何做,
我已经把数据读入了数组(byte类型),但不能付值给TEXTBOX,汉字就更不行了
读入了数组后,要用strconv函数转换编码,下面是详细的程序:
窗体:一个按钮,一个textbox(设为多行)

Const OFS_MAXPATHNAME = 128
Const OF_CREATE = &H1000
Const OF_READ = &H0
Const OF_WRITE = &H1
Private Declare Function GetFileSize Lib "kernel32" (ByVal hFile As Long, lpFileSizeHigh As Long) As Long
Private Declare Function OpenFile Lib "kernel32" (ByVal lpFileName As String, lpReOpenBuff As OFSTRUCT, ByVal wStyle As Long) As Long
Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
Private Declare Function ReadFile Lib "kernel32" (ByVal hFile As Long, lpBuffer As Any, ByVal nNumberOfBytesToRead As Long, lpNumberOfBytesRead As Long, ByVal lpOverlapped As Long) As Long
Private Type OVERLAPPED
Internal As Long
InternalHigh As Long
offset As Long
OffsetHigh As Long
hEvent As Long
End Type
Private Type OFSTRUCT
cBytes As Byte
fFixedDisk As Byte
nErrCode As Integer
Reserved1 As Integer
Reserved2 As Integer
szPathName(OFS_MAXPATHNAME) As Byte
End Type

Private Sub Command1_Click()
Dim OF As OFSTRUCT
Dim hFile As Long
Dim flen As Long
Dim hfilename As String
Dim lnglong As Long
Dim buff() As Byte
Dim i As Long
Dim realnum As Long
hfilename = "D:\ms\swinapi12\mc.txt"
hFile = OpenFile(hfilename, OF, OF_READ)
flen = GetFileSize(hFile, lnglong)
ReDim buff(flen - 1)
i = ReadFile(hFile, buff(0), flen, realnum, ByVal 0&)
CloseHandle hFile
Dim s As String
s = StrConv(buff, vbUnicode)
Text1.Text = s
End Sub
rainstormmaster 2003-10-11
  • 打赏
  • 举报
回复
//另外,我发现用SetfilePointer不能移动指针,要读文件只能一次读完

什么操作系统?
9x不支持对一个磁盘文件进行异步读操作(重复读),当然也就不能用SetfilePointer移动指针
lsmhg 2003-10-11
  • 打赏
  • 举报
回复
不过我想用API函数:
Createfile,Readfile等实现,该如何做,
我已经把数据读入了数组(byte类型),但不能付值给TEXTBOX,汉字就更不行了
另外,我发现用SetfilePointer不能移动指针,要读文件只能一次读完,
请指教,谢谢!

分数不成问题.
  • 打赏
  • 举报
回复
'以下是读取Binary file的程式
Dim Buff() as Byte

Open "d:\csys\8504\ctc" For Binary Access Read As #1
ReDim Buff(267)

Do While Not EOF(1)
Get #1, , Buff '每次读268个byte进来
'Call 处理Buff 的Routine
Loop
Close #1

'以下是写入Binary file的程式
Dim Buff() As Byte
Open "c:\tc" For Binary Access Write As #1
ReDim Buff(10)
Buff = StrConv("这是一个11", vbFromUnicode)
Put #1, , Buff

ReDim Buff(1)
Buff(0) = 210
Buff(1) = 70
Put #1, , Buff
Close #1
End Sub
hcj2002 2003-10-10
  • 打赏
  • 举报
回复
Dim fso As New FileSystemObject
Dim fill As File
Dim ts As TextStream

Dim filename As String
Dim path As String

Dialog1.CancelError = True
On Error GoTo Err
Dialog1.Filter = "所有文件(*.*)|*.*|文本文件(*.TXT))|*.TXT"
Dialog1.ShowOpen


filename = Dialog1.filename
Set fill = fso.GetFile(filename)
Set ts = fill.OpenAsTextStream(ForReading)
Text1.Text = ts.ReadAll
Err:
Exit Sub

1,486

社区成员

发帖
与我相关
我的任务
社区描述
VB API
社区管理员
  • API
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧