GUI 文本框显示问题
本帖最后由 zhyi49 于 2009-10-30 10:53 编辑求
theta = pi/2
输出时
theta=
1.5708
如何放同一行,即 这样〉 theta=1.5708
另外有个数据头,
Name=Prüfling 1
Comment=
Heading=
Line0=Antenne: vertikal
Line1=Bus-Leitung mit aktivem Master
Line2=
Line3=
Line4=
Line5=
Line6=
Param0=bis 30MHz: Schritt: Y=0,12 dB lin, X=0,012 MHz lin, t=50 ms,
Peak, 12 kHz, Meßbereich 60 dB, Low Noise, Vorverstärker ein, Rohde&Schwarz ESI
Param1=bis 300MHz: Schritt: Y=0,12 dB lin, X=0,12 MHz lin, t=50 ms,
Max Peak, 120 kHz, Meßbereich 50 dB, Low Noise, Vorverstärker ein, Rohde&Schwarz ESI
Param2=bis 1000MHz: Schritt: Y=0,12 dB lin, X=0,12 MHz lin, t=50 ms,
Max Peak, 120 kHz, Meßbereich 50 dB, Low Noise, Vorverstärker ein, Rohde&Schwarz ESI
Param3=
Param4=
Param5=
Param6=
Param7=
Param8=
Param9=
Tester=Hoh
No=01
DateTime=07.05.2009 09:13:22
StartTime=07.05.2009 09:01:58
XUnit=MHz
YUnit=dBµV/m
为读入以上数据头,我写的代码是
fid=fopen(fullname, 'r');
iii = 1;
headdata = filename;
while 1
ts=fgetl(fid);
idx = strfind(ts,'=');
if ~isempty(idx) && ~isequal(ts(end), '=')
headdata = ;
set(handles.edit1,'String',headdata)
用这句举例以下。在相应的位置显示出文件名。但显示不出来,
若为静态的却可以。比如
set(handles.edit1,'String','headdata')
if strncmp(ts, 'Name=', 5)
name = ts(idx+1:end);
end
if strncmp(ts, 'DateTime=', 9)
leg = ts(idx+1:end);
end
end
if (strcmp(ts, ''));
break;
end
end
对一行数据读入并显示在相应的文本框里,比如Name 很好处理,
但是对于Param1 一个项数据占用两或三行,该如何提取?
主要目的是,把数据文件头读入后等号后有内容的部分放入相应的文本框中。
却因为等号后内容不在同行,报错说不可以,
各位大虾给提些建议,若能有代码提示更好了。非常谢谢!
非常谢谢 第一个问题不知道怎么处理,感觉一行两行区别不大吧
第二个,直接按照关键字来读取,把你里面的类似Param这样的有意义的词语定义成关键字,写程序的时候,遇到这种关键字后就开始分析,直到下一个关键字,然后把关键字之间的语句进行分析,以逗号,空格等分析出字符串来,再在这个基础上分析出各个字符串的含义,这部分内容已经接近编译原理了,看看编译原理的书吧 如果格式明确,你可以手工指定读取格式! textscan等,都可以指定格式!最重要的是万能的 fscanf
如果只是有等号,逗号,空格等!还有英文的变量名,数字的变量值
用正规表达式吧(或者翻译成 正则表达式)
学习正规表达式,大约1个下午,就能满足你的应用了! 急阿,能不能给各代码,多谢! 想把结果放在GUI文本框里,但文本框只接受同行输入,所以出现这个问题的,各位能给个适用函数或代码吗,非常感谢! theta=1.5708 ;
disp(['theta=' num=str(theta)]);
就可以实现第一步。 我的输出是动态的。就是Matlab 自动格式是
theta=
1,5708
GUI 文本框报错说,两行输出不能接受。。。 本帖最后由 风天小畜 于 2009-10-27 20:56 编辑
我的输出是动态的。就是Matlab 自动格式是
theta=
1,5708
GUI 文本框报错说,两行输出不能接受。。。
zhyi49 发表于 2009-10-27 19:56 http://forum.simwe.com/images/common/back.gif
文本框是支持多行的,你只需要看看help即可。
help是英文的,只要不采用“跳读”的方法,你就发现下面这句话:
For multiple line editable text or statictext controls, line breaks occur between each row of thestring matrix, and each cell of a cell array of strings. Verticalslash ('|') characters and \n characters are notinterpreted as line breaks, and instead show up in the text displayedin the uicontrol.. to,风天小畜,我的还是不可以,重新修改了一下描述,各位大虾帮帮。 哪位老大能帮帮阿。能给各代码建议更好,谢个先!
页:
[1]