69 / 62 / 13
Регистрация: 10.01.2012
Сообщений: 508

Сохранить и извлечь структуру из структуры

23.12.2018, 15:37. Показов 1559. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Hi!

При извлечении VARVALUESELECT, постоянно извлекается только последняя запись.
Что не так, и как с этим бороться?


Вот так собираю variables value структуру (VARVALUESELECT select), по факту row из mysql в удобоваримом виде для работы c freeswitch (сплошной char).

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
int MYSQ_SELECT_FOR_MULTY_ROWS_RESULT(char *db_ds_name, char *QUERY, ROWSOFSELECT rowsSelect){
 
    VARVALUESELECT select;
    ROWSOFSELECT selectrdRows;
 
/////бла-бла-бла
 
    selectrdRows = SelectedRowsCreate();
 
        while ((row = mysql_fetch_row(result)))
        {
            debug("!!!!!!!!!!!!!!!!!!!!!!  Cicle %i", ic);
            select = SelectCreate();
            int i = 0;
            for (i = 0; i < num_fields; i++)
            {
                fields = mysql_fetch_fields(result);
           
        debug("[%s]=[%s]\n", "result", row[i]); 
        debug("[%s]=[%s]\n", fields[i].name, row[i]);
        
        SelectInsert(select, fields[i].name, row[i] ? row[i] : "0");
            }
            SelectedRowsInsert(rowsSelect, ic, select);
            SelectedRowsDestroy(select);
           ic++;
        }
 
}
Так собираю variables value структуру (ROWSOFSELECT selectrdRows)

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
void SelectedRowsInsert(ROWSOFSELECT plist, int num, VARVALUESELECT *oneRow)
{
    RowsOfSelect *hdr = (RowsOfSelect *) plist;
 
    RowsOfSelect *newrec = malloc(sizeof (RowsOfSelect));
 
   if (newrec == NULL || newrec == 0x0 || num == NULL || oneRow == NULL || oneRow == 0x0){
       if(newrec == NULL) debug("Out of memory newrec == NULL");
       if(newrec == NULL) debug("Out of memory newrec == 0x0");
       if(num == NULL) debug("Out of memory num == NULL");
       if(num == NULL) debug("Out of memory oneRow == NULL");
       if(num == NULL) debug("Out of memory oneRow == 0x0");
      return;
   }           
   newrec->next = NULL;
   newrec->num_order = num;
   newrec->row = oneRow;
   memcpy(&newrec->row,&oneRow,sizeof (oneRow));
 
   newrec->next = hdr->next;
   hdr->next = newrec;
 
}
Так пытаюсь извлекать VARVALUESELECT select из ROWSOFSELECT selectrdRows чтоб впоследствии получить значения variables /values

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
VARVALUESELECT *SelectedRowsFind(ROWSOFSELECT plist, int num)
{
    RowsOfSelect *hdr = (RowsOfSelect *) plist;
 
    while (hdr->next)
    {
        hdr = hdr->next;
        if (hdr->num_order = num)
        {
            return hdr->row;
        } else {
            
        }
    }
 
    return NULL;
}
Хедр
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
typedef void *ROWSOFSELECT;
 
extern ROWSOFSELECT selectedRows;
 
typedef void *VARVALUESELECT;
 
extern VARVALUESELECT mSelect;
 
 
typedef struct _RowsOfSelect
{
    int num_order;
    VARVALUESELECT row;
    struct _RowsOfSelect *next;
} RowsOfSelect;
 
typedef struct _Select
{
    char *name;
    char *value;
    struct _Select *next;
} Select;
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
23.12.2018, 15:37
Ответы с готовыми решениями:

Как правильно сохранить структуру, унаследованную от структуры, содержащую виртуальный деструктор?
Здравствуйте! Имеется структура: struct Product { int mId; double mCost; int mAmount; Product() {}

Правильно извлечь и сохранить ico
Здравствуйте! Необходимо извлечь и сохранить иконку из исполняемого файла. Извлекаю иконку таким образом ...

Сохранить и извлечь из бинарного файла
Добрый день! Есть 2 кнопки, одна сохраняет в бинарный файл, а другая должна создать из него оригинальный файл и сохранить на диск. В...

4
69 / 62 / 13
Регистрация: 10.01.2012
Сообщений: 508
12.01.2019, 16:17  [ТС]
up!
0
725 / 224 / 73
Регистрация: 01.03.2011
Сообщений: 643
13.01.2019, 10:37
Лучший ответ Сообщение было отмечено zoleg как решение

Решение

Цитата Сообщение от zoleg Посмотреть сообщение
if (hdr->num_order = num)
оно?
1
69 / 62 / 13
Регистрация: 10.01.2012
Сообщений: 508
13.01.2019, 17:04  [ТС]
Ага. Именно в этом месте что то не так. Всегда return hdr->row; возвращает последнюю запись. Например: я вкидываю 3 row, пытаюсь извлечь row где num_order = 1, возврат NULL,
row где num_order = 2 , возврат NULL,
row где num_order = 3 , BINGO возврат row, где num_order = 3.

Добавлено через 3 часа 52 минуты
Ё.пэ.рэ,сэ.тэ! Ну ка как же ! = ==
0
725 / 224 / 73
Регистрация: 01.03.2011
Сообщений: 643
15.01.2019, 15:06
Цитата Сообщение от zoleg Посмотреть сообщение
Ё.пэ.рэ,сэ.тэ!
-Wall со-товарищи рулят
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
15.01.2019, 15:06
Помогаю со студенческими работами здесь

Как извлечь данные из таблицы и сохранить в Word?
Как извлечь данные из таблицы которая в базе и сохранить данные в воорд или любой другой документ. как это сделать?

Как извлечь инф-ю из HTML и сохранить в БД (любая)???
вот напр. есть телепрограмма {ссылка удалена} нужно ее занести в БД?

Извлечь данные из упакованной двоичной структуры
Поле управления диспетчером кадра в протоколе управления логическим каналом имеет формат: №...

как сохранить в массиве байт разнотипную информацию, а потом извлечь ее
Есть массив байт byte mass; есть переменные int a=10; char b = 'w'; string c=&quot;строка&quot;; как перевести эти...

Извлечь все ссылки из ярлыков .url и сохранить в текстовый файл
Доброго времени суток Ребята, помогите пожалуйста извлечь все ссылки из ярлыков .url и сохранить ссылки (по одной на строку) в текстовый...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

Новые блоги и статьи
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать контроль заполнения реквизита "ПричинаСписания". . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Программное заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru