| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1020 人关注过本帖
标题:[求助]vb无法读取ini文件!
只看楼主 加入收藏
freeshadow
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2007-8-23
收藏
 问题点数:0 回复次数:7 
[求助]vb无法读取ini文件!
请看下面一段代码:
Private Sub Command3_Click()
Dim str As String
GetPrivateProfileString "boot loader", "default", "", str, 256, "G:\copy\boot.ini"
Text1.Text = str
End Sub
G:\copy\boot.ini是我复制的C:\boot.ini,先拿它联系以免损坏系统文件
(函数已经声明过)
当我运行程序并按下Command3时,出现如下提示:
"0x7c832b26"指令引用"0x00000000"内存,该内存不能为"written"(别的api函数使用时都没有这个问题!!!)
着该如何解决!!!
各位大虾帮帮忙!!
搜索更多相关主题的帖子: ini 文件 
2007-08-23 11:45
multiple1902
Rank: 8Rank: 8
等 级:贵宾
威 望:42
帖 子:4881
专家分:671
注 册:2007-2-9
收藏
得分:0 
你声明得对不对?
2007-08-23 11:56
心中有剑
Rank: 2
等 级:新手上路
威 望:5
帖 子:611
专家分:0
注 册:2007-5-18
收藏
得分:0 
用api的吗?如果不是 自己写一个也可以,反正差不多了

2007-08-23 12:08
心中有剑
Rank: 2
等 级:新手上路
威 望:5
帖 子:611
专家分:0
注 册:2007-5-18
收藏
得分:0 
Public Function Read_ini(fn As String, MyStr As String) As String
Dim TextLine
Dim Get_linetext
Open fn For Input As #1 ' 打开文件。
Do While Not EOF(1) ' 循环至文件尾。
Line Input #1, TextLine ' 读入一行数据并将其赋予某变量。
If UCase(Left(TextLine, Len(MyStr))) = UCase(MyStr) Then
Get_linetext = Trim(Mid(TextLine, Len(MyStr) + 1, Len(TextLine) - Len(MyStr)))
Read_ini = Trim(Right(Get_linetext, Len(Get_linetext) - 1))
Exit Do
End If
Loop
Close #1 ' 关闭文件。
End Function

2007-08-23 12:09
slore
Rank: 5Rank: 5
等 级:贵宾
威 望:16
帖 子:1108
专家分:0
注 册:2005-7-1
收藏
得分:0 

。。。

Option Explicit

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 Sub Command1_Click()
Dim ret As Long
Dim
OutStr As String * 256
ret = GetPrivateProfileString("boot loader", "default", "", OutStr, 256, "C:\boot.ini")
Print OutStr
End Sub

自己想下原因吧



快上课了……
2007-08-23 12:26
Joforn
Rank: 6Rank: 6
等 级:贵宾
威 望:23
帖 子:1242
专家分:122
注 册:2007-1-2
收藏
得分:0 
以下是引用freeshadow在2007-8-23 11:45:38的发言:
请看下面一段代码:
Private Sub Command3_Click()
Dim str1 As String
str1=String(256,0)
GetPrivateProfileString "boot loader", "default", "", str, 256, "G:\copy\boot.ini"
if instr(str1,chr(0)) then str1=left(str1,instr(str1,chr(0))-1) '如果你对字符串的准确性要求比较高的话最好加上这一条。
Text1.Text = str1
End Sub
G:\copy\boot.ini是我复制的C:\boot.ini,先拿它联系以免损坏系统文件
(函数已经声明过)
当我运行程序并按下Command3时,出现如下提示:
"0x7c832b26"指令引用"0x00000000"内存,该内存不能为"written"(别的api函数使用时都没有这个问题!!!)
着该如何解决!!!
各位大虾帮帮忙!!

[此贴子已经被作者于2007-8-24 14:42:57编辑过]


VB QQ群:47715789
2007-08-23 13:36
西风独自凉
Rank: 8Rank: 8
等 级:贵宾
威 望:43
帖 子:3380
专家分:28
注 册:2007-8-2
收藏
得分:0 

这个是我以前做的。。。。你可以参照一下

Public 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 Type getini
strProvider As String
strServer As String
strUserid As String
strPassword As String
strDatabase As String
End Type
Public Sub main() '读取INI文件
With X '先给变量赋30个空格
.strProvider = Space(30)
.strServer = Space(30)
.strUserid = Space(30)
.strPassword = Space(30)
.strDatabase = Space(30)

GetPrivateProfileString "connectct-zx2", "provider", "sqloledb", .strProvider, 30, App.Path & "\Connect.ini"
GetPrivateProfileString "connectct-zx2", "server", "server", .strServer, 30, App.Path & "\Connect.ini"
GetPrivateProfileString "connectct-zx2", "User id", "sa", .strUserid, 30, App.Path & "\Connect.ini"
GetPrivateProfileString "connectct-zx2", "Password", "hushimiao", .strPassword, 30, App.Path & "\Connect.ini"
GetPrivateProfileString "connectct-zx2", "Database", "jxc", .strDatabase, 30, App.Path & "\Connect.ini"

'取消空格,截取回车符
.strProvider = Left(Trim(.strProvider), (Len(Trim(.strProvider)) - 1))
.strServer = Left(Trim(.strServer), (Len(Trim(.strServer)) - 1))
.strUserid = Left(Trim(.strUserid), (Len(Trim(.strUserid)) - 1))
.strPassword = Left(Trim(.strPassword), (Len(Trim(.strPassword)) - 1))
.strDatabase = Left(Trim(.strDatabase), (Len(Trim(.strDatabase)) - 1))

PobjCn.Open "provider=" & .strProvider & ";server=" & .strServer & ";user id=" & .strUserid & ";password=" & .strPassword & ";database=" & .strDatabase
End With
frmlogin.Show


2007-08-23 13:50
freeshadow
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2007-8-23
收藏
得分:0 

以解决了,谢谢各位,原来我没有给str1变量赋初值阿,加上256个空格就行了,还是班主们厉害啊

2007-08-24 00:07
快速回复:[求助]vb无法读取ini文件!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.126856 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved