memo加载图片在内存中的数据,只显示?问号

stmal 2014-01-09 10:22:36
procedure TForm1.btn1Click(Sender: TObject);
var
men:TMemoryStream;
begin
men := TMemoryStream.Create;
men.LoadFromFile('F:\T1800.jpg');
men.Position := 0;
mmo1.Lines.LoadFromStream(men); //以memo控件 只显示一个 ? 问号。不能加载图片在内存中的数据。
men.SaveToFile('F:\1.txt'); //以文本文件方式保存 可以显示图片在内存中的数据。
men.Free;
end;

//怎么办啊?memo控件好像有某些字符不能加载啊,每当memo加载到一些特殊字符,该字符后面的内容就被省略了。求解~!
...全文
413 13 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
Andy-88 2014-02-08
  • 打赏
  • 举报
回复
这样是你想要的吗
haitao 2014-01-22
  • 打赏
  • 举报
回复
memo是存放、显示文本的 图片文件里有不可见字符 如果为了保存,无须通过memo,流内容直接savetofile好了
Andy-88 2014-01-22
  • 打赏
  • 举报
回复
procedure TForm1.Button3Click(Sender: TObject); var memo:TMemoryStream; i:Integer; buf:array[1..10240]of Byte; stemp:string; begin memo:=TMemoryStream.Create; memo.LoadFromFile('d:\T1800.jpg'); memo.Read(buf,Length(buf)); for i:=Low(buf) to High(buf)do begin stemp:=stemp+chr(buf[i]); end; mmo1.Text:=stemp; end;
DelisPhi 2014-01-22
  • 打赏
  • 举报
回复
哦以上关于字符串的内容只限于直接赋值给Memo.Lines.Text其余没试。如果要处理这种字符串建议用Pchar+转义字符解决。
DelisPhi 2014-01-22
  • 打赏
  • 举报
回复
6楼正解,另外我可以很明确的告诉你,我之前做过下试验,发现如果一段字符串中间含有#0,那么这个#0后面的内容都会丢失不会被保存出去。一般图片的EXIF都有大量#0。 最保险的方法就是把图片内容读入内存后,转成Base64编码。引用TIdEncoder,然后用EncodeStream来处理图像流,让他能显示,保存时再用DecodeStream还原。
Andy-88 2014-01-21
  • 打赏
  • 举报
回复
明白LZ 的意思只是这个不是这样显示出来的 显示出来了也没啥 意义
火龙岛主 2014-01-20
  • 打赏
  • 举报
回复
可以使用base64编码来显示。
youyidianmimang 2014-01-20
  • 打赏
  • 举报
回复
因为很多字符,你在编辑框里是显示不出来的,所以才会很多是?;
stmal 2014-01-16
  • 打赏
  • 举报
回复
我很想把这个贴子结了, 还有人可以给出更好的答案吗?
simonhehe 2014-01-16
  • 打赏
  • 举报
回复
如果只是保存文本文件的话, 改扩展名就行了
stmal 2014-01-10
  • 打赏
  • 举报
回复
怎么只有一个人回复啊? 还有其它方法吗?
sololie 2014-01-09
  • 打赏
  • 举报
回复
天太冷了,热拌吧

procedure TForm1.btn1Click(Sender: TObject);
var
  f: file;
  i: Integer;
  buf: array[1..10239] of Byte;
begin
  AssignFile(f, 'F:\T1800.jpg');
  FileMode := 0;
  Reset(f, 1);
  BlockRead(f, buf, Length(buf));
  CloseFile(f);

  with TEdit.Create(Self) do
  begin
    for i := Low(buf) to High(buf) do
      Text := Text + chr(buf[i]);
    mmo1.Text := Text;
    Free;
  end;
end;
不过这种代码没什么意义

5,927

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧