2015-08-27 65 views
1

我創建了一個函數來檢查裏面TLIST串退出這裏是我的代碼如何檢查是否在TLIST存在串是否其較低或大寫

function FindDtataLIST(namestring: String): BOOLEAN; 
var 
    I: Integer; 
begin 
    Result := False; 
    for I := 0 to Listofdata.Count - 1 do 
    begin 
    if TData(Listofdata.Items[I]).Name = namestring then 
    begin 
     Result := True; 
     Exit; 
    end; 
    end; 
end; 

但有一些陷阱我很堅持,如果我listofdata有串大寫字母爲例:'MaRtiN'和名稱字符串等於小寫字母爲例:martin結果沒回真我要檢查

if FindDtataLIST(namestring) = True時候只要namestring一些大寫字母或小

存在3210
+2

使用[''SysUtils.SameText()'](http://docwiki.embarcadero.com/Libraries/en/System.SysUtils.SameText)。 – whosrdaddy

+3

@whosrdaddy'SameText'不是區域意識。所以:'SameText('Á','á')= False' – GabrielF

+0

這兩個建議非常有用,非常感謝你 – MartinLoanel

回答

6

如果你只是想檢查,如果兩個字符串相等,則可以使用AnsiSameText

function FindDtataLIST(namestring: String): BOOLEAN; 
var 
    I: Integer; 
begin 
    Result := False; 
    for I := 0 to Listofdata.Count - 1 do 
    begin 
    if AnsiSameText(TData(Listofdata.Items[I]).Name, namestring) then 
    begin 
     Result := True; 
     Exit; 
    end; 
    end; 
end; 
+0

@whosrdaddy我仍然在老D7,所以我無法確定,但我相信你錯了:http://embarcadero.newsgroups.archived.at/public.delphi.language.delphi.win32/ 200907/0907304462.html – GabrielF

+1

該名稱有點誤導,但AnsiSameText有一個UnicodeString重載。所以AnsiSameText就是你應該使用的。 –

+0

此外,請參閱衛生署的答案(討論與'Ansi'prefix混亂):http://stackoverflow.com/questions/23444579/why-ansisametext-is-not-ansi – GabrielF

-2

使用「大寫」

function FindDtataLIST(namestring: String): BOOLEAN; 
var 
    I: Integer; 
begin 
    Result := False; 
    for I := 0 to Listofdata.Count - 1 do 
    begin 
    if uppercase(TData(Listofdata.Items[I]).Name) = uppercase(namestring) then 
    begin 
     Result := True; 
     Exit; 
    end; 
    end; 
end; 

沒有測試,希望這有助於...

+0

不需要大寫,(ansi)sametext是必要的,這一切 – whosrdaddy