Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: Проблема с Чтением и Записью INI Добавлено: 27.09.10 11:40  

Автор вопроса:  Mc.WOLF

'Модуль класа
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 Declare Function GetPrivateProfileSection Lib "kernel32" Alias "GetPrivateProfileSectionA" (ByVal lpAppName As String, ByVal lpReturnedString As String, ByVal nSize As Long, ByVal lpFileName As String) As Long

Private Declare Function WritePrivateProfileString Lib "kernel32" Alias "WritePrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpString As Any, ByVal lpFileName As String) As Long
Private Declare Function WritePrivateProfileSection Lib "kernel32" Alias "WritePrivateProfileSectionA" (ByVal lpAppName As String, ByVal lpString As String, ByVal lpFileName As String) As Long

Private Const BufferSize As Long = 4096

Private strIniFile As String

Public Property Get File() As String
    File = strIniFile
End Property

Public Property Let File(Value As String)
    strIniFile = Value
End Property

Public Function GetValue(strSection As String, strKey As String) As Variant
    Dim strBuffer As String
    Dim lLength As Long

    strBuffer = Space(BufferSize)

    lLength = GetPrivateProfileString(strSection, strKey, vbNullString, strBuffer, BufferSize, strIniFile)
    
    GetValue = Left(strBuffer, lLength)
End Function

Public Sub WriteValue(strSection As String, strKey As String, vntValue As Variant)
    WritePrivateProfileString strSection, strKey, CStr(vntValue), strIniFile
End Sub

Public Function GetSection(strSection As String) As Variant
    Dim strBuffer As String
    Dim lLength As Long

    strBuffer = Space(BufferSize)

    lLength = GetPrivateProfileSection(strSection, strBuffer, BufferSize, strIniFile)
    
    GetSection = Split(Left(strBuffer, lLength), vbNullChar)
End Function

Public Function GetSectionKeys(strSection As String) As Variant
    Dim strBuffer As String
    Dim lLength As Long

    strBuffer = Space(BufferSize)

    lLength = GetPrivateProfileString(strSection, vbNullString, vbNullString, strBuffer, BufferSize, strIniFile)
    
    GetSectionKeys = Split(Left(strBuffer, lLength), vbNullChar)
End Function






'Форма
Dim Ini As clsIniFile
Set Ini = New clsIniFile

On Error GoTo Error

With Ini
.File = App.Path & "/Settings.ini"
txtID.Text = .GetValue("general", "DefaultID")
End With


Set Ini = Nothing

Error:


Пишет "Compile error: Can't find project or library"

И выделяет "Space" из модуля класса что за нафиг?

Ответить

  Ответы Всего ответов: 10  

Номер ответа: 1
Автор ответа:
 



Администратор

ICQ: 278109632 

Вопросов: 42
Ответов: 3949
 Web-сайт: domkratt.com
 Профиль | | #1
Добавлено: 27.09.10 13:21
Компилятор противится, все верно. Он не хочет юзать INI-файлы в век XML.
Попробуй VBA.Strings.Space

Ответить

Номер ответа: 2
Автор ответа:
 Mc.WOLF



Вопросов: 26
Ответов: 84
 Профиль | | #2 Добавлено: 27.09.10 13:56
В смысле? Я не понимаю о чём идёт речь если не трудно Вам объяснить мне подробно что сделать

Ответить

Номер ответа: 3
Автор ответа:
 



Администратор

ICQ: 278109632 

Вопросов: 42
Ответов: 3949
 Web-сайт: domkratt.com
 Профиль | | #3
Добавлено: 27.09.10 13:59
Замени везде Space на VBA.Strings.Space

Ответить

Номер ответа: 4
Автор ответа:
 Mc.WOLF



Вопросов: 26
Ответов: 84
 Профиль | | #4 Добавлено: 27.09.10 14:07
ОГРОМНОЕ СПАСИБО!!!

Ответить

Номер ответа: 5
Автор ответа:
 Winand



Вопросов: 87
Ответов: 2795
 Web-сайт: winandfx.narod.ru
 Профиль | | #5
Добавлено: 27.09.10 16:23
Executioner можешь описать преимущества xml вкратце? Так же медленно, при этом сложнее. Возможно я недопонял чего-то

Ответить

Номер ответа: 6
Автор ответа:
 Artyom



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #6 Добавлено: 27.09.10 16:25
Потому что XML это труъ

Ответить

Номер ответа: 7
Автор ответа:
 



Администратор

ICQ: 278109632 

Вопросов: 42
Ответов: 3949
 Web-сайт: domkratt.com
 Профиль | | #7
Добавлено: 27.09.10 17:47
В дотнете, насколько я помню, можно вообще экземпляр класса сохранить как XML.
XML гораздо более гибок, нежели INI. Вот как бы ты сохранял многоуровневое дерево параметров в INI? Или как быстро осуществить поиск нужного элемента по определенным параметрам в INI?
С XML все проще. Тут есть XQuery и XPath. Библиотеки обработки XML не так уж медленны. Да, он занимает больше места, да и вообще может показаться монструозным в сравнении с INI или каким-то другим форматом хранения текстовых данных в открытом виде, но это лишь на первый взгляд. Мне тоже так казалось, пока я не ударился в веб-кодинг с ajax и асинхронное программирование c Nodejs. Потому что XML это труъ. (с) Artyom

Ответить

Номер ответа: 8
Автор ответа:
 Artyom



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #8 Добавлено: 28.09.10 03:51
В .NET есть встроенный механизм работы с настройками, который вообще не требует написания кода, основаный на XML. Впрочем остальное тоже верно.

Ответить

Номер ответа: 9
Автор ответа:
 Artyom



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #9 Добавлено: 28.09.10 10:45
Еще в .NET есть XLinq

Ответить

Номер ответа: 10
Автор ответа:
 



Администратор

ICQ: 278109632 

Вопросов: 42
Ответов: 3949
 Web-сайт: domkratt.com
 Профиль | | #10
Добавлено: 29.09.10 00:15
Ах да, я совершенно забыл.

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам