我想创建一个函数,将某个类的所有名称作为字符串列表返回.基于之前的解决方案/问题,我尝试使用此代码但没有成功
function GetClassElementNames (TObject ) : TStringlist ;
var
LCtx : TRttiContext;
LMethod : TRttiMethod;
begin
try
LCtx:=TRttiContext.Create;
try
// list the methods for the any class class
for LMethod in LCtx.GetType(TObject).GetMethods do
result.add(LMethod.Name);
finally
LCtx.Free;
end;
except
on E: Exception do
result.add (E.ClassName + ': ' + E.Message);
end;
end;
Run Code Online (Sandbox Code Playgroud) 我尝试按照安装Indy10和Lazarus的说明进行操作.下载Indy 10下载后,使用正确的密码我只看到Delphi代码,没有名为lazarus或freepascal的文件夹.Indy10的Lazarus版本已被删除吗?
我在程序中得到了一组A,B,C,D这样的数字,有时我需要计算几个数字的总和,如:
function DoIt2 (a, b : Integer) : Integer ; overload
begin
result := a +b ;
end;
function DoIt3 (a, b, c : Integer) : Integer ; overload
begin
result := a +b +c ;
end;
Run Code Online (Sandbox Code Playgroud)
我的问题涉及很多DoIt的功能.我不能使用例如IntegerList,因为我需要知道什么是A和B等等.....与无尽的函数重载相比,有什么好的解决方案吗?
我需要一个用Java JAVA CODE解决方案的delphi解决方案
type
TColors = (red, green, blue, white, purple, orange, yellow, black);
type
TForm1 = class(TForm)
Button1: TButton;
Memo1: TMemo;
procedure Button1Click(Sender: TObject);
private
{ Private-Deklarationen }
public
{ Public-Deklarationen }
end;
var Form1: TForm1;
implementation
{$R *.fmx}
function RandomColor: TColors;
begin
result := blue; // make this random value from enum ????
end;
procedure TForm1.Button1Click(Sender: TObject);
var
s: string;
begin
s := GetEnumName(TypeInfo(TColors), integer(RandomColor));
Memo1.Lines.Add(s); /// print random color to memo
end;
Run Code Online (Sandbox Code Playgroud) 我可以通过仅分析exe文件来检测whex madexcept是否在delphi应用程序中使用?
是否有一种简单的方法是向我的应用程序添加几行代码并通知最终的exe文件用户是否使用了madshi madexcept
我使用MSSQL和ADO运行各种SQL语句.
代码序列如下所示:
aADOQuery.Active := False;
aADOQuery.SQL.Text := ' MY SQL STATEMENT ';
aADOQuery.ExecSQL;
aADOQuery.Active := True;
Run Code Online (Sandbox Code Playgroud)
如果SQL返回结果为空,则最后一条语句失败.如何检查这种情况以避免运行时错误?
注意:SQL语句来自用户键入SQL的备忘录.
我很难理解从GENERIC SEARCH修改解决方案, 因为我的类更复杂,我需要创建几个不同的搜索功能
procedure TForm1.Button1Click(Sender: TObject);
var
activities: TList<TActivityCategory>;
search: TActivityCategory;
begin
activities := TObjectList<TActivityCategory>.Create(
TDelegatedComparer<TActivityCategory>.Create(
function(const Left, Right: TActivityCategory): Integer
begin
Result := CompareText(Left.Name, Right.Name);
end));
.....
Run Code Online (Sandbox Code Playgroud)
假设我的TActivityCategory看起来像
TActivityCategory = class
FirstName : String;
Secondname : String;
onemore .....
end;
Run Code Online (Sandbox Code Playgroud)
如何在我的activtity类中实现搜索每个String?
什么是在Tstringlist中查找重复项的最快方法.我获得了在Stringlist中搜索重复项所需的数据.我目前的想法是这样的:
var TestStringList, DataStringList : TstringList;
for i := 0 to DataStringList.Items-1 do
begin
if TestStringList.Indexof(DataStringList[i])< 0 < 0 then
begin
TestStringList.Add(DataStringList[i])
end
else
begin
memo1.ines.add('duplicate item found');
end;
end;
....
Run Code Online (Sandbox Code Playgroud) 我可以确定delphi按升序将整数分配给我创建的任何枚举吗?
type
TMyType = (mtFirst, mtSecond, mtThird);
Run Code Online (Sandbox Code Playgroud)
肯定mtFirts总是TmyType(1)???
我试着写代码 myTypeselection := TMyType(MyRadiogroup.ItemIndex+1);
但我失败的是,整数数值在某种程度上是混合的.
有没有更聪明的方法(用更少的代码)从 TDictionary 中获取所有键作为单个字符串,以逗号分隔
var
FDicList : TDictionary <String, Integer>;
KeyStrList: TStringlist;
KeyName: string;
begin
/// result as comma text
KeyStrList := TStringlist.Create;
try
for KeyName in FDicList.Keys do
KeyStrList.Add(KeyName);
All_keys_as_string := KeyStrList.CommaText;
finally
KeyStrList.Free;
end;
end;
Run Code Online (Sandbox Code Playgroud) delphi ×10
ado ×1
freepascal ×1
indy ×1
indy10 ×1
lazarus ×1
madexcept ×1
sql ×1
sql-server ×1