СообЧа > База Знаний > Программирование > Visual Basic

Вопрос

Так я записываю в INI-файл:

Dim Path As String
Path = App.Path & "\config.ini"
p = WritePrivateProfileString("www", "w1", "30", Path)

Все работает.
А этим кодом я пытаюсь считать оттуда данные, но нечего не выходит. Почему?

Dim Path As String
Path = App.Path & "\config.ini"
p = GetPrivateProfileString("www", "w1", "", "", 300, Path)

Ответ

p = GetPrivateProfileString("www", "w1", "", "", 300, Path)

У тебя ошибка на 3 значении (lpReturnedString). Там не пустые ковычки должны быть, а переменная, в которую функция вернет полученное значение.
Объяви еще одну переменную типа:

Dim szReturnedString As String * 300 'Объявляем переменную с длиной, равной 300 байт

Получаем выражение следующего вида:

Dim Path As String
Dim szReturnedString As String * 300

Path = App.Path & "\config.ini"
p = GetPrivateProfileString("www", "w1", szReturnedString, "", 300, Path)

После того, как функция вернула какое-либо значение, твоей переменной p присваивается значение, равное количеству символов в этом значении. Т.е. получил строку: "Тест", р = 4. Но так как переменная szReturnedString имеет длину 300 байт, то результат будет выглядеть так: "Тест|||||||||||||||||||||…" до 300. Чтобы избавиться от такого результата, используй:

szReturnedString=Left(szReturnedString, p)

Все, теперь переменная будет содержать необходимый результат ("Тест").

SC



Copyright © 2000-2004 Сообщество Чайников
Контактная информация