Модераторы: feodorv, GremlinProg, xvr, Fixin
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проблемы со строковой переменной. 
:(
    Опции темы
Dimonchik
Дата 27.11.2005, 23:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 27.11.2005

Репутация: нет
Всего: нет



Привет всем!
Подскажите, пожалуйста, что нужно сделать для того, чтобы переменная inBuf в ниже описанном листинге содержала в себе полную строку, а не первый символ строки, потому что у меня всё время на экран выдаётся "С", т.е. первый символ??? В данный момент я пользуюсь Visual Studio 2005 (Beta 2).
Буду очень признателен, если подскажете в чём проблема.

Код

#include "stdafx.h"
#include "windows.h"
#include "stdio.h"
#include "iostream"
using namespace std;

int main()
{
     CHAR inBuf[MAX_PATH];

     GetPrivateProfileString(
              TEXT("Configuration"),
              TEXT("InstallDir"),
              TEXT(""),
              (LPWSTR)inBuf,
              MAX_PATH,
              TEXT("test.ini"));

     cout << inBuf;
    
     return 0;
}

PM MAIL   Вверх
Aleksandor
Дата 28.11.2005, 10:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Практик
**


Профиль
Группа: Участник
Сообщений: 272
Регистрация: 22.11.2005
Где: россия, зеленогра д

Репутация: 10
Всего: 12



У тебя в четвертом параметре стоит LPWSTR, а фунцция просит LPTSTR, да и буфер объявлен как CHAR


--------------------
Call out Gouranga be happy!!!
Gouranga Gouranga Gouranga ....
That which brings the highest happiness!!
PM MAIL   Вверх
Neitron
Дата 28.11.2005, 11:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 580
Регистрация: 3.10.2005
Где: Москва

Репутация: 3
Всего: 5



Чтобы было меньше путаниц, сразу вызывай
GetPrivateProfileStringW


--------------------
Хороший программист никогда ничего не делает хорошо с первого раза. Он понимает важность патчей.
Ⓘ ⓁⒾⓀⒺ ⓂⓄⓏⒾⓁⓁⒶ
PM MAIL   Вверх
Dimonchik
Дата 28.11.2005, 13:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 27.11.2005

Репутация: нет
Всего: нет



"У тебя в четвертом параметре стоит LPWSTR, а фунцция просит LPTSTR, да и буфер объявлен как CHAR "

Какой же тогда тип переменной использовать для буфера? Я уже пробовал и CHAR и TCHAR...
Всё равно строка не выводится, а мне нужно, чтобы функция GetPrivateProfileString() возвращала строку посредством inBuf, а не двоичные данные или ещё Бог знает что...
PM MAIL   Вверх
Aleksandor
Дата 28.11.2005, 14:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Практик
**


Профиль
Группа: Участник
Сообщений: 272
Регистрация: 22.11.2005
Где: россия, зеленогра д

Репутация: 10
Всего: 12



А прога в Unicode откомпилирована?
Тогда бери TCHAR для буфера и возможно необходимо конвертировать перед выводом широкую строку в обычную (не Unicode) функцией WideCharToMultiByte

DWORD dwCount=GetPrivateProfileString(..... возвращает сколько символов?

еще можно попробовать вместо пустой строки (третий параметр) использовать что-то типа
"Requested string is not found"

Это сообщение отредактировал(а) Aleksandor - 28.11.2005, 14:14


--------------------
Call out Gouranga be happy!!!
Gouranga Gouranga Gouranga ....
That which brings the highest happiness!!
PM MAIL   Вверх
Neitron
Дата 28.11.2005, 18:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 580
Регистрация: 3.10.2005
Где: Москва

Репутация: 3
Всего: 5



Код

#include "stdafx.h"
#include "windows.h"
#include "stdio.h"
#include "iostream"
using namespace std;
int main()
{
    char inBuf[MAX_PATH];
     GetPrivateProfileStringA(
              "Configuration",
              "InstallDir",
              "",
              inBuf,
              MAX_PATH,
              "test.ini");
     cout << inBuf;
    
     return 0;
}


Это сообщение отредактировал(а) Neitron - 28.11.2005, 18:04


--------------------
Хороший программист никогда ничего не делает хорошо с первого раза. Он понимает важность патчей.
Ⓘ ⓁⒾⓀⒺ ⓂⓄⓏⒾⓁⓁⒶ
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Системное программирование и WinAPI"
Fixin
GremlinProg
xvr
feodorv
  • Большое количество информации и примеров с использованием функций WinAPI можно найти в MSDN
  • Описание сообщений, уведомлений и примеров с использованием компонент WinAPI (BUTTON, EDIT, STATIC, и т.п.), можно найти в MSDN Control Library
  • Непосредственно, перед созданием новой темы, проверьте заголовок и удостоверьтесь, что он отражает суть обсуждения.
  • После заполнения поля "Название темы", обратите внимание на наличие и содержание панели "А здесь смотрели?", возможно Ваш вопрос уже был решен.
  • Приводите часть кода, в которой предположительно находится проблема или ошибка.
  • Если указываете код, пользуйтесь тегами [code][/code], или их кнопочными аналогами.
  • Если вопрос решен, воспользуйтесь соответствующей ссылкой, расположенной напротив названия темы.
  • Один топик - один вопрос!
  • Перед тем как создать тему - прочтите это .

На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы .


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема »


 




[ Время генерации скрипта: 0.0519 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.