小编Mar*_*ioh的帖子

Delphi"with"关键字是一种不好的做法吗?

我一直在阅读关于delphi中with关键字的坏事,但在我看来,如果你不过度使用它.它可以使您的代码看起来很简单.

我经常将所有TClientDataSets和TField都放在TDataModules中.所以在我的表单中我有这样的代码

procedure TMyForm.AddButtonClick(Sender: TObject);
begin  
  with LongNameDataModule do
  begin
     LongNameTable1.Insert;
     LongNameTable1_Field1.Value := "some value";
     LongNameTable1_Field2.Value := LongNameTable2_LongNameField1.Value;
     LongNameTable1_Field3.Value := LongNameTable3_LongNameField1.Value;
     LongNameTable1_Field4.Value := LongNameTable4_LongNameField1.Value;
     LongNameTable1.Post;
  end
end;
Run Code Online (Sandbox Code Playgroud)

如果没有with关键字,我必须编写这样的代码

    procedure TMyForm.AddButtonClick(Sender: TObject);
    begin            
      LongNameDataModule.LongNameTable1.Insert;
      LongNameDataModule.LongNameTable1_LongNameField1.Value := "some value";

      LongNameDataModule.LongNameTable1_LongNameField2.Value :=
               LongNameDataModule.LongNameTable2_LongNameField1.Value;

      LongNameDataModule.LongNameTable1_LongNameField3.Value :=
               LongNameDataModule.LongNameTable3_LongNameField1.Value;

      LongNameDataModule.LongNameTable1_LongNameField4.Value :=
               LongNameDataModule.LongNameTable4_LongNameField1.Value;

      LongNameDataModule.LongNameTable1.Post;
    end;
Run Code Online (Sandbox Code Playgroud)

我认为使用with关键字更容易阅读.

我应该避免使用with关键字吗?

delphi with-statement

34
推荐指数
9
解决办法
1万
查看次数

更新多行Linq vs SQL

前段时间我写了一段代码来更新数据库表中的多行.代码是这样的

var db = new MyDataContext();
db.Execute("UPDATE Details SET IsActive = 0 WHERE MasterId = 1");
Run Code Online (Sandbox Code Playgroud)

然后有一天,当我得到文件的最新版本时,我看到有人将代码改为这样的东西

var details = from d in db.details where d.MasterId == 1 select d;
foreach (var detail in details)
  detail.IsActive = false;
db.SubmitChanges();
Run Code Online (Sandbox Code Playgroud)

所以我的问题是:更新多行的更好方法是什么?使用Linq还是SQL?

.net sql linq

17
推荐指数
2
解决办法
1万
查看次数

Delphi编程中的Enums vs Const vs Class Const

我在ClientDataSet中有一个整数字段,我需要比较一些值,如下所示:

我可以使用const

const
  mvValue1 = 1;
  mvValue2 = 2;

if ClientDataSet_Field.AsInteger = mvValue1 then
Run Code Online (Sandbox Code Playgroud)

或者枚举

TMyValues = (mvValue1 = 1, mvValue2 = 2);

if ClientDataSet_Field.AsInteger = Integer(mvValue1) then
Run Code Online (Sandbox Code Playgroud)

或类const

TMyValue = class
const
   Value1 = 1;
   Value2 = 2;
end;

if ClientDataSet_Field.AsInteger = TMyValues.Value1 then
Run Code Online (Sandbox Code Playgroud)

我喜欢类const方法,但似乎不是delphi的方式,所以我想知道你的想法

delphi

14
推荐指数
2
解决办法
2万
查看次数

侧边栏表格

如何在delphi中创建补充工具栏表单.

我尝试ScreenSnap和Align属性,但我需要表单即使用户最大化其他形式,仍然可见,而不是在顶部.就像windows侧边栏一样.

从评论中更新:如果窗口最大化,它也会使窗口最大化,而不是在前面或后面.

谢谢

delphi

3
推荐指数
1
解决办法
962
查看次数

标签 统计

delphi ×3

.net ×1

linq ×1

sql ×1

with-statement ×1