吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1090|回复: 11
收起左侧

[求助] 把下面的代码转换成Delphi的case语句

[复制链接]
冥界3大法王 发表于 2022-6-19 20:05
[Delphi] 纯文本查看 复制代码
          if Pos('B000C3', ComboBox2.Text) > 0 then
          begin
            最终合体机器码 := 'B000C3';
          end;
          if Pos('B001C3', ComboBox2.Text) > 0 then
          begin
            最终合体机器码 := 'B001C3';
          end;
          if Pos('85C0', ComboBox2.Text) > 0 then
          begin
            最终合体机器码 := '85C0';
          end;
          if Pos('84C0', ComboBox2.Text) > 0 then
          begin
            最终合体机器码 := '84C0';
          end;
          if Pos('0F94C0', ComboBox2.Text) > 0 then
          begin
            最终合体机器码 := '0F94C0';
          end;
          if Pos('0F95C0', ComboBox2.Text) > 0 then
          begin
            最终合体机器码 := '0F95C0';
          end;
          if Pos('33C0', ComboBox2.Text) > 0 then
          begin
            最终合体机器码 := '33C0';
          end;
          if Pos('0BC0', ComboBox2.Text) > 0 then
          begin
            最终合体机器码 := '0BC0';
          end;
          if Pos('C3', ComboBox2.Text) > 0 then
          begin
            最终合体机器码 := 'C3';
          end;
          if Pos('0F85', ComboBox2.Text) > 0 then
          begin
            最终合体机器码 := '0F85';
          end;
          if Pos('0F84', ComboBox2.Text) > 0 then
          begin
            最终合体机器码 := '0F84';
          end;
          if Pos('75XX', ComboBox2.Text) > 0 then
          begin
            最终合体机器码 := '74';
          end;
          if Pos('74XX', ComboBox2.Text) > 0 then
          begin
            最终合体机器码 := '75';
          end;
          if Pos('90', ComboBox2.Text) > 0 then
          begin
            最终合体机器码 := DupeString('90', StrToInt(读取到的所在行_所占字节数.Value));
          end;



以上代码,是简单,但很不科学啊~~

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

DEATHTOUCH 发表于 2022-6-19 21:37
整俩字符串列表然后遍历吧
特殊情况再专门处理一下
manyou 发表于 2022-6-19 22:10
一定要用case的话,可以看下这个文章https://www.iteye.com/blog/xmchcly-1269705
不过我觉得这段代码不用case更好解决。
把字符串都存到TStringList里,使用TStringList.IndexOf(ComboBox2.Text)>=0判断是否有这个值即可
不过我看个别输出值和判断值是不一样的,那可以用TstringList的AddPair的方式保存,使用TStringList.Values取下标判断
 楼主| 冥界3大法王 发表于 2022-6-19 22:11
看来也不省事啊,就这样吧,至少直观简单。
lies2014 发表于 2022-6-19 22:43
本帖最后由 lies2014 于 2022-6-19 22:49 编辑

用case不好实现,因为case的条件是否成立需要在执行前明确,你这个是根据结果才能确定,不过可以简化一下代码,一是看起来简洁,二是碰到符合条件的就跳出不用继续执行后面的判断
[Delphi] 纯文本查看 复制代码
var
  s: array[0..12] of string = ('B000C3','B001C3','85C0','84C0','0F94C0','0F95C0','33C0','0BC0','C3','0F85','0F84','75XX','74XX');
  i: Integer;
begin
  for i := 0 to 12 do
  begin
    if Pos(s[i], ComboBox2.Text) > 0 then
    begin
      最终合体机器码 := s[i];
      break;
    end;
  end;
end;
if Pos('90', ComboBox2.Text) > 0 then
begin
  最终合体机器码 := DupeString('90', StrToInt(读取到的所在行_所占字节数.Value));
end;

免费评分

参与人数 1吾爱币 +3 收起 理由
冥界3大法王 + 3 先生,你咋这么大本事呢,佩服~~

查看全部评分

andersgong 发表于 2022-6-20 08:05
case并不比if省事,逻辑清晰、便于维护才是宗旨。

免费评分

参与人数 1吾爱币 +1 收起 理由
冥界3大法王 + 1 我也有一定道理的啊。。。

查看全部评分

alphagis 发表于 2022-6-20 08:07
话说贴主放这么美的头像好么
vov5601 发表于 2022-6-20 09:17
lies2014 发表于 2022-6-19 22:43
用case不好实现,因为case的条件是否成立需要在执行前明确,你这个是根据结果才能确定,不过可以简化一下代 ...

您用的哪个版本的delphi   为什么delphi不稳定?
 楼主| 冥界3大法王 发表于 2022-6-20 10:56
alphagis 发表于 2022-6-20 08:07
话说贴主放这么美的头像好么

哈哈,看着舒服就得了。我看还是举报版主姥爷得1分实惠。
lies2014 发表于 2022-6-20 11:12
vov5601 发表于 2022-6-20 09:17
您用的哪个版本的delphi   为什么delphi不稳定?

现在不用Delphi,基本不编程,偶尔有些小需求用Lazarus就能搞定
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 11:01

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表