此处将为大家介绍关于如何获取Delphi中的当前过程/函数的名称(作为字符串)的详细内容,并且为您解答有关delphi获取程序路径的相关问题,此外,我们还将为您介绍关于C#:如何从XElement获取
此处将为大家介绍关于如何获取Delphi中的当前过程/函数的名称(作为字符串)的详细内容,并且为您解答有关delphi 获取程序路径的相关问题,此外,我们还将为您介绍关于C#:如何从XElement获取名称(带前缀)作为字符串?、Dart 如何将枚举的名称作为字符串获取、database – Delphi:如何获取存储过程的输出参数的值?、delphi – 如何获取DBGrid单元格的屏幕坐标的有用信息。
本文目录一览:- 如何获取Delphi中的当前过程/函数的名称(作为字符串)(delphi 获取程序路径)
- C#:如何从XElement获取名称(带前缀)作为字符串?
- Dart 如何将枚举的名称作为字符串获取
- database – Delphi:如何获取存储过程的输出参数的值?
- delphi – 如何获取DBGrid单元格的屏幕坐标
如何获取Delphi中的当前过程/函数的名称(作为字符串)(delphi 获取程序路径)
我的方案是这样的:我有很多程序被给予记录,并且他们都需要从检查记录的有效性开始,所以他们将记录传递到“验证程序”。验证器过程(对于所有过程相同)会引发异常,如果记录无效,并且我希望异常的消息不包括验证器过程的名称,而是调用验证器的函数/过程的名称程序(自然)。
就是我有
procedure ValidateStruct(const Struct: TMyStruct; const Sender: string); begin if <StructIsInvalid> then raise Exception.Create(Sender + ': Structure is invalid.'); end;
接着
procedure SomeProc1(const Struct: TMyStruct); begin ValidateStruct(Struct,'SomeProc1'); ... end; ... procedure SomeProcN(const Struct: TMyStruct); begin ValidateStruct(Struct,'SomeProcN'); ... end;
如果我可以写一些类似的东西,这样会更容易出错
procedure SomeProc1(const Struct: TMyStruct); begin ValidateStruct(Struct,{$PROCNAME}); ... end; ... procedure SomeProcN(const Struct: TMyStruct); begin ValidateStruct(Struct,{$PROCNAME}); ... end;
然后每次编译器遇到一个{$ PROCNAME}时,它只需将“宏”替换为当前函数/过程的名称作为字符串文字。
更新
第一种方法的问题是容易出错。例如,由于复制粘贴,容易发生错误:
procedure SomeProc3(const Struct: TMyStruct); begin ValidateStruct(Struct,'SomeProc1'); ... end;
或打字错误:
procedure SomeProc3(const Struct: TMyStruct); begin ValidateStruct(Struct,'SoemProc3'); ... end;
或只是暂时的混乱:
procedure SomeProc3(const Struct: TMyStruct); begin ValidateStruct(Struct,'SameProc3'); ... end;
解决方法
然后我们所有的例程都遵循相同的模板,我们在Assert和其他异常提升中使用这个const。
由于const与常规名称的接近,很少有机会错字或任何差异会留在那里很久。
YMMV当然…
procedure SomeProc1(const Struct: TMyStruct); const SMethodName = 'SomeProc1'; begin ValidateStruct(Struct,SMethodName); ... end; ... procedure SomeProcN(const Struct: TMyStruct); const SMethodName = 'SomeProcN'; begin ValidateStruct(Struct,SMethodName); ... end;
C#:如何从XElement获取名称(带前缀)作为字符串?
我有一个XElement,其数据如下:
<abc:MyElement>My value</abc:MyElement>
题:
如何从XElement获取带有前缀的完整名称作为字符串?
预期结果:
abc:MyElement
解决方法
虽然不是一个漂亮的解决方案,它给了我我想要的东西:
XElement xml = new XElement(...); string nameWithPrefix = xml.GetPrefixOfNamespace(xml.Name.Namespace) + ":" + xml.Name.LocalName;
更优雅的解决方案非常受欢迎:)
Dart 如何将枚举的名称作为字符串获取
在 Dart 中提供枚举之前,我编写了一些繁琐且难以维护的代码来模拟枚举,现在想要简化它。我需要将枚举的名称作为字符串获取,例如可以用 Java
完成但不能。
例如,当我想要的是“MONDAY”时,小测试代码片段在每种情况下都会返回“day.MONDAY”
enum day {MONDAY,TUESDAY}
print( 'Today is $day.MONDAY');
print( 'Today is $day.MONDAY.toString()');
我是否更正了只需要解析字符串的“星期一”?
database – Delphi:如何获取存储过程的输出参数的值?
这是sql Server中的一个哑存储过程:
CREATE PROCEDURE [dbo].getValue @x INT OUTPUT AS BEGIN SET @x = 10; END
现在,这是我尝试过但不起作用的变体之一:
proc := TsqlDataSet.Create(nil); proc.sqlConnection := DefaultConnection; proc.CommandText := 'getValue'; proc.Params.CreateParam(ftInteger,'@x',ptOutput); proc.Params.ParamByName('@x').Value := 0; proc.Execsql(False); value := newIdProc.Params.ParamByName('@x').AsInteger;
我认为这很容易,但是围绕这个问题有一些registred bugs.
解决方法
proc := TsqlDataSet.Create(nil); proc.sqlConnection := DefaultConnection; proc.CommandType := ctStoredProc; proc.SchemaName := 'dbo'; proc.CommandText := 'getValue'; proc.Execsql(False); value := proc.Params.ParamByName('@x').AsInteger;
delphi – 如何获取DBGrid单元格的屏幕坐标
现在我只想知道如何获得网格坐标:
x = DBGrid.DataSource.DataSet.RecNo
y = DBGrid.Columns [index]
还有TCustomGrid.CellRect,它会做我想要的,但它受到保护,我不想继承和创建另一个组件类.
我能想到的一个疯狂的解决方法是将onDrawColumnCell事件中的TRect-s保存到某个数组中.
所以你怎么看 ?
编辑
如何获取当前行中第二个单元格的屏幕坐标?
解决方法
总结
以上是小编为你收集整理的delphi – 如何获取DBGrid单元格的屏幕坐标全部内容。
如果觉得小编网站内容还不错,欢迎将小编网站推荐给好友。
关于如何获取Delphi中的当前过程/函数的名称(作为字符串)和delphi 获取程序路径的介绍已经告一段落,感谢您的耐心阅读,如果想了解更多关于C#:如何从XElement获取名称(带前缀)作为字符串?、Dart 如何将枚举的名称作为字符串获取、database – Delphi:如何获取存储过程的输出参数的值?、delphi – 如何获取DBGrid单元格的屏幕坐标的相关信息,请在本站寻找。
本文标签: