我有一个备忘录,里面有许多"芒果"系列,我想要计算它发现文本'芒果'的次数.
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?
我的行中有不需要的字符备忘录,我想将它们全部删除.这是我的代码:
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) 我想根据我从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上.我在这里做错了什么?
我永远不知道在何处以及为什么我应该使用条款的原因是什么.
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总是排在第一位,如果不是第一名会发生什么?
我有一个整数。该值一直在减少。我用进度条表示。 结果是我的进度栏从右移到左。
例如:
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)
如何使用这种值从左到右移动进度栏?
我有启用/禁用控件的窗体,表示窗体处于忙或空闲状态.我需要启用一个控件(一个按钮,但可能是其他),当它被禁用以中止某个进程时.我将按钮标题更改为"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) 我将把这个程序分配到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?