我正在编写一个MATLAB GUI程序,其中文本框中的数据存储在.dat文件中。当重新加载程序时,文本框从文件中提取数据(这样用户就不必每次都重新输入信息)。这部分代码将数据保存到.dat文件中:
fid = fopen('textboxdata.dat', 'wt');
fprintf(fid, '%sn', host);
fprintf(fid, '%sn', username);
fprintf(fid, '%sn', password);
fclose(fid);
[主机、用户名和密码为字符串]
这部分代码获取数据并放入文本框中:
s = dir('textboxdata.dat');
if s.bytes ~= 0
fid = fopen('textboxdata.dat', 'rt');
A = textscan(fid, '%s', 3);
A = A{1};
set(handles.hostbox, 'String', A(1))
set(handles.usernamebox, 'String', A(2))
set(handles.passwordbox, 'String', A(3))
fclose(fid);
end
现在这很好,但当用户试图使用这些数据登录到FTP服务器时,我会收到以下错误:
使用===>fprintf时出错未为"单元格"输入定义函数。
===>realgui>登录按钮回调198时出错fprintf(fid,'%s',主机);
===>gui_mainfcn中的错误,96feval(varargin{:});
===>realgui在42时出错guid_mainfcn(guid_State,varargin{:});
===>@(hObject,eventdata)realgui('logonbutton_Callback',hObject,事件数据,gui数据(hObject))中的错误
但奇怪的是,如果你重新键入所有数据,你就可以登录到FTP服务器了!我在这里完全迷路了。有人知道发生了什么吗?
A = A{1}
生成包含字符串的单元格数组。
因此,当您调用set(handles.hostbox, 'String', A(1))
时,A(1)的值实际上是一个单元格,而不是您希望的字符串
由于A(1)
是包含字符串的单元格,因此希望使用A{1}
引用单元格中包含的字符串。
花括号表示单元格的内容,括号表示单元格及其内容。