Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.91/11: Рейтинг темы: голосов - 11, средняя оценка - 4.91
9 / 9 / 3
Регистрация: 06.03.2014
Сообщений: 106

Ошибка <unavailable synchronous data> при передаче переменной

17.10.2014, 23:26. Показов 2645. Ответов 30
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте уважаемые программисты. Столкнулся с такой проблемой, как <unavailable synchronous data>. То есть при передаче переменной в функцию она принимает такое значение. Более подробно видно на скриншоте. Если кто знает возможные пути решения - буду рад любым советам.


+ вид переменной при передаче в функцию
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
17.10.2014, 23:26
Ответы с готовыми решениями:

Ошибка <unavailable synchronous data>
Здравствуйте уважаемые программисты. Столкнулся с такой проблемой, как &lt;unavailable synchronous data&gt;. То есть при передаче переменной в...

Ошибка при передаче переменной из метода
Требуется помощь по лабораторной работе по C# Windows Forms Проблема в передаче (выводе) значения одной переменной 'x' из этого метода: ...

Ошибка при передаче по значению переменной типа fstream
При вызове функции MassStep компилятор выдает следующую ошибку: Project V10.cpp(82): call to deleted constructor of 'std::fstream' (aka...

30
5500 / 4895 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
18.10.2014, 00:22
Студворк — интернет-сервис помощи студентам
yur@, я такую ошибку первый раз вижу. Кстати, про размер... Адреса 32-х битные?
0
Модератор
Эксперт по электронике
8982 / 6749 / 921
Регистрация: 14.02.2011
Сообщений: 23,875
18.10.2014, 00:24
Цитата Сообщение от alsav22 Посмотреть сообщение
Почему нет, если по размеру подходит?
скорее всего подходит, обычно int и указатель одного размера
но кто гарантировал
такие вольности с указателями до добра не доводят
почему не просто структура
C++
1
2
3
4
5
6
struct start
{
 int q;
int sz;
void *buf
};
Цитата Сообщение от yur@ Посмотреть сообщение
что проблема может быть в дебагере,
она самая
Цитата Сообщение от yur@ Посмотреть сообщение
p=p+2;
все испортил указатель
дебагер не видит служебной информации new и сходит с ума
0
5500 / 4895 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
18.10.2014, 00:25
Цитата Сообщение от yur@ Посмотреть сообщение
Просто структура массива имеет следующий вид:
Ты ещё и за массив вылазишь... Студийный дебагер туда что-то своё пишет.
0
Модератор
Эксперт по электронике
8982 / 6749 / 921
Регистрация: 14.02.2011
Сообщений: 23,875
18.10.2014, 00:28
Цитата Сообщение от alsav22 Посмотреть сообщение
Ты ещё и за массив вылазишь...
не не вылазит, он же сдвинул указатель
но то что это грязный хак это точно
если работать с ним то выбрасывать дебагер и или отладочная печать или дебажить уже готовую программу, той же Олькой
0
5500 / 4895 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
18.10.2014, 00:33
По индексу -4, в дебаге, пшется размер массива в байтах.

Добавлено через 2 минуты
Цитата Сообщение от ValeryS Посмотреть сообщение
не не вылазит, он же сдвинул указатель
Если не вылазит, тогда скрин в 16 посте неправильный.
0
Модератор
Эксперт по электронике
8982 / 6749 / 921
Регистрация: 14.02.2011
Сообщений: 23,875
18.10.2014, 00:35
Цитата Сообщение от alsav22 Посмотреть сообщение
По индексу -4 размер массива в байтах.
не понял, откуда 4?

два инта по 4 итого 8 байт
но здесь то
p=p+2;
плюс два указателя, итого те же 8 байт
в результате за выделенную память не вылазит
если я правильно подсчитал
0
5500 / 4895 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
18.10.2014, 02:29
Цитата Сообщение от ValeryS Посмотреть сообщение
не понял, откуда 4?
Это я про другое написал. Я про это (работает в студии, в дебаге):
C++
1
2
3
    double* str = new double[10];
    int* pint = (int*)str;
    cout << pint[-4] << endl; // размер массива в байтах
Добавлено через 35 минут
yur@, компилятор какой?

Добавлено через 1 час 5 минут
Цитата Сообщение от yur@ Посмотреть сообщение
То есть при передаче переменной в функцию она принимает такое значение.
Эту ошибку показывает компилятор при сборке? Или просто видно при отладке? CountR не получает нужного значения и пр.?
В проекте только С++, без Qt?
0
9 / 9 / 3
Регистрация: 06.03.2014
Сообщений: 106
18.10.2014, 02:58  [ТС]
alsav22, я немного тщательнее прошел по отладке и понял, что ошибка кроется где-то в выгрузке из файла, а не в загрузке. Потому что, хоть и показывает, что переменные не определены, в результате работы программы в поля заносятся правильные значения. а в результате выгрузки происходит ошибка.
0
5500 / 4895 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
18.10.2014, 03:01
Цитата Сообщение от yur@ Посмотреть сообщение
а в результате выгрузки происходит ошибка.
Какая? Что пишет?
0
9 / 9 / 3
Регистрация: 06.03.2014
Сообщений: 106
18.10.2014, 03:47  [ТС]
alsav22, компилятор ошибку не выдает, но при выгрузке поля с количеством элементов первого уровня - ничего не происходит. То есть, если смотреть по коду, то СountR должен поменяться после вызова fread, но реально он остается таким же. Функцию выгрузки прилагаю:
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
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
bool RestoreMltListFromFile(void ** &PtrArrR)
{
    TFile f;
    if ((f = fopen("kursach.txt", "rb")) == NULL)
    {
        return false;
    }
    int CountR=0;
    TRegion Struct_Reg;
    TArea   Struct_Area;
    TDistrict   Struct_Distr;
 
    void**  PtrArrA;
    void**  PtrArrD;
 
    void*   PtrR;
    void*   PtrA;
    void*   PtrD;
    int i, j, k;
 
    fread(&CountR, sizeof(CountR), 1, f);
 
    PtrArrR = new void*[CountR+2];
 
 
    PtrArrR = (void**)(((int)PtrArrR) + sizeof(int) * 2);
 
    ((int*)PtrArrR)[POS_CNT] = CountR;
 
    ((int*)PtrArrR)[POS_SZ] = CountR;
 
    for (i = 0; i < CountR; i++)
    {
        fread(&Struct_Reg,  sizeof (Struct_Reg),  1,  f );
 
        PtrR = new TRegion;
        ((void**)PtrArrR)[i]= PtrR;
        strcpy(((TRegion*)PtrR)->name,  Struct_Reg.name);
        ((TRegion*)PtrR)->cntArea = Struct_Reg.cntArea;
        PtrArrA = new void*[Struct_Reg.cntAr+2];
 
        PtrArrA = (void**)(((int)PtrArrA) + sizeof(int) * 2);
 
 
        ( (int*) PtrArrA) [POS_CNT] =Struct_Reg.cntAr;
 
        ((int*)PtrArrA)[POS_SZ] = Struct_Reg.cntAr;
 
        ((TRegion*)PtrR)->sublev = PtrArrA;
 
        for (j=0;  j < Struct_Reg.cntAr;  j++ )
        {
            fread(&Struct_Area,  sizeof(Struct_Area), 1 ,f );
 
            PtrA = new TArea;
            ((void**)PtrArrA)[j] = PtrA;
            strcpy( ( (TArea*)PtrA)->name, Struct_Area.name);
            ((TArea*)PtrA) -> cntDistrict = Struct_Area.cntDistrict;
 
            PtrArrD = new void* [Struct_Area.cntDist+2];
 
            PtrArrD= (void**)(((int)PtrArrD) + sizeof(int) * 2);
 
            ((int*)PtrArrD)[POS_CNT] = Struct_Area.cntDist;
 
            ((int*)PtrArrD)[POS_SZ] = Struct_Area.cntDist;
 
            ((TArea*)PtrA) -> sublev = PtrArrD;
 
            for (k = 0;  k < Struct_Area.cntDist ;   k++ )
            {
                fread(&Struct_Distr, sizeof(Struct_Distr),1 , f);
                PtrD = new TDistrict;
                ((void**)PtrArrD)[k] = PtrD;
                strcpy(((TDistrict*)PtrD)->name,  Struct_Distr.name);
                strcpy(((TDistrict*)PtrD)->type_of_pollution,  Struct_Distr.type_of_pollution);
                ((TDistrict*)PtrD)->degree_of_pollution = Struct_Distr.degree_of_pollution;
                ((TDistrict*)PtrD)->cntPeople = Struct_Distr.cntPeople;
                ((TDistrict*)PtrD)->square = Struct_Distr.square;
            }
        }
    }
    return true;
}
Добавлено через 25 минут
alsav22, уважаемые форумчане, прошу прощения за столь долгие разбирательства. Причина оказаласть банальной. Я думаю все поймут:
C++
1
2
3
4
 }
    return true;
    fclose(f);
}
P.S. Часть из функции загрузки в файл.
0
5500 / 4895 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
18.10.2014, 12:21
Но код с кривизной: без специальных манипуляций с указателями, при попытке освобождения памяти, будет ошибка.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
18.10.2014, 12:21

Ошибка при передаче значения переменной между модулями
В стандартном модуле глобально объявлена булева переменная isNewNeed, при открытии формы ей присваивается значение true. Сразу же после...

Ошибка в конструкторе при передаче значения переменной из второй формы в первую
Добрый день! Помогите, пожалуйста. Из второй формы в первую передаю переменную string Sav: Form1 FF = new Form1(Sav); В...

Ошибка Unavailable database при создании БД
Добрый день! Помогите пожалуйста. Создаю новую базу данных, и выводит сообщение: Unsuccessful execution caused by an unavailable...

Ошибка доступа к папке Data Directory (App Data) при создании БД SQLSERVER
Ребята, такая проблемка - мне необходимо что бы при запуске моего приложения создавалась БД mssqlserver 2012. Как показано в инструкциях...

Выводит ошибку при передаче переменной методом $_GET
Вот у меня выводится содержимое каталога, каждый файл это ссылка, ну по коду поймете что она делает: &lt;?php $dir =...


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

Или воспользуйтесь поиском по форуму:
31
Ответ Создать тему
Новые блоги и статьи
Установка нескольких штампов электронной подписи в строго определенных местах файла docx
ВладимирСамохин 19.07.2026
(В!) Работа с Электронной подписью - это неотъемлемая часть современного документооборота. Но что делать, если нужно поставить несколько штампов электронной подписи в строго определенных местах. . .
сукцессия 35. Научная статья о проделанной работе
anaschu 19.07.2026
Написал в формате латекс и пдф
Вангую, что это не пройдёт модерацию, и на неделе я запущу свой сервер.
Hrethgir 19.07.2026
Эта публикация сейчас в песочнице и ждёт приглашения. https:/ / habr. com/ ru/ sandbox/ 295048/ начало и оглавление - Как «пернатого» заставить осваивать новые горизонты опыта через масштабирование. . .
сукцессия 33. открытые вопросы от клауде
anaschu 19.07.2026
"Что накопилось за эту часть А — тринадцать правок, из которых шесть пришли из ваших вопросов и каждая оказалась реальной ошибкой, а не калибровкой: односторонний симбиоз, отсутствующий листопад,. . .
32 сукцессия
anaschu 19.07.2026
сукцессия 28‑мерное ядро стабилизировано Коллеги, фиксирую разбор инженерных правок и их изоморфную проекцию на экономику, меметику и половой отбор. Модель теперь не «подкручивает» сходимость —. . .
сукцессия 31: модель микоризы - это модель ещё нескольких явлений, социальных и экономических
anaschu 18.07.2026
Теория «Всего»: апдейт v1. 1. 2 — 28‑мерное ядро стабилизировано Коллеги, фиксирую разбор инженерных правок и их изоморфную проекцию на экономику, меметику и половой отбор. Модель теперь не. . .
сукцессия 30. Массив проверяющих друг друга моделей
anaschu 18.07.2026
Архитектура сети взаимопроверяющих моделей микоризной сукцессии (v2. 0) Развитие тензорного ОДУ-ядра и создание кросс-платформенного калибровочного полигона Уважаемые коллеги! В продолжение. . .
Грибы - это женщины, деревья - это мужчины. Анти инь янь для союза мужчины и женщины.
anaschu 18.07.2026
ГЛАВНЫЙ НАУЧНО-ФИЛОСОФСКИЙ ВЫВОД: Сексуально-Репродуктивный Капитализм против Государства Моногамии Коллеги, мы вышли на финишную прямую 20-мерного ОДУ-моделирования вековой сукцессии (ветка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru