如何测试当前应用程序中是否存在某个组件,例如,如果您创建一个名为 radiogroup1 的动态无线电组,如何检查是否已经存在名为 radiogroup1 的组件?
我的环境是Windows 7 pro(32位)上的RADStudio XE4 Update1。
我发现C++ Builder中有一个System::UnicodeString::Format()静态方法。
Format()可以如下使用。但是,我认为可以通过使用 来执行相同的操作String().sprintf()。
String str;
// --- (1) ---
str = String::Format(L"%2d, %2d, %2d", ARRAYOFCONST((10, 2, 3)));
ShowMessage(str); // 10, 2, 3
// --- (2) ---
str = String().sprintf(L"%2d, %2d, %2d", 10, 2, 3);
ShowMessage(str); // 10, 2, 3
Run Code Online (Sandbox Code Playgroud)
我的问题是在哪种情况下Format()使用该函数比使用其他函数更好?
这只是品味问题吗?
对不起,如果已经提出这个问题,我不知道如何搜索它.
假设你有以下循环
for (i=0; i < n; i++)
for(j = i; j < n; j++)
Run Code Online (Sandbox Code Playgroud)
这是O(n ^ 2)还是O(nlog(n)),为什么?
我目前正在使用RAD Studio XE7,并且想知道为什么我的Android应用程序中的所有对话框都使用“旧” 2.x样式?以及如何强制我的Android应用在所有对话框(例如日期选择器和MessageDlg)中使用4.x样式?
使用StyleBook和修改AndroidManifest.xml无效。提前致谢。
如果我有一个TFunc<T: class>该类型的变量将允许我直接取消引用类成员.
即使班级完成也支持它.

但是,如果我有一个数组,TFunc<T>那么这不会编译.
为什么不?这是编译器错误还是有一些潜在的原因?
program Project33;
{$APPTYPE CONSOLE}
uses
System.SysUtils;
type
TTestObject = class(TInterfacedObject, IInterface)
procedure Test;
end;
procedure TTestObject.Test;
begin
WriteLn('Test');
end;
procedure Test;
var
A: IInterface;
TestObject: array [0..4] of TFunc<TTestObject>;
SingleObject: TFunc<TTestObject>;
i: integer;
begin
for i:= 0 to 4 do begin
a:= TTestObject.Create;
TestObject[i]:= function: TTestObject
begin
Result:= a as TTestObject;
end;
TestObject[i].Test; //<<-- does not compile
SingleObject:= TestObject[i];
SingleObject.Test; // <<-- works.
end;
end;
begin
Test; ReadLn;
end.
Run Code Online (Sandbox Code Playgroud) 例如,
我有两个文件:
file1.log:
123
456
789
Run Code Online (Sandbox Code Playgroud)
和
file2.log:
123
456
789
Run Code Online (Sandbox Code Playgroud)
我想快点将它们加在一起?
(我的实际文件每行超过一百万行,但行数相同.)
输出将是:
246
912
1578
Run Code Online (Sandbox Code Playgroud) 我正在使用记录来封装两个异常集.
我已经放入运算符以允许将任一组分配给记录.这样做会清除另一组.
但是我不能指定一个空集.
请参阅以下示例代码:
Program test;
{$Apptype console}
type
TSomeThing = (a,b,c);
TOtherThing = (x,y,z);
TSomeThings = set of TSomething;
TOtherThings = set of TOtherThing;
TSomeRecord = record
strict private
Fa: TSomeThings;
Fb: TOtherThings;
public
class operator Implicit(a: TSomeThings): TSomeRecord;
class operator Implicit(a: TOtherThings): TSomeRecord;
end;
implementation
class operator TSomeRecord.Implicit(a: TSomeThings): TSomeRecord;
begin
Result.Fa:= a;
Result.Fb:= [];
end;
class operator TSomeRecord.Implicit(a: TOtherThings): TSomeRecord;
begin
Result.Fa:= [];
Result.Fb:= a;
end;
var
SomeRec: TSomeRecord;
begin
SomeRec:= [];
end.
Run Code Online (Sandbox Code Playgroud)
[dcc64 Error] InstructionList.pas(512):E2010不兼容类型:'TSomeRecord'和'Set'
我怎么做到这样我可以将空集分配给我的记录? …
我有一个包含超市销售信息的数据框。数据框中的每一行代表一个项目,有几个特征作为列。原始的 DataFrame 是这样的:
In [1]: import pandas as pd
my_data = [{'ticket_number' : '001', 'item' : 'tomato', 'ticket_price' : '21'},
{'ticket_number' : '001', 'item' : 'candy', 'ticket_price' : '21'},
{'ticket_number' : '001', 'item' : 'soup', 'ticket_price' : '21'},
{'ticket_number' : '002', 'item' : 'soup', 'ticket_price' : '12'},
{'ticket_number' : '002', 'item' : 'cola', 'ticket_price' : '12'},
{'ticket_number' : '003', 'item' : 'beef', 'ticket_price' : '56'},
{'ticket_number' : '003', 'item' : 'tomato', 'ticket_price' : '56'},
{'ticket_number' : '003', 'item' : 'pork', …Run Code Online (Sandbox Code Playgroud) 我正在我的项目(Delphi 10 Seattle)中慢慢从 ClientDataSet 迁移到 FireDAC FDQuery 组件。
我经常在 CDS 中使用的一个技巧是检查某个范围内的记录计数。
那是:
CDS.SetRange([Value1][Value2]);
k := CDS.RecordCount;
case k of
1 : DoSingleThing;
2 : DoDoubleThing;
else
BailOnWrongCount;
end;
Run Code Online (Sandbox Code Playgroud)
因为我需要同时提供整套数据,所以我在第一次打开查询时使用 FetchOptions.Mode := fmAll 。
FDQuery.SetRange([Value1][Value2]);然后调用总是 FDQuery.RecordCount返回整个数据集的记录计数(根据 fmAll) - 而不是当前范围。
我必须手动循环范围计数记录。
有没有更简单的方法来获取当前范围内的记录数?
我解决了我的问题,但我需要知道为什么会出现这个问题?
我写了一个项目,将文件加载到listBox然后逐个删除字符串,
但当我删除listBox字符串时,这个异常引发了我的兴趣!
列表索引超出范围(5)!
我输入这个for循环读取列表框并删除字符串:
for i := 0 to ListBox3.Count -1 do
begin
ShowMessage(ListBox3.Items[i]);
ListBox3.items.Delete(i);
end;
Run Code Online (Sandbox Code Playgroud)
并且通过在for循环语句中做一点改变来解决我的问题
for i := ListBox3.Items.Count - 1 downto 0 do
begin
ShowMessage(ListBox3.Items[i]);
ListBox3.items.Delete(i);
end;
Run Code Online (Sandbox Code Playgroud)
为什么第一个语句引发异常,第二个语句工作正常?
delphi ×6
appmethod ×1
awk ×1
bash ×1
big-o ×1
c++builder ×1
components ×1
dataframe ×1
delphi-xe7 ×1
firedac ×1
firemonkey ×1
generics ×1
listbox ×1
pandas ×1
python ×1
record-count ×1
set ×1
shell ×1