小编Joh*_*ica的帖子

如何查看应用程序中是否已存在 Delphi 组件?

如何测试当前应用程序中是否存在某个组件,例如,如果您创建一个名为 radiogroup1 的动态无线电组,如何检查是否已经存在名为 radiogroup1 的组件?

delphi components

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

在什么情况下使用System.UnicodeString.Format?

我的环境是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()使用该函数比使用其他函数更好?

这只是品味问题吗?

c++builder

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

运行嵌套循环的时间

对不起,如果已经提出这个问题,我不知道如何搜索它.

假设你有以下循环

    for (i=0; i < n; i++)
         for(j = i; j < n; j++)
Run Code Online (Sandbox Code Playgroud)

这是O(n ^ 2)还是O(nlog(n)),为什么?

big-o time-complexity

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

为什么所有对话框都使用“旧” Android 2.x样式?

我目前正在使用RAD Studio XE7,并且想知道为什么我的Android应用程序中的所有对话框都使用“旧” 2.x样式?以及如何强制我的Android应用在所有对话框(例如日期选择器和MessageDlg)中使用4.x样式?

使用StyleBook和修改AndroidManifest.xml无效。提前致谢。

delphi firemonkey appmethod delphi-xe7

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

为什么TFunc <T>正确,但TFunc <T>的数组[0..1]不是?

如果我有一个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)

delphi generics

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

如何将两个文件的行相加?(bash中的每列数据)

例如,

我有两个文件:

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)

bash shell awk

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

如何使用重载运算符将空集分配给记录

我正在使用记录来封装两个异常集.
我已经放入运算符以允许将任一组分配给记录.这样做会清除另一组.
但是我不能指定一个空集.

请参阅以下示例代码:

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'

我怎么做到这样我可以将空集分配给我的记录? …

delphi operator-overloading set

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

用于动态生成列的 Pandas 透视表或 groupby

我有一个包含超市销售信息的数据框。数据框中的每一行代表一个项目,有几个特征作为列。原始的 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)

python dataframe pandas

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

SetRange 处于活动状态时如何获取 FireDAC 记录计数

我正在我的项目(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) - 而不是当前范围。

我必须手动循环范围计数记录。

有没有更简单的方法来获取当前范围内的记录数?

delphi record-count firedac

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

在删除项目时列出索引超出范围

我解决了我的问题,但我需要知道为什么会出现这个问题?

我写了一个项目,将文件加载到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 listbox

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