API функция GetPrivateProfileString

Язык Visual Basic на платформе .NET.

Модераторы: Ramzes, Sebas

Alexandrius
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 55
Зарегистрирован: 01.11.2009 (Вс) 14:09
Откуда: Украина

API функция GetPrivateProfileString

Сообщение Alexandrius » 01.12.2009 (Вт) 2:17

Не могу разобраться с API функцией для работы с .ini файлами GetPrivateProfileString.
Пытаюсь считать так:
Код: Выделить всё
Private Declare Function GetPrivateProfileString Lib "kernel32" Alias "GetPrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As String, ByVal lpDefault As String, ByVal lpReturnedString As String, ByVal nSize As Long, ByVal lpFileName As String) As Long
Dim SP As String
SP = Space(255)
Call GetPrivateProfileString("PATH", "Skin", "Ошибка", SP, 255, My.Application.Info.DirectoryPath & "\Options\Options.ini")

KeyName не находит... Помогите, пожалуйста, подправить код.
Visual Basic 2008

Alexandrius
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 55
Зарегистрирован: 01.11.2009 (Вс) 14:09
Откуда: Украина

Re: API функция GetPrivateProfileString

Сообщение Alexandrius » 01.12.2009 (Вт) 2:24

P.S. VB 2008. Файл по указанному пути на месте. Все параметры в порядке. Функция WritePrivateProfileString прекрасно работает.
Visual Basic 2008

viter.alex
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 221
Зарегистрирован: 27.07.2008 (Вс) 20:17
Откуда: Montreal

Re: API функция GetPrivateProfileString

Сообщение viter.alex » 01.12.2009 (Вт) 2:29

В .Net изменились типы данных. Тип Long это 64-разрядное число. А Integer — 32-разрядное. По сему, нужно заменить Long на Integer. Это касается всех функций API
Объявлять лучше так:
Код: Выделить всё
<DllImport("kernel32", SetLastError:=True)> _
Private Function GetPrivateProfileString (ByVal lpApplicationName As String, ByVal lpKeyName As String, ByVal lpDefault As String, ByVal lpReturnedString As String, ByVal nSize As Integer, ByVal lpFileName As String) As Integer
End Function

И нужно импортировать пространство имён System.Runtime.InteropServices
Последний раз редактировалось viter.alex 01.12.2009 (Вт) 2:48, всего редактировалось 1 раз.
Лучше день потерять — потом за пять минут долететь!

Alexandrius
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 55
Зарегистрирован: 01.11.2009 (Вс) 14:09
Откуда: Украина

Re: API функция GetPrivateProfileString

Сообщение Alexandrius » 01.12.2009 (Вт) 2:45

Спасибо, viter.alex. Я уже чё только не пробовал... А оказалось просто типы данных надо поменять... :)
Visual Basic 2008

viter.alex
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 221
Зарегистрирован: 27.07.2008 (Вс) 20:17
Откуда: Montreal

Re: API функция GetPrivateProfileString

Сообщение viter.alex » 01.12.2009 (Вт) 2:49

Сам наступал на те же самые грабли
Лучше день потерять — потом за пять минут долететь!


Вернуться в Visual Basic .NET

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 83

    TopList