小编Bia*_*nca的帖子

计算备忘录中的特定文本(Delphi)

我有一个备忘录,里面有许多"芒果"系列,我想要计算它发现文本'芒果'的次数.

var
  f, mango: Integer;
begin
  mango := 0;
  for f := 0 to m0.lines.Count - 1 do
  begin
    if AnsiContainsStr(m0.lines[f], 'mango') then
    begin
      mango := mango + 1;
      m0.lines.Add(IntToStr(mango));
    end
  end;
end;
Run Code Online (Sandbox Code Playgroud)

但结果,例如,如果它发现六个'芒果'条目将是这样的:

1
2
3
4
5
6
Run Code Online (Sandbox Code Playgroud)

我怎么才有结果只有6?

delphi count filter tmemo

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

删除备忘录中的特定行

我的行中有不需要的字符备忘录,我想将它们全部删除.这是我的代码:

var
  del: Integer;
begin
  for del := 0 to m0.Lines.Count - 1 do
  begin
    if (AnsiContainsStr(m0.Lines[del], 'remove me')) then
    begin
      m0.Lines.Delete(del);
    end;
  end;
end;
Run Code Online (Sandbox Code Playgroud)

上面的代码仍然留下了一些我想删除的行.它只删除其中一些.所以我尝试了另一种方法,这是做的工作.

var
  i, r, n: Integer;
begin
  for i := 0 to m0.Lines.Count - 1 do
  begin
    if (AnsiContainsStr(m0.Lines[i], 'remove me')) then
    begin
      for r := 0 to m0.Lines.Count - 1 do
      begin
        if (AnsiContainsStr(m0.Lines[r], 'remove me')) then
        begin
          for n := 0 to m0.Lines.Count - 1 do
          begin
            if (AnsiContainsStr(m0.Lines[n], 'remove me')) then
            begin …
Run Code Online (Sandbox Code Playgroud)

delphi string lines tmemo

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

使用Integer值作为参考

我想根据我从Integer获得的值来更改TLabel的字体颜色.

var
  i: Integer;
begin
 ValueGenerator (i);
  if i <= 14 then
  begin
    L1.Font.Color := clBlue;
  end;
  if i >= 15 then
  begin
    L1.Font.Color := clGreen;
  end;
  if i <= 29 then
  begin
    L1.Font.Color := clGreen;
  end;
  if i >= 30 then
  begin
    L1.Color := clYellow;
  end;
  if i <= 49 then
  begin
    L1.Color := clYellow;
  end;
  if i >= 50 then
  begin
    L1.Color := clRed;
  end;
  L1.Caption := IntToStr(i);
end;
Run Code Online (Sandbox Code Playgroud)

值输出从0到100.我得到的任何价值,我的TLabel总是在clGreen上.我在这里做错了什么?

delphi integer

0
推荐指数
2
解决办法
207
查看次数

在源代码中使用子句索引

我永远不知道在何处以及为什么我应该使用条款的原因是什么.

unit Unit2;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs; // why put on top ?

type
  TForm2 = class(TForm)
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form2: TForm2;

implementation

{$R *.dfm}

uses  System.Math, System.IOUtils, System.WideStrUtils; // why put here ?

procedure TForm2.FormCreate(Sender: TObject);
begin
  //
end;

end.
Run Code Online (Sandbox Code Playgroud)

另外,使用单位的首要任务是什么?为什么winapi.windows总是排在第一位,如果不是第一名会发生什么?

delphi

0
推荐指数
1
解决办法
133
查看次数

恢复进度条的递减整数

我有一个整数。该值一直在减少。我用进度条表示。 结果是我的进度栏从右移到左。

例如:

iProgSize := 9999;
iProg := 9998; //( this is going down from time to time to zero);
Run Code Online (Sandbox Code Playgroud)

9999只是一个示例值,这是随机的。

pBar.MaxValue := iProgSize;
pBar.Value := iProg;
Run Code Online (Sandbox Code Playgroud)

如何使用这种值从左到右移动进度栏?

delphi integer progress-bar

0
推荐指数
1
解决办法
94
查看次数

查找控件标题并更改其状态

我有启用/禁用控件的窗体,表示窗体处于忙或空闲状态.我需要启用一个控件(一个按钮,但可能是其他),当它被禁用以中止某个进程时.我将按钮标题更改为"ABORT".

我点击按钮A,我将按钮A的标题改为'ABORT'.所有其他控件将被禁用,但我想要一个标题为"ABORT"的按钮仍然启用.

procedure F1.FormBusy (sender);
var
  a: Integer;
begin
  for a := 0 to TabSheet1.ControlCount - 1 do
  begin
    TabSheet1.Controls[a].Enabled := False;
    (* if TabSheet1.Controls[a] caption := 'ABORT' then
      TabSheet1.Controls[a].Enabled := True
      < how to do this ? *)
  end;
end;
Run Code Online (Sandbox Code Playgroud)

用法示例:

procedure F1.LB1Click(sender: TObject);
begin
  FormBusy(sender);
  try
    // do something
  finally
    FormIdle(sender);
  end;
end;
Run Code Online (Sandbox Code Playgroud)

delphi controls disabled-control

-1
推荐指数
1
解决办法
413
查看次数

TImage - 按组件名称动态加载资源

我将把这个程序分配到OnMouseEnter.我有一些TImage会改变它的图片OnMouseEnter.在事件处理程序上更容易制作它的每个过程.但我不想重复相同的代码.

var
  i: Integer;
  CoName: TComponent;
  png: TPngImage;
  s: string;
begin
  s := '';
  for i := 1 to 16 do
  begin
    CoName := Form1.Components[i];
    if CoName is TImage then
    begin
      s := CoName.Name;
      Break;
    end;
  end;
  if Trim(s) <> '' then
  begin
    png := TPngImage.Create;
    try
      png.LoadFromResourceName(hInstance, 'ResImgA');
      // s.picture.Assign(png);  > i can not do this
    finally
      FreeAndNil(png);
    end;
  end;
end;
Run Code Online (Sandbox Code Playgroud)

我怎么能s进入TImage.Name

delphi components timage

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