-2

如何从下图中获取所有用户名值并将它们转换为TStringList字符串或TMemo

在此处输入图像描述

我尝试了以下代码,但没有成功。

with q3 do
  var txResul:stringlist
  begin
    Close;
    SQL.Clear;
    SQL.Add('SELECT*FROM user');
    Open;
    Next;
  end;
  txtResult.Add(q1.FieldByName('username').AsString);
4

1 回答 1

6

假设您的屏幕截图是您调用的数据集,请执行以下操作:

procedure GetUserNames(DataSet : TDataSet; StringList : TStringList);
var
  Field : TField;
begin
  Field := DataSet.FieldByName('username');
  StringList.BeginUpdate;      
  try
    DataSet.DisableControls;
    try
      DataSet.First;
      while not DataSet.Eof do begin
        StringList.Add(Field.AsString);
        DataSet.Next;
      end;
    finally
      DataSet.EnableControls;
    end; 
  finally
    StringList.EndUpdate;
  end;
end;

你可以这样使用它

procedure TForm1.GetUsers;
var
  TL : StringList;
begin
  TL := StringList.Create;
  try
    GetUserNames(MyTable, TL);
    Memo1.Lines.Text := TL.Text;
  finally
    TL.Free;
  end;
end;

顺便说一句,如果您将 GetUserNames 的第二个参数更改为 TStrings,GetUserNames(DataSet : TDataSet; Strings : TStrings)您可以直接将 Memo1.Lines 传递给它。

于 2016-12-25T13:09:02.267 回答