geoer 发表于 2008-2-3 10:36

如何按格式读取文本框Edit Text中的内容

本帖最后由 ChaChing 于 2010-8-18 23:40 编辑

直接用get读取如下:=uiputfile({'*.txt','文本文档(*.txt)';'*.*','所有文件(*.*)'},'另存为');
str=;
strw=get(handles.edit1,'String');
fid=fopen(str,'wt');
fprintf(fid,strw);
fclose(fid);当文本框中的内容为多行时,MATLAB将其作为一个矩阵存入strw。这样的话,文本框中的内容是按列存入文本文件的,不能按原样写入文本文件。请问怎样才能将文本框中的内容按格式写入文本文件,也就是如何将文本框读取到的字符串进行变换,变换到它原来的格式。

eight 发表于 2008-2-3 11:25

文本框中的内容是按列存入文本文件的
看不懂。我的测试结果:

geoer 发表于 2008-2-3 12:08

看来我还是理解错了,我以为strw的值已经混排了,原来是在写入文本文件的时候混排的.如下为将1楼代码粘贴到pushbutton1的回调函数里后的运行结果,就是我所说的是按列存入的,并且将两行左对齐了。

[ 本帖最后由 geoer 于 2008-2-3 12:15 编辑 ]

geoer 发表于 2008-2-3 12:33

本帖最后由 ChaChing 于 2010-8-18 23:34 编辑

现在的问题是如何能保持编辑框内原来的格式不变存入文本文件?
我的测试结果怎么不一样呢?是个2*9的字符数组啊。




[ 本帖最后由 geoer 于 2008-2-3 12:36 编辑 ]

eight 发表于 2008-2-3 12:53

原帖由 geoer 于 2008-2-3 12:21 发表 http://www.chinavib.com/forum/images/common/back.gif
现在的问题是如何能保持编辑框内原来的格式不变存入文本文件?

一行一行写入吧,fprintf(fid,strw{i}); 试试

geoer 发表于 2008-2-3 13:05

对这下应该比较容易了,知道了strw的行列,检测行数和列数后,一行行写就行。你那个测试有毛病吧,strw应该是如下:


[ 本帖最后由 geoer 于 2008-2-3 13:21 编辑 ]

eight 发表于 2008-2-3 13:18

原帖由 geoer 于 2008-2-3 13:05 发表 http://www.chinavib.com/forum/images/common/back.gif
对这下应该比较容易了,知道了strw的行列,检测行数和列数后,一列一列写就行。你那个测试有毛病吧,str应该是如下:
32561
我输入的时候没有按回车,是自动换行的,不知道是否有差别

geoer 发表于 2008-2-3 13:23

那应该就是这个问题,按回车就是另一行了,我的按了。没按的就按一行读入。

eight 发表于 2008-2-3 13:24

原帖由 geoer 于 2008-2-3 13:23 发表 http://www.chinavib.com/forum/images/common/back.gif
那应该就是这个问题,按回车就是另一行了,我的按了。没按的就按一行读入。

反正得到的 strw 是一个cell数组,写入文件时一行一行写就ok了

geoer 发表于 2008-2-3 13:28

本帖最后由 ChaChing 于 2010-8-18 23:36 编辑

这么写就对了,还是差点,因为在strw时空格就被忽略了。改成左对齐方式,读出来跟原来也有差别,还得改改。=size(strw)
fid=fopen(str,'wt');
for i=1:m
for j=1:n
fprintf(fid,strw(i,j));
end
fprintf(fid,'\n');
end
fclose(fid);
不是单元数组吧,是字符数组,用{}的话就要报错的吧。

eight 发表于 2008-2-3 13:39

原帖由 geoer 于 2008-2-3 13:29 发表 http://www.chinavib.com/forum/images/common/back.gif
不是单元数组吧,是字符数组,用{}的话就要报错的吧。

你看我2楼的图片吧,难道不同版本的matlab会有此区别?没关系啦,搞定就行

geoer 发表于 2008-2-3 13:50

那是完整的解决问题就行,谢谢。
页: [1]
查看完整版本: 如何按格式读取文本框Edit Text中的内容