编程C,C ++,Java,PHP,Ruby,图灵,VB
计算机科学加拿大 
编程C,C ++,Java,PHP,Ruby,图灵,VB  

用户名:   Password: 
 登记登记   
 [教程]阅读/编写随机访问文件
指数 -> 编程,Visual Basic和其他基础知识 -> Visual Basic Tutorial.
查看上一个主题 可打印的版本下载主题利率主题订阅本主题私人信息刷新页面 查看下一个主题
作者 信息
生物哈萨德胡斯旺斯




邮政发布: 2004年3月3日星期三10:27 PM  帖子主题:[教程]阅读/编写随机访问文件

好的..原谅我如果这个教程不是pefect,因为它是我写的第一个......这里没有。

首先,我必须警告你,这个教程是一个小的先进,包含类型,记录和文件处理...所以如果你的新手你将归结为地狱。

随机访问文件非常有用,它们允许您将大量数据写入文件(通常是数据库文件),然后读入文件的某些部分。随机访问文件有三个部分,我将按以下顺序解释它们:

1)记录(s)
2)写入文件
3)从文件中读取

1)记录(s)

该记录是此过程中最重要的部分。它拥有所有信息,在一个很容易到达的地方。如果您知道如何创建记录,请随时跳过此部分,否则读取。

无法以表单创建记录!永远,它们必须在模块中创建。要将模块添加到项目(无论如何在VB6.0中)右键单击项目资源管理器中的空白点,转到添加和单击模块。选择模块,单击“打开”。将显示新模块的代码。在此模块中,您必须创建记录。这是使用类型和结束类型命令完成的,其中您的变量。对于字符串变量,您还必须指定字符串使用*符号的时间。前任。对于30个字符的字符串,您将使用varname * 30。

例子:

代码:

键入reccontactinfo.
     Name as String * 75
     地址为字符串* 75
     Address2为String * 75
     phonenum作为字符串* 75
     cellnum作为字符串* 75
结束类型


在此示例中,我们有5个变量,名称,地址,地址2,phonenum和cellnum,所有字符串,长度为75个字符。 (注意:您不必暗中这些,虽然您可能想要创建数组)

您要做的下一件事是要将此类型声明为您想要处理数据的表单的常规部分中的记录。

示例:我希望用户将此信息输入Frminfo中以前创建的TextBoxs,然后保存到我的记录中。我要做的第一件事是将一个变量作为记录拒绝......在这种情况下我可能会使用

代码:

Dim Cinfo作为reccontactinfo


{在一般节}这样做。用inchfo作为变量名称,reccontactinfo与我的模块中创建的类型相同的名称。

您要做的下一件事是将数据分配给我们在记录中创建的变量。这是一个简单的部分,您将记录与任何其他对象一起使用。

示例:完成后,我想在文本框名称中将文本分配给我的记录中的变量名称。

要将其分配给另一个文本箱:

代码:

txtothertextbox.text = txtname.text.


同样地,将其分配给我将使用的记录中的变量

代码:

CINFO..Name = txtName.text


在这种情况下,Cinfo是我们记录的变量名,名称是我们要分配文本的变量。

2)我要做的第二件事是将此记录保存到磁盘。这是一个更高级的,然后保存一个“正常”文件,但不是太多。
该命令是:
代码:
打开(Location)随机作为[#] len = len(Record)
Put [#] Filenumber,[Remnumber],Varname
关闭 [#]


示例:我想将此用户保存到文件C:\ ContactInfo.dat上的信息

代码:
打开"c:\ContactInfo.dat"随机为#1 len = len(CInfo)
放#1,,Cinfo
关闭#1


打开打开所指定的文件所指定的文件以供我的程序使用,因为随机告诉它将其打开作为随机访问文件,因为#1是什么文件#它应该是什么。 (vb可以立即打开多个文件,它通过分配文件#向每个文件进行直接,这是您在这里所做的一切),即所有旧的东西,捕获是,您必须指定文件长度。在此示例中,我们告诉VB,长度(LEN)等于我们的记录的长度(= LEN(CINFO)。
在NextLine上,我们使用PUT命令将记录写入文件,除了正常文件中几乎相同,除非我们必须指定我们写作的记录。所以我们使用Put#1告诉vb写入打开文件#1(在这种情况下{c:\ conatctinfo.dat},然后我们指定我们正在写的记录数。我离开了值空白{,,}因此,vb假设我将只写一个记录,最后我们告诉它要写的记录的名称。这个名字必须是您在表单的一般部分中声明的变量,而不是类型名称。{例如Cinfo ,不是reccinfo},最后关闭文件{close#1}

注意:不要向我询问写作更多,然后一次记录1个记录,我从未完成过,看看没有必要这样做(除了保存代码空间除外)

现在,您已成功将用户全名写入随机访问文件。

3)最后,我们希望将该信息读回文件中的记录。为此,我们打开文件并从中获取信息。这是命令:

代码:
打开(Location)随机作为[#] len = len(Record)
获取[#] Filenumber,[Remnumber],Varname
关闭 [#]


现在,如果您要注意,您会注意到保存记录的命令,并打开记录的命令只有一个单词。 PUT已更改为获取....是的,这意味着只要从文件加载数据时,它会在程序中的当前记录中过度覆盖所有内容。

示例:我想将我保存到文件C:\ conactinfo.dat的用户名返回给名为name的文本框中。为此,我要做的第一件事就是从文件中读取记录。

代码:

打开"C:\ContactInfo.dat"随机为#1 len = len(CInfo)
GET#1,Cinfo
关闭#1


{如果您不明白此代码,请阅读上面的部分...保存到文件,唯一的区别是,而不是使用命令放置到文件,而不是使用命令,我们正在使用命令获取从文件读取。 }

最后,我们希望将刚刚写入我们的记录中的值分配给文本框。我们这样做:

代码:

txtname.text = cifno.name.


在此示例中,TXTNAME是我们的文本框的名称,Cinfo是我们的记录的变量名{以前在常规部分}和.name是我们想要从中获取数据的记录内的变量。

这是我的第一个,非常长的教程结束。恭喜,您现在可以创建一个记录,将记录保存到文件,并将数据读回记录中。现在你应该真的很开心,我真的厌倦了打字!



随机访问文件example.zip
 Description:
如果您仍然无法做随机访问文件,那就是我在整个教程中引用的工作示例。

下载
 Filename:  随机访问文件example.zip
 Filesize:  1.55 KB
 Downloaded:  1599 Time(s)

赞助
赞助
赞助
赞助
托尼




邮政发布: 2004年3月4日星期四晚上12:21  帖子主题:(没有主题)

漂亮的教程 很高兴 + 100位

现在,如果说我要做
代码:

打开"c:\ContactInfo.dat"随机为#1 len = len(CInfo)
将#1,2,Cinfo'//写入第二次记录
关闭#1


这会覆盖第2个地方包含的记录吗?

我可以删除一个没有重写整个文件的记录吗? 使困惑
最新来自compsci.ca/blog: Tony's 编程博客。 DWite - A. 编程竞赛.
生物哈萨德胡斯旺斯




邮政发布: 2004年3月4日星期四上午9:21  帖子主题:(没有主题)

引用:
现在,如果说我要做

随机打开“c:\ contactInfo.dat”#1 len = len(Cinfo)
将#1,2,Cinfo'//写入第二次记录
关闭#1


我相信它会,但我不是积极的,与之玩,或者我会在星期五回复你。

引用:

我可以删除一个没有重写整个文件的记录吗?

我不知道这样做的方法,如果你需要最好的事情,我可以认为是拥有一个数据库控制程序,在所有记录中都读取,在列表框中列出它们,然后你可以选择哪些你想要删除。它已读取文件,然后将其输出除以您要删除的记录之外的所有内容....这就是我所知道的唯一方法,我的手册并没有说它 伤心 sorry.
托尼




邮政发布: Thu Mar 04,2004 5:22 PM  帖子主题:(没有主题)

没关系......猜猜我不能从数据文件中看出很多东西 翻白眼

我只知道用db,你可以运行一个sql语句来删除记录或两个 眨眼
最新来自compsci.ca/blog: Tony's 编程博客。 DWite - A. 编程竞赛.
生物哈萨德胡斯旺斯




邮政发布: 星期五2004年3月5日3:56 PM  帖子主题:(没有主题)

如果您使用哪个记录作为变量... Ex,则删除记录并不是真正的删除记录。有一个文本框,用于记录您要记录的记录点,如果它存在于它下面的文本框中的名称。然后,每当要删除记录时,只需在顶部保存一个新的。应该工作......如果你需要代码/示例宣布,请告诉我
从上一个显示帖子:   
   指数 -> 编程,Visual Basic和其他基础知识 -> Visual Basic Tutorial.
查看上一个主题 告诉一个朋友可打印的版本下载主题利率主题订阅本主题私人信息刷新页面 查看下一个主题

11  [ 5 Posts ]
跳到:   


Style:  
搜索: