Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/65: Рейтинг темы: голосов - 65, средняя оценка - 4.86
6 / 0 / 0
Регистрация: 29.12.2011
Сообщений: 9

Переменная не инициализирована

26.06.2012, 17:43. Показов 13104. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет решил написать простенький класс.Вот обьявление:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#pragma once
#include <iostream>
#include <windows.h>
using namespace std;
#define UNLEN 256
class Name{
public:
    Name();
    ~Name();
    SYSTEMTIME GetuserTime(){return time;}
    wstring  * GetuserName(){return compname;}
    wstring * GetuserComputerName(){return name;}
private:
    wstring* name;
    wstring* compname;
    SYSTEMTIME time;
 
};
вот определеение
C++
1
2
3
4
5
6
7
8
9
10
Name::Name(){
    name[UNLEN+1];
    DWORD size = sizeof(name);
GetUserName((LPWSTR)name,&size);
compname[MAX_COMPUTERNAME_LENGTH+1];
    DWORD sizecomp=sizeof(compname);
    GetComputerName((LPWSTR)compname,&sizecomp);
    GetSystemTime(&time);
}
Name::~Name(){}
А вот сама прога использующая этот класс
C++
1
2
3
4
5
6
7
int _tmain(int argc, _TCHAR* argv[])
{
    Name * i =new Name;
    wstring * ifd = i->GetuserName();
    MessageBox(0,(LPWSTR)ifd,L"blabla",MB_OK);
    return 0;
}
Пишет что переменная не инициализирована.Пробую использовать new пишет в дебаге наршение прав доступа.А в релизе просто вылетает.Скажите что у меня может быть не правильно?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
26.06.2012, 17:43
Ответы с готовыми решениями:

Переменная не инициализирована
Доброго времени суток. Tree.h #pragma once #include &lt;iostream&gt; template&lt;typename T&gt; struct Tree {

Проверить, что переменная не инициализирована
Кто знает, как узнать, записано ли какое-либо значение в переменную любого типа (char *, массив, структура...)?

Ошибка 4700, переменная инициализирована
Написала программу для подсчета количества различных дней недели в году. Выдает ошибку 4700 - использована не инициализированная локальная...

11
 Аватар для edward_jonson
163 / 163 / 68
Регистрация: 23.02.2011
Сообщений: 392
26.06.2012, 18:16
Не совсем по сути вопроса, но:
C++
1
2
    wstring  * GetuserName(){return compname;}
    wstring * GetuserComputerName(){return name;}
Здесь вы перепутали возвращаемые значения, я так думаю что должно быть
C++
1
2
    wstring  * GetuserName(){return name;}
    wstring * GetuserComputerName(){return compname;}
1
6 / 0 / 0
Регистрация: 29.12.2011
Сообщений: 9
26.06.2012, 20:17  [ТС]
Знаю.Уже исправил.

Добавлено через 34 минуты
Не ужели не кто не поможет.

Добавлено через 1 час 20 минут
ну помогите а то расплачусь
0
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
27.06.2012, 00:13
smothdrive, да память под name и compname ты неверно выделял да ещё и с new накосил. Вот работоспособный код на сонове твоей логики построения класса (я убрал из него юникод, т.к. смысла вообще в нём не вижу)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#include <string>
#include <iostream>
#include <windows.h>
using namespace std;
 
#define UNLEN 256
class Name
{
public:
    Name();
    ~Name();
    SYSTEMTIME GetuserTime(){return time;}
    char * GetuserName()    {return name;}
    char * GetuserComputerName(){return compname;}
private:
    char name    [UNLEN];
    char compname[UNLEN];
    SYSTEMTIME time;
};
 
Name::Name()
{
    DWORD size = sizeof(name);
    GetUserName(name,&size);
    DWORD sizecomp=sizeof(compname);
    GetComputerName(compname,&sizecomp);
    GetSystemTime(&time);
}
 
Name::~Name()
{
 
}
 
int main()
{
    Name * ptr =new Name();
    MessageBox(NULL,ptr->GetuserName(),"Caption",MB_OK);
    return 0;
}
Миниатюры
Переменная не инициализирована  
Вложения
Тип файла: rar smothdrive1.exe.rar (18.9 Кб, 3 просмотров)
Тип файла: rar smothdrive1_project.rar (24.5 Кб, 3 просмотров)
2
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
27.06.2012, 00:29
Что же касается меня, то я бы построил класс таким образом
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
#include <iostream>
#include <windows.h>
#include <lmcons.h>//UNLEN is defined in Lmcons.h.
using namespace std;
 
class Name
{
public:
    Name();
    ~Name();
    SYSTEMTIME GetuserTime();
    char * GetuserName();
    char * GetuserComputerName();
private:
    char *name    ;
    char *compname;
    SYSTEMTIME ptime;
};
 
Name::Name()
{
    name     = new char[UNLEN];
    compname = new char[UNLEN];
    ZeroMemory(&ptime,sizeof(SYSTEMTIME));
}
 
Name::~Name()
{
    if(name)
        delete [] name;
    if(compname)
        delete [] compname;
}
 
SYSTEMTIME Name::GetuserTime()
{
    GetLocalTime(&ptime);
    return ptime;
}
 
char * Name::GetuserName()
{
    DWORD size = UNLEN;
    GetUserName(name,&size);
    return name;
}
 
char * Name::GetuserComputerName()
{
    DWORD size = UNLEN;
    GetComputerName(compname,&size);
    return name;
}
 
int main()
{
    Name * ptr =new Name();
    MessageBox(NULL,ptr->GetuserName(),"INFO",MB_OK);
    MessageBox(NULL,ptr->GetuserComputerName(),"INFO",MB_OK);
    return 0;
}
Вложения
Тип файла: rar smothdrive2.exe.rar (21.5 Кб, 4 просмотров)
Тип файла: rar smothdrive2_project.rar (4.9 Кб, 4 просмотров)
2
6 / 0 / 0
Регистрация: 29.12.2011
Сообщений: 9
27.06.2012, 20:50  [ТС]
Спасибо большое все заработало.Но есть одна маленькая проблема.Я ниписал программу которая записывает данные класса в файл.Время системное выводит нормально но вот имя пользователя и компа нет(какие то каракули).вот код
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
int _tmain(int argc, _TCHAR* argv[])
{
    char filename[80];
    char close[82];
    cout<<"Enter File name: ";
    cin >> filename;
   ifstream fin(filename,ios::binary);
    Name file;
   fin.read((char*)&file,sizeof file);
   cout<<"\n User name is:"<<file.GetuserName();
   cout<<"\n User Computer name is:"<<file.GetuserComputerName();
   SYSTEMTIME time =file.GetuserTime();
   cout<<"\n User Year is: "<<time.wYear<<" User Month is: "<<time.wMonth<<" User DayOfWeek is: "<<time.wDayOfWeek<<" User Day is: "<<time.wDay<<" User Hour is: "<<time.wHour<<" User Minute is: "<<time.wMinute<< "User Second is: "<<time.wSecond<<" User Millisecond is: "<<time.wMilliseconds;
   cin >> close;
    return 0;
}
Добавлено через 1 час 59 минут
Опять все кинули меня?
0
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
28.06.2012, 09:24
Цитата Сообщение от smothdrive Посмотреть сообщение
Опять все кинули меня?
- никто тебя не кидал, к примеру у людей могут быть свои дела и заботы, более важные чем писанина кода. По поводу каракулей скажу - они от того что русские символы без специальных методов преобразования некорректно будут отображаться что в контексте консоли, что в контексте файла
Вариантов множество, но я предлагаю наиболее простой - использовать setlocale
Код класса абсолютно не требует никаких изменений, а вот код main я немножко преобразовал
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
int main()
{
    Name * ptr =new Name();
    setlocale(LC_ALL,"RUS");
    ofstream ofs("info.txt");
    ofs<<"UserName     : "<<ptr->GetuserName()<<endl;
    ofs<<"ComputerName : "<<ptr->GetuserComputerName()<<endl;
    ofs.close();
    cout<<"UserName     : "<<ptr->GetuserName()<<endl;
    cout<<"ComputerName : "<<ptr->GetuserComputerName()<<endl;
    system("pause");
    return 0;
}
Вложения
Тип файла: rar smothdriveRUS.exe.rar (52.5 Кб, 5 просмотров)
Тип файла: rar smothdriveRUS_project.rar (3.7 Кб, 3 просмотров)
1
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
28.06.2012, 09:30
После отработки алгоритма в каталоге с экзешником (а если отлаживаем то в каталоге проекта появиться файл info.txt с полученной инфой). Отработка приложения на скрине (имя своего компьютера я стёр, так что вместо белых полей идут конкретные имя пользователя и компьютера)
Миниатюры
Переменная не инициализирована  
1
6 / 0 / 0
Регистрация: 29.12.2011
Сообщений: 9
28.06.2012, 16:54  [ТС]
Вот доработаная версия моей проги.Русские буквы так и не отображает.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
    char filename[80];
    char close[82];
    setlocale(LC_ALL,"RUS");
    cout<<"Enter File name: ";
    cin >> filename;
   ifstream fin(filename,ios::binary);
    Name file;
   fin.read((char*)&file,sizeof file);
   cout<<"\n User name is:"<<file.GetuserName();
   cout<<"\n User Computer name is:"<<file.GetuserComputerName();
   SYSTEMTIME time =file.GetuserTime();
   cout<<"\n User Year is: "<<time.wYear<<" User Month is: "<<time.wMonth<<" User DayOfWeek is: "<<time.wDayOfWeek<<" User Day is: "<<time.wDay<<" User Hour is: "<<time.wHour<<" User Minute is: "<<time.wMinute<< "User Second is: "<<time.wSecond<<" User Millisecond is: "<<time.wMilliseconds;
   cin >> close;
0
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
28.06.2012, 22:02
smothdrive, прошу тебя перестань ты делать всё по своему!
Цитата Сообщение от smothdrive Посмотреть сообщение
ifstream fin(filename,ios::binary);
- прости за некую грубость, НО НА КОЙ ЧЁРТ ТЫ УПОРНО СТАВИШЬ ПОТОК ЧТЕНИЯ ifstream???!!!!!
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
ofstream ofs
, в файл пишут ofstream-ом а ifstream читают, как можно данные читать из файла, если логика твоей программы получить инфу и записать её в файл.
Цитата Сообщение от smothdrive Посмотреть сообщение
fin.read((char*)&file,sizeof file);
- объясни мне пожалуйста, чё это за хренотень написана???Ты privat поля класса считать хочешь, парень, думаешь головой что делаешь???Структуру ещё можно так считать, но для этого она хотябы в теле класса должна быть и не приват переменной. Рекомендую для этого в классе сделать реализовать отдельный метод.
Далее
Цитата Сообщение от smothdrive Посмотреть сообщение
Русские буквы так и не отображает.
, версия того в чём ты пишешь, что это DevC, 6-ая студия?Я подавал код для 9-й версии, причём проект надо открывать не через срр а через sln файл(если открывал срр и делал построение из существующего кода то гробил настройки проекта
Вобщем друг не расстаривай меня, вначале всё у тебя было гуд, я лишь только подталкивал, но сейчас когда уже подал код пишуший в файл инфу, на кой чёрт вот это делал
Цитата Сообщение от smothdrive Посмотреть сообщение
fin.read((char*)&file,sizeof file);
, жду от тебя переосмысления, возможно вопросов, а также чёткого указания компилятора на котором всё пытаешся реализовать.
НЕ злись на меня а пиши конкретно зачем ввёл чтение из файла и вообще
0
6 / 0 / 0
Регистрация: 29.12.2011
Сообщений: 9
01.07.2012, 20:13  [ТС]
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
smothdrive, прошу тебя перестань ты делать всё по своему!
- прости за некую грубость, НО НА КОЙ ЧЁРТ ТЫ УПОРНО СТАВИШЬ ПОТОК ЧТЕНИЯ ifstream???!!!!!, в файл пишут ofstream-ом а ifstream читают, как можно данные читать из файла, если логика твоей программы получить инфу и записать её в файл.
- объясни мне пожалуйста, чё это за хренотень написана???Ты privat поля класса считать хочешь, парень, думаешь головой что делаешь???Структуру ещё можно так считать, но для этого она хотябы в теле класса должна быть и не приват переменной. Рекомендую для этого в классе сделать реализовать отдельный метод.
Далее , версия того в чём ты пишешь, что это DevC, 6-ая студия?Я подавал код для 9-й версии, причём проект надо открывать не через срр а через sln файл(если открывал срр и делал построение из существующего кода то гробил настройки проекта
Вобщем друг не расстаривай меня, вначале всё у тебя было гуд, я лишь только подталкивал, но сейчас когда уже подал код пишуший в файл инфу, на кой чёрт вот это делал
, жду от тебя переосмысления, возможно вопросов, а также чёткого указания компилятора на котором всё пытаешся реализовать.
НЕ злись на меня а пиши конкретно зачем ввёл чтение из файла и вообще
Мне нужно чтение из бинарного файла.У меня уже есть прога для записи в фаил там проблемм нет.Приват переменную я получаю функцией.У меня 10 студия(2010)
0
6 / 0 / 0
Регистрация: 29.12.2011
Сообщений: 9
02.07.2012, 21:09  [ТС]
алё люди
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
02.07.2012, 21:09
Помогаю со студенческими работами здесь

Условие того, что переменная не инициализирована
Доброго времени суток! Можно ли как нибудь реализовать такое условие: &quot;Если переменная не инициализирована или в ходе работы программы не...

Ошибка: "переменная proverka не инициализирована"
Здравствуйте. Выводится ошибка, в которой пишет,что переменная proverka не инициализирована. Не знаю как исправить. Задание и снимок ошибки...

Глобальная переменная определена в хидере. Компилятор ругается на то, что переменная переопределена несколько раз
Исходники: /* main.cpp */ #include &quot;hider.h&quot; int main(void) { return 0; } /* foo.cpp */

Переменная или переменная и условие
Привет всем. Стало интересно. Есть предположим функция. В ней ссылкой передается аргумент Status; Как лучше сделать? ...

Переменная не инициализирована
консольное окно не активно


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru