2012-09-07 8 views
1

나는 내가이 중복 알고 있지만 두 번째 오렌지를 보면, 당신은 끝에 공백을 볼 수 있습니다TDictionary 중복 된 항목 (델파이)

procedure TForm1.FormCreate(Sender: TObject); 
var 
    md: TDictionary<string, string>; 
    s, v: string; 
begin 
    md := TDictionary<string, string>.Create; 
    try 
    s := 'orange'; 
    v := 'fruit'; 
    md.Add(s, v); 

    s := 'orange '; 
    v := 'color'; 
    md.Add(s, v); 

    ShowMessage(IntToStr(md.Count)); 
    finally 
    md.Free; 
    end; 
end; 

에 다음 값을 추가하려합니다. 델파이가 가치를 조정한다고 생각하지만 그렇게해서는 안됩니다.

누구든지이 문제의 해결책을 알고 있습니까?

감사합니다,

+5

코드를 테스트하고 사전이 키를 자르지 않습니다. 어떤 버전의 Delphi를 사용하고 있습니까? – RRUZ

+0

가짜 코드를 게시하지 마십시오. 실제 코드를 게시하십시오. 컴파일하는 코드. 이 작업을 수행하려면 클립 보드를 사용하십시오. –

+0

@RRUZ 당신 말이 맞습니다. 이 하나가 잘 작동하지만 왜 진짜 하나가 작동하지 않았는지 모르겠다. 나는 파일에서 읽으므로 레코드 파일의 큰 코드이므로 실제 파일을 붙여 넣지 않았습니다. Btw, XE2를 사용합니다. – blacksun

답변

4

이 코드는 델파이의 알려진 모든 버전에서 숫자 2를 포함하는 메시지 상자를 보여줍니다. 이것은 정확히 예상 한 것이며 평등을 비교할 때 TDictionary 코드가 키를 자르지 않습니다.

+0

+1 다국어 (현지화)에 사용하겠습니다. 테스트 됨. 나는 예상 된'2'를 얻었고, 만약 공간을 제거한다면 (나는 그것을 할 수있을 것이다) 나는 (예상대로) 중복되지 않는 것에 대한 예외를 얻는다. –

+0

예 훌륭했습니다! 나는 실수하고 있다고 생각한다. 저는 이것을 사용하여 소프트웨어를 현지화 할 것입니다. 실제로 매우 빠르게 작동합니다 ..! – blacksun

+0

여기 왜 내가이 방법을 선택했는지 (마지막에 공백 추가)입니다. 나는 시간과 시간을 터키어로 번역하고 있습니다. 그러나 그들 중 한 명은 Saat에게 번역했습니다. 언어를 반대로하기 위해 나는 공간 'Saat'을 추가해야했다. 이것은 내가 문제를 해결 한 방법입니다 ... – blacksun