Я использую listbox
для отображения сообщений и журналов моей программы. Чтобы добавить строки во время работы программы, я определил глобальный индекс, такой как
function pushbutton_Callback(hObject, eventdata, handles)
global idx
%stuff
idx = idx + 1;
logs_data(idx,1) = cellstr('First string');
set(handles.logs, 'String', logs_data); %Listbox
%other stuff
Используя global, я подумал, что на первой итерации (когда я нажимаю кнопку в первый раз), idx
- это пустая ячейка, которую я инициализирую как 1
. Я написал строку, а затем, если я снова нажму кнопку, idx
становится 2
, добавляя новую строку ниже предыдущей. Единственная проблема заключается в том, что когда я это делаю, массив logs_data
становится вектором с пустыми ячейками, кроме той, которая была добавлена в настоящее время.
Например, если я нажму кнопку 5 раз, я хочу получить logs_data
массив 5x1 с внутренними строками
Iteration 1
Iteration 2
Iteration 3
Iteration 4
Iteration 5
но я получаю это вместо
[]
[]
[]
[]
Iteration 5
Как я могу решить это? В другом случае я мог бы использовать for
цикл с увеличением idx
, но, поскольку здесь я нахожусь внутри кнопки Callback, я не могу использовать это решение.