我可以做得更好:在字符串列表中搜索某个值???
function searchstringlist (MyStringList : TStringList; MyValue : String) : Boolean;
var i : Integer;
begin
result := false; // added to prevent compiler warning
for i:= 0 to MyStringList.Count-1 do
begin
if pos ( MyValue, MyStringList[i] ) > 0 then
begin
result := true;
exit;
end;
end;
end;
答案 0 :(得分:1)
只需检查该值是否在TStrings.Text
。
您应该使用抽象TStrings
,字符串参数应为const
。
你应该正确地命名这个功能,让别人知道,你在里面做什么
function ContainsStr(const AStrings : TStrings; const ASearchStr : String) : Boolean;
var
LIdx : Integer;
begin
Result := Pos( ASearchStr, AStrings.Text ) > 0;
if Result then
begin
for LIdx := 0 to AStrings.Count - 1 do
if Pos( ASearchStr, AStrings[LIdx] ) > 0 then
Exit;
Result := False;
end;
end;
您(当然还有我的)功能就像这样
var
LStrings : TStrings;
begin
LStrings := TStringList.Create;
LStrings.Add( 'foo' );
LStrings.Add( 'bar' );
ContainsStr( LStrings, 'foo' ); // True
ContainsStr( LStrings, 'bar' ); // True
ContainsStr( LStrings, 'foo'#13#10'bar' ); // FALSE
// but also
ContainsStr( LStrings, 'oo' ); // True
ContainsStr( LStrings, 'o' ); // True
ContainsStr( LStrings, 'ar' ); // True
如果您只想查找'foo'
和'bar'
,则只需
function ContainsStr( const AStrings : TStrings; const ASearchStr : string ) : Boolean;
begin
Result := AStrings.IndexOf( ASearchStr ) >= 0;
end;