Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
pozishow
0 / 0 / 0
Регистрация: 17.11.2016
Сообщений: 25
1

Как соединить 2 кода воедино или как хранить переменные в массиве?

10.04.2017, 22:15. Просмотров 286. Ответов 1
Метки нет (Все метки)

Уважаемые форумчане, есть 2 кода, один умеет через меню выводить текст хранящийся в массиве(далее код1), а второй умеет получать текст с сайта(JSON) и выводить его(далее код2-получание, код3-вывод). Мне же нужно, чтобы код запускал меню, но потом в зависимости от выбранного пункта в нем, выводил переменную с полученным с сайта текстом. В каждом пункте меню будет свой текст. Я так понимаю в массиве нужно будет хранить переменные, но в 3 коде над полученным текстом идут разные преобразования и я не знаю как это сделать не для одного элемента, но чтобы не загружать файл лишней информацией и как помещать в массив эти самые переменные. Заранее благодарен!
Код1:
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
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
#include "pebble.h"
 
static Window* window;
static MenuLayer *menu_layer;
static Window* window_text;
static ScrollLayer *scroll_layer;
static TextLayer *text_layer;
 
static const char* messages[] = {"Текст 1",
                                 "Текст 2 ",
                                 "Текст 3"
                                 };
static int selected_message = 0;
 
void draw_row_callback(GContext *ctx, Layer *cell_layer, MenuIndex *cell_index, void *callback_context)
{
    switch(cell_index->row)
    {
    case 0:
        menu_cell_basic_draw(ctx, cell_layer, "Меню 1", " ", NULL);
        break;
      case 1:
        menu_cell_basic_draw(ctx, cell_layer, "Меню 2", " ", NULL);
        break;
    case 2:
        menu_cell_basic_draw(ctx, cell_layer, "Меню 3", " ", NULL);
        break;
       }
}
 
uint16_t num_rows_callback(MenuLayer *menu_layer, uint16_t section_index, void *callback_context)
{
    return 3;
}
 
void select_click_callback(MenuLayer *menu_layer, MenuIndex *cell_index, void *callback_context)
{
  selected_message = cell_index->row;
  window_stack_push(window_text, true);
}
 
void window_load(Window *window)
{
    menu_layer = menu_layer_create(GRect(0, 0, 144, 168 - 16));
   
    menu_layer_set_click_config_onto_window(menu_layer, window);
   
    MenuLayerCallbacks callbacks = {
        .draw_row = (MenuLayerDrawRowCallback) draw_row_callback,
        .get_num_rows = (MenuLayerGetNumberOfRowsInSectionsCallback) num_rows_callback,
        .select_click = (MenuLayerSelectCallback) select_click_callback
    };
    menu_layer_set_callbacks(menu_layer, NULL, callbacks);
   
    layer_add_child(window_get_root_layer(window), menu_layer_get_layer(menu_layer));
}
 
 
void window_unload(Window *window)
{
    menu_layer_destroy(menu_layer);
}
 
void select_multi_click_handler(ClickRecognizerRef recognizer, void *context) {
 text_layer_set_text(text_layer, "   ");
}
 
void config_provider(void *context) {
  window_multi_click_subscribe(BUTTON_ID_SELECT, 2, 2, 0, true, select_multi_click_handler);
}
 
void window_text_load(Window *window)
{
    text_layer = text_layer_create(GRect(0, 0, 144, 10000));
  text_layer_set_background_color(text_layer, GColorWhite);
  window_set_fullscreen(window, true); 
  text_layer_set_text_color(text_layer, GColorBlack);
  text_layer_set_font(text_layer, fonts_get_system_font(FONT_KEY_GOTHIC_24));
  text_layer_set_text(text_layer, messages[selected_message]);
  scroll_layer = scroll_layer_create(GRect(0, 0, 144, 168));
  scroll_layer_set_content_size(scroll_layer, text_layer_get_content_size(text_layer));
  scroll_layer_set_shadow_hidden(scroll_layer, false);
  scroll_layer_set_click_config_onto_window(scroll_layer, window);
  ScrollLayerCallbacks callbacks = {
    .click_config_provider = config_provider
  };
  scroll_layer_set_callbacks(scroll_layer, callbacks);
  scroll_layer_add_child(scroll_layer, text_layer_get_layer(text_layer));
  layer_add_child(window_get_root_layer(window), scroll_layer_get_layer(scroll_layer));
}
 
void window_text_unload(Window *window)
{
  scroll_layer_destroy(scroll_layer);
    text_layer_destroy(text_layer);
}
 
void init()
{
  window_text = window_create();
    WindowHandlers handlers_text = {
        .load = window_text_load,
        .unload = window_text_unload
    };
  window_set_window_handlers(window_text, (WindowHandlers) handlers_text);
 
    window = window_create();
    WindowHandlers handlers = {
        .load = window_load,
        .unload = window_unload
    };
    window_set_window_handlers(window, (WindowHandlers) handlers);
    window_stack_push(window, true);
}
 
void deinit()
{
    window_destroy(window);
  window_destroy(window_text);
}
 
int main(void)
{
    init();
    app_event_loop();
    deinit();
}
Код2:
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
function HTTPGET(url) {
    var req = new XMLHttpRequest();
    req.open("GET", url, false);
    req.send(null);
    return req.responseText;
}
 
var getWeather = function() {
    //Get weather info
  var response = HTTPGET("http://sitee.ru/pebble.html");
        
    //Convert to JSON
    var json = JSON.parse(response);
    
    //Extract the data
    var text = json.text;
    
    //Construct a key-value dictionary  
    var dict = {"KEY_LOCATION" : text};
  
  console.log(text);
    
    //Send data to watch for display
    Pebble.sendAppMessage(dict);
};
 
Pebble.addEventListener("ready",
  function(e) {
    //App is ready to receive JS messages
    getWeather();
  }
);
 
Pebble.addEventListener("appmessage",
  function(e) {
    //Watch wants new data!
    getWeather();
  }
);
Код3:
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
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
#include <pebble.h>
 
Window* window;
TextLayer *location_layer; 
static ScrollLayer *scroll_layer;
 
char location_buffer[1024];
 
enum {
    KEY_LOCATION = 0,
};
 
void process_tuple(Tuple *t)
{
    //Get key
    char key = t->key;
 
    //Get string value, if present
    char string_value[1024];
    strcpy(string_value, t->value->cstring);
 
    //Decide what to do
    switch(key) {
        case KEY_LOCATION:
            //Location received
            snprintf(location_buffer, 1024, "%s", string_value);
            text_layer_set_text(location_layer, (char*) &location_buffer);
      scroll_layer_set_content_size(scroll_layer, text_layer_get_content_size(location_layer));
  scroll_layer_set_shadow_hidden(scroll_layer, false);
  scroll_layer_set_click_config_onto_window(scroll_layer, window);
  scroll_layer_add_child(scroll_layer, text_layer_get_layer(location_layer));
  layer_add_child(window_get_root_layer(window), scroll_layer_get_layer(scroll_layer));
            break;
    }
}
 
static void in_received_handler(DictionaryIterator *iter, void *context) 
{
    (void) context;
    
    //Get data
    Tuple *t = dict_read_first(iter);
    while(t != NULL)
    {
        process_tuple(t);
        
        //Get next
        t = dict_read_next(iter);
    }
}
 
static TextLayer* init_text_layer(GRect location, GColor colour, GColor background, const char *res_id, GTextAlignment alignment)
{
    TextLayer *layer = text_layer_create(location);
    text_layer_set_text_color(layer, colour);
    text_layer_set_background_color(layer, background);
    text_layer_set_font(layer, fonts_get_system_font(res_id));
    text_layer_set_text_alignment(layer, alignment);
    return layer;
}
 
void window_load(Window *window)
{
  window_set_fullscreen(window, true); 
    location_layer = init_text_layer(GRect(5, 0, 144, 1000), GColorBlack, GColorClear, "RESOURCE_ID_GOTHIC_18", GTextAlignmentLeft);
    text_layer_set_text(location_layer, "N/A");
    layer_add_child(window_get_root_layer(window), text_layer_get_layer(location_layer));
  scroll_layer = scroll_layer_create(GRect(0, 0, 144, 168));
}
 
void window_unload(Window *window)
{   
   scroll_layer_destroy(scroll_layer);
    text_layer_destroy(location_layer);
}
 
void send_int(uint8_t key, uint8_t cmd)
{
    DictionaryIterator *iter;
    app_message_outbox_begin(&iter);
    
    Tuplet value = TupletInteger(key, cmd);
    dict_write_tuplet(iter, &value);
    
    app_message_outbox_send();
}
 
void init()
{
    window = window_create();
    WindowHandlers handlers = {
        .load = window_load,
        .unload = window_unload
    };
    window_set_window_handlers(window, handlers);
 
    //Register AppMessage events
    app_message_register_inbox_received(in_received_handler);                    
    app_message_open(app_message_inbox_size_maximum(), app_message_outbox_size_maximum());      //Largest possible input and output buffer sizes
    
    //Register to receive minutely updates
 
    window_stack_push(window, true);
}
 
void deinit()
{
    window_destroy(window);
}
 
int main(void)
{
    init();
    app_event_loop();
    deinit();
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.04.2017, 22:15
Ответы с готовыми решениями:

Как сложить все вычисление квадрата чисел воедино
Всем привет! Прошу помочь с программкой, вот условие Напишите программу, которая запрашивает...

где хранить текст файлы? или как хранить данные?
Есть прога простенкая: берет инфу из текстфайла, редактирует и записывает обратно в тхт файл. Нужно...

Как хранить переменные на сервере
Есть сервер с PHP и MySQL, надо придумать как там хранить переменные, которые будут очень часто...

Соединить воедино две программы
Есть программа отделяющая корни уравнений: uses crt; var a,b,x1,x2,y1,y2,h,w,y,e:real;...

Как хранить сессионные переменные в SQL Server ?
Когда происходит recycling ASP NET worker process сессионные переменные теряются. Я читал, что...

1
shvyrevvg
725 / 541 / 270
Регистрация: 12.05.2016
Сообщений: 1,572
11.04.2017, 05:38 2
Цитата Сообщение от pozishow Посмотреть сообщение
Я так понимаю в массиве нужно будет хранить переменные, но в 3 коде над полученным текстом идут разные преобразования и я не знаю как это сделать не для одного элемента, но чтобы не загружать файл лишней информацией и как помещать в массив эти самые переменные. Заранее благодарен!
pozishow, ну Вы же в in_received_handler() получаете словарь(итератор), напишите для него поиск по ключу(если нет для этого готовой функции) и берите из него значения.

Добавлено через 1 минуту
https://developer.pebble.com/docs/c/Foundation/Dictionary/#dict_find
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.04.2017, 05:38

JScript.NET Evaluate: как и где хранить переменные скриптов
Доброго времени суток! Как исполнить код на JScript в C#, я уже нашёл на форуме. Ну, точнее, я...

Как хранить стили в бд или как вообще это реализовать
Имеется: Скрипт вывода таблицы с нужными полями из базы мускула. Он просто выводит все нужные поля...

Как соединить два кода
Помогите пожалуйста, как во фрагмент NavigationDrawer вставить код, расположенный ниже import...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru