Вопрос
Так я записываю в 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 Сообщество Чайников
Контактная информация