删除dbgrid中的所有非数字行

nar*_*ren 0 delphi

我想删除dbgrid中的所有非数字行

例如我的dbgrid行是:

row1= 127.0.0.1:900
row2= 103.43.122.40:8000
row3= 122.12.75.4:3128
row4= netfire.se98.ar:3000
row5= po-ryd.449.br:3128
row6= 93.5.32.150:6540
Run Code Online (Sandbox Code Playgroud)

现在,删除dbgrid中的所有非数字行.

Cos*_*und 6

A DbGridTDataSet后代支持.该TDataSet后代有一个Filtered属性OnFilterRecord,可用于过滤记录.

下面是一个示例OnFilterRecord是拒绝所有得分由这不是数字,不是字符的任何记录执行'.'':'.请注意我没有使用char-in-set测试,因此代码与Unicode Delphi和非Unicode Delphi完全兼容.

procedure TForm1.ClientDataSet1FilterRecord(DataSet: TDataSet; var Accept: Boolean);
var Value: string;
    i: Integer;
    C: Char;
begin
  Value := DataSet['IP']; // Replace "IP" with your field's name
  for i:=1 to Length(Value) do
  begin
    C := Value[i];
    if not(C in ['.', ':', '0'..'9']) then // Detect bad characters
    begin
      Accept := False; // This record will NOT be shown.
      Exit;
    end;
  end;
  Accept := True; // No bad characters were found, show the record.
end;
Run Code Online (Sandbox Code Playgroud)

分配此OnFilterRecord处理程序后,请不要忘记设置Filtered := True.