[讨论]简单的text文件查询
引用wangshxu于2006-7-8 21:59分的提问:我想编写一个小小界面程序,实现一个查询的功能,就是在edit框内输入一个英文缩写,点击查询按钮,把查询到的英文缩写和全称及中文解释等相关信息输出在listbox上,英文缩写和全称及中文解释全部存贮在TXT的文件上,这个查询Button的callback怎么写?
界面听起来挺有意思的,下面是我的尝试
文本文档里缩写全称和中文解释的保存形式为:
AAM air-to-air missile 空对空导弹
AMB antiballistic missile 反弹道导弹
AC alternating current 交流电
AEW airborne early warning 空中预先警报
Ag argentum 元素银
……
……
……
不好意思,我只会做这种形式的,假设文件名为text1.txt
生成gui的m程序:
function main_gui
clear;
global a b c d e;
h=figure('Units','normalized','Position',[0.3 0.3 0.45 0.35],'Color',[0.8,0.8,0.8],'Menubar','none', 'Resize','off');
set(h,'name','单词查询','numbertitle','off','createfcn','[a,b,c,d,e]=dataread(''file'',''text1.txt'',''%s%s%s%s%s'')');
h1=uicontrol('style','edit','position',[80,165,160,30],'horizontal','right');
h2=uicontrol('position',[260,165,120,30],'string','查 询','fontsize',15','callback','word_find');
h3=uicontrol('style','listbox','position',[80,60,300,60],'horizontal','left','fontsize',10);
做个用于调用查询单词的m程序:
function word_find
global a b c d e;
str=get(findobj(gcf,'style','edit'),'string');
string=[];
for i=1:length(a)
if length(cell2mat(a(i)))==length(str)
if cell2mat(a(i))==str
string=strcat(str,'?',cell2mat(b(i)),'?',cell2mat(c(i)),'?',cell2mat(d(i)),'?',cell2mat(e(i)));
string(string=='?')=' ';
set(findobj(gcf,'style','listbox'),'string',string);
end
end
end
if isempty(string)
set(findobj(gcf,'style','listbox'),'string','not find!');
end