DELPHI盒子
!实时搜索: 盒子论坛 | 注册用户 | 修改信息 | 退出
检举帖 | 全文检索 | 关闭广告 | 捐赠
技术论坛
 用户名
 密  码
自动登陆(30天有效)
忘了密码
≡技术区≡
DELPHI技术
lazarus/fpc/Free Pascal
移动应用开发
Web应用开发
数据库专区
报表专区
网络通讯
开源项目
论坛精华贴
≡发布区≡
发布代码
发布控件
文档资料
经典工具
≡事务区≡
网站意见
盒子之家
招聘应聘
信息交换
论坛信息
最新加入: webb123
今日帖子: 10
在线用户: 29
导航: 论坛 -> DELPHI技术 斑竹:liumazi,sephil  
作者:
女 wfymqj (wfymqj) ★☆☆☆☆ -
盒子活跃会员
2017/6/26 11:40:33
标题:
有人能帮忙把TMPHexEditor Ex移植到Delphi10上使用不 浏览:1615
加入我的收藏
楼主: 我自己试了一下,总出现以下错误
[dcc32 错误] mphexeditor.pas(5792): E2064 Left side cannot be assigned to


function TCustomMPHexEditor.ShowDragCell(const X, Y: integer): integer;
var
  LIntDragPos,
    LIntMouseX,
    LIntMouseY: integer;
begin
  with MouseCoord(X, Y) do
  begin
    LIntMouseX := X;
    LIntMouseY := Y;
    if X < GRID_FIXED then
      X := GRID_FIXED;  //此行报错,这个引用到了Vcl.Grids
    if Y >= RowCount then
      Y := RowCount - 1;
    if Y < GRID_FIXED then
      Y := GRID_FIXED;
    LIntDragPos := GetPosAtCursor(X, Y)
  end;
----------------------------------------------
-
作者:
男 wang_80919 (Flying Wang) ★☆☆☆☆ -
普通会员
2017/6/26 11:43:30
1楼: const 要是能赋值,就怪了。
----------------------------------------------
(C)(P)Flying Wang
作者:
女 wfymqj (wfymqj) ★☆☆☆☆ -
盒子活跃会员
2017/6/26 11:47:24
2楼: 这个不是我加的,是原来的源代码就如此,在Delphi7下正常。

我再在Delphi7下看一下。

我的理解 MouseCoord(X, Y).X := GRID_FIXED; 而不是对Const 的 X常量赋值,不知道对不对

谢谢回复了。
----------------------------------------------
-
作者:
男 zswleo (Wisz) ★☆☆☆☆ -
盒子活跃会员
2017/6/26 13:16:26
3楼: X := GRID_FIXED;  //此行报错,这个引用到了Vcl.Grids
那你定位一下这个X,看看会定位到哪里?
----------------------------------------------
Love computer  love  programming
作者:
男 iamdream (银河恒久远,梦想无止境!) ★☆☆☆☆ -
大贡献会员
2017/6/26 14:39:21
4楼: 这段代码用with就是累死人的节奏,改成这样试试:
function TCustomMPHexEditor.ShowDragCell(const X, Y: integer): integer;
var
  coord: TGridCoord;
  LIntDragPos,
  LIntMouseX,
  LIntMouseY: integer;
begin
  coord := MouseCoord(X, Y);
  with coord do
  begin
    LIntMouseX := X;
    LIntMouseY := Y;
    if X < GRID_FIXED then
      X := GRID_FIXED;  //此行报错,这个引用到了Vcl.Grids
    if Y >= RowCount then
      Y := RowCount - 1;
    if Y < GRID_FIXED then
      Y := GRID_FIXED;
    LIntDragPos := GetPosAtCursor(X, Y)
  end;

我认为with后的X/Y都是指MouseCoord得到的X/Y,而不是那个参数中的X/Y.
抱歉,没有这个TMPHexEditor的代码,只能靠猜。
----------------------------------------------
-广袤璀璨的银河,永无止境的梦想(梦无止境游银河) 博客挂了……
作者:
女 wfymqj (wfymqj) ★☆☆☆☆ -
盒子活跃会员
2017/6/27 9:15:40
5楼: 谢谢iamdream ,按你的写法,目前修改的部分编译通过了。后面还有其它的问题,我先试着处理吧。
----------------------------------------------
-
作者:
女 wfymqj (wfymqj) ★☆☆☆☆ -
盒子活跃会员
2017/6/27 10:06:22
6楼: 以下问题麻烦各位帮忙看下,谢谢!

procedure TranslateBufferFromAnsi(const TType: TMPHTranslationKind; aBuffer: PChar;
  bBuffer: PAnsiChar; const aCount: integer);
var
  LIntLoop: integer;
begin
  case TType of
    // changed 04/18/04: bBuffer and aBuffer were interchanged!
    tkAsIs: Move(aBuffer^, bBuffer^, aCount);
    tkDOS8,
      tkASCII: CharToOEMBuff(aBuffer, bBuffer, aCount);
    tkMAC: if aCount > 0 then
        for LIntLoop := 0 to Pred(aCount) do
          bBuffer[LIntLoop] :=
          MPH_CCONV_MAC[cctFromAnsi][Ord(aBuffer[LIntLoop])];  //此行报[dcc32 错误] mphexeditor.pas(2164): E2010 Incompatible types: 'AnsiChar' and 'Char'
    tkBCD: if aCount > 0 then
        for LIntLoop := 0 to Pred(aCount) do
          bBuffer[LIntLoop] :=
          
          
          [cctFromAnsi][Ord(aBuffer[LIntLoop])]; //此行报[dcc32 错误] mphexeditor.pas(2168): E2010 Incompatible types: 'AnsiChar' and 'Char'

    tkCustom: if aCount > 0 then
        for LIntLoop := 0 to Pred(aCount) do
          bBuffer[LIntLoop] :=
          MPHCustomCharConv[cctFromAnsi][Ord(aBuffer[LIntLoop])]; //此行报[dcc32 错误] mphexeditor.pas(2173): E2010 Incompatible types: 'AnsiChar' and 'Char'

  end;
end;

其中MPH_CCONV_MAC为二维数组,定义如下:
  MPH_CCONV_MAC: TMPHCharConv = (
    //ansi to mac
    (#$00, #$01, #$02, #$03, #$04, #$05, #$06, #$07, #$08, #$09, #$0A, #$0B,
    #$0C, #$0D, #$0E, #$0F,
    ......
    ),
    // mac to ansi
    (#$00, #$01, #$02, #$03, #$04, #$05, #$06, #$07, #$08, #$09, #$0A, #$0B,
    #$0C, #$0D, #$0E, #$0F,
    ......
    )
    );
    
  MPH_CCONV_BCD38、MPHCustomCharConv也是类似的二维数组 

注:原来的源代码中,aBuffer、bBuffer均被定义为PChar
----------------------------------------------
-
作者:
女 wfymqj (wfymqj) ★☆☆☆☆ -
盒子活跃会员
2017/6/27 14:31:04
7楼: 我已经修改好一个版本,没有完全测试。用到我的小软件上,基本上是对的。

再次感谢:iamdream
此帖子包含附件:wfymqj_201762714312.rar 大小:597.3K
----------------------------------------------
-
作者:
男 iamdream (银河恒久远,梦想无止境!) ★☆☆☆☆ -
大贡献会员
2017/6/27 15:04:05
8楼: 不客气,只是一点小建议。此外,你放上来的RAR我下了打不开呢,真奇怪。
----------------------------------------------
-广袤璀璨的银河,永无止境的梦想(梦无止境游银河) 博客挂了……
作者:
女 wfymqj (wfymqj) ★☆☆☆☆ -
盒子活跃会员
2017/6/27 15:16:47
9楼: 我用的是WinRAR5.31,如果打不开,你可能用的是 WinRAR4及以下版本
----------------------------------------------
-
作者:
男 iamdream (银河恒久远,梦想无止境!) ★☆☆☆☆ -
大贡献会员
2017/6/27 15:35:36
10楼: 嗯,可否上传一个zip格式的?我记得winrar可以压缩成zip的。我用的是7zip。
----------------------------------------------
-广袤璀璨的银河,永无止境的梦想(梦无止境游银河) 博客挂了……
作者:
男 iamdream (银河恒久远,梦想无止境!) ★☆☆☆☆ -
大贡献会员
2017/6/28 9:27:05
11楼: 装了个新版的7zip,可以打开了。
----------------------------------------------
-广袤璀璨的银河,永无止境的梦想(梦无止境游银河) 博客挂了……
信息
登陆以后才能回复
Copyright © 2CCC.Com 盒子论坛 v3.0.1 版权所有 页面执行105.4688毫秒 RSS