DELPHI盒子
!实时搜索: 盒子论坛 | 注册用户 | 修改信息 | 退出
检举帖 | 全文检索 | 关闭广告 | 捐赠
技术论坛
 用户名
 密  码
自动登陆(30天有效)
忘了密码
≡技术区≡
DELPHI技术
lazarus/fpc/Free Pascal
移动应用开发
Web应用开发
数据库专区
报表专区
网络通讯
开源项目
论坛精华贴
≡发布区≡
发布代码
发布控件
文档资料
经典工具
≡事务区≡
网站意见
盒子之家
招聘应聘
信息交换
论坛信息
最新加入: jeff1314
今日帖子: 0
在线用户: 8
导航: 论坛 -> 移动应用开发 斑竹:flyers,iamdream  
作者:
男 hq200306 (200306) ★☆☆☆☆ -
普通会员
2018/12/2 7:46:09
标题:
Rad 10.3编译的android程序在三星s5下TBitmap的SaveToFile或SaveToStream报错 浏览:3162
加入我的收藏
楼主: 一、在我的手机三星S5,Android 6.0.1,用刚出的10.3版本编译的android一个小功能,发现TBitmap的SaveToFile或SaveToStream报错:Error in context method 'DoCopyBits'

步奏:
1、放个控件到Fmx窗体:
  Image1: TImage;  

2、
  Image1.Bitmap.LoadFromFile('x.jpg');//随便调入一个jpg文件
 
  bmp1 := Image1.Bitmap.CreateThumbnail(300, 400);//建一bitmap
  try
    try
      bmp1.SaveToFile('a.jpg');
    except
      on e: exception do
      begin
        ShowMessage('出错:' + e.Message);//这里报错:Error in context method 'DoCopyBits'
      end;
    end;
  finally
    bmp1.Free;
  end;


二、这功能用10.3编译成在windows程序,运行是正确的
三、用Rad 10.0、10.1、10.2任何一版本编译成android的程序,运行也正确,就10.3编译的Android程序运行报错,对比了一下Rad 10.2和10.3版本的源码:FMX.Graphics,FMX.Surfaces,几乎没有改动,但程序就是报错
----------------------------------------------
-
作者:
男 hq200306 (200306) ★☆☆☆☆ -
普通会员
2018/12/2 9:55:49
1楼: 上面代码段把输出改为内存流也报错
  stream := TMemoryStream.Create;
  bmp1 := Image1.Bitmap.CreateThumbnail(300, 400);
  try
    try
      bmp1.SaveToStream(stream);
    except
      on e: exception do
      begin
        ShowMessage('出错:' + e.Message);
      end;
    end;
  finally
    bmp1.Free;
    stream.Free;
  end;
----------------------------------------------
-
作者:
男 wang_80919 (Flying Wang) ★☆☆☆☆ -
普通会员
2018/12/2 10:29:19
2楼: 说了几百遍了
去 qc 。
https://quality.embarcadero.com/browse/RSP-21828

10.3
Log.d(SOpenGLErrorFlag, [Flag, TranslateErrorCode(Flag)]);
说明 如果发生了错误,会有日志,赶紧 给 EMB 报告这个日志。
----------------------------------------------
(C)(P)Flying Wang
作者:
男 hq200306 (200306) ★☆☆☆☆ -
普通会员
2018/12/2 12:16:37
3楼: 有人报了就行
----------------------------------------------
-
作者:
男 wang_80919 (Flying Wang) ★☆☆☆☆ -
普通会员
2018/12/2 12:41:04
4楼: 报了这个错误,文件保存成功了吗?
如果成功了,就忽略这个错误。
----------------------------------------------
(C)(P)Flying Wang
作者:
男 hq200306 (200306) ★☆☆☆☆ -
普通会员
2018/12/2 13:08:18
5楼: 安卓下没有保存成功,单步调试也不行,就算将目录指到source\fmx下,重新编译所有的单元也不行,一到那语句就报错
----------------------------------------------
-
作者:
男 wang_80919 (Flying Wang) ★☆☆☆☆ -
普通会员
2018/12/2 13:34:39
6楼: 成功与否得看文件内容。
报错只不过是 GL 函数完成之后才发生的。
GL 函数执行过程并没有被打断。
----------------------------------------------
(C)(P)Flying Wang
作者:
男 wang_80919 (Flying Wang) ★☆☆☆☆ -
普通会员
2018/12/2 13:36:39
7楼:     try
      try
        bmp1.SaveToFile('a.jpg');
      except
        bmp1.SaveToFile('a.jpg'); //先给他一次发生错误的机会。
      end;
    except
      on e: exception do
      begin
        ShowMessage('出错:' + e.Message);//这里报错:Error in context method 'DoCopyBits'
      end;
    end;
----------------------------------------------
(C)(P)Flying Wang
作者:
男 hq200306 (200306) ★☆☆☆☆ -
普通会员
2018/12/2 13:51:21
8楼: 我是测一下10.3罢了,不是拿来用,但核对了下FMX.Graphics,FMX.Surfaces,和10.2比较几乎没有改动,不知其原理,换了几个版本sdk/ndk都不行
----------------------------------------------
-
作者:
男 wang_80919 (Flying Wang) ★☆☆☆☆ -
普通会员
2018/12/2 14:01:08
9楼: 不配合测试,就解决不了问题。
我只知道,如何忽略这个错误,也就是不产生这个错误的提示。
但是,错误不提示,不表错误就消失了。

另外这不是 ndk 问题。
也不是 sdk 问题。
也就是说:换也是白换。
跟何况的 EMB 要求 NDK 不能换低版本。
SDK 不能换任何非官方指定的版本。
10.3 必须是 R28 + API26。
----------------------------------------------
(C)(P)Flying Wang
作者:
男 sxqwhxq (步惊云) ★☆☆☆☆ -
普通会员
2018/12/2 18:41:05
10楼: 换别的机型呢?如果一个工具要考虑不同的版本的sdk、ndk或java,还要考虑不同的手机机型,那就完蛋了。
----------------------------------------------
-
作者:
男 stacker (OOP才是王道) ★☆☆☆☆ -
普通会员
2018/12/2 18:47:41
11楼: RIO 10.3为了相容于Android 8,应该牺牲了不少相容性,现在编绎出来的apk是基于目标API 26的,而且ndk也换版本了。也许国内的朋友不知道,从8月起,所有新上架谷歌商店的apk都一律要基于API 26,在此之前,都是基于API 14的,那是相容于Android 4的。11月起,所有维护中的apk也一律都要基于API 26,所以如果想要使用旧版本的朋友,还是用回旧版的比较好。
----------------------------------------------
-
作者:
男 wang_80919 (Flying Wang) ★☆☆☆☆ -
普通会员
2018/12/2 20:32:03
12楼: 我们国内的 各种市场,也规定了,大概 过几个月,也必须 API 26。

而且,现在提交新项目,也必须是 API 26了。
----------------------------------------------
(C)(P)Flying Wang
作者:
男 bdl1 (bdl1) ▲▲▲▲▲ -
普通会员
2018/12/3 8:27:50
13楼: 在华为荣耀7x上无此问题。
android 8.0.0
----------------------------------------------
-我的博客
作者:
男 sail2000 (小帆工作室) ★☆☆☆☆ -
盒子活跃会员
2018/12/3 9:34:33
14楼: 直接savto到一个文件名而不添加指定目录名有点危险吧?
----------------------------------------------
delphi 是兴趣,和工作无关,即使它倒闭。又不靠它 delphi 吃饭,怕甚?
作者:
男 hq200306 (200306) ★☆☆☆☆ -
普通会员
2018/12/3 10:05:07
15楼: 仅是写个简易语句,为了看明bitmap的savetoStream或saveTofie报错罢了,Qc上已经报了https://quality.embarcadero.com/browse/RSP-21828,和我的手机都是三星s5 androiud6.0.1
----------------------------------------------
-
作者:
男 wang_80919 (Flying Wang) ★☆☆☆☆ -
普通会员
2018/12/3 10:13:27
16楼: 不配合测试,就解决不了问题。
我只知道,如何忽略这个错误,也就是不产生这个错误的提示。
但是,错误不提示,不表错误就消失了。

如果 文件保存成功了,只是成功之后,弹出这个错误。
那么,就表明,我们完全可以忽略他。
----------------------------------------------
(C)(P)Flying Wang
信息
登陆以后才能回复
Copyright © 2CCC.Com 盒子论坛 v3.0.1 版权所有 页面执行67.87109毫秒 RSS