2017-12-31 33 views
0

나는 기록 등의 복합 구조로 값을 넣어 어떤 일이어떤 종류의 컬렉션을 사용해야합니까? 델파이

TDictionary<tkey, tfirstvalue,tsecondvalue>; 
+0

를? –

+0

은 C# netfram 4에서 사용되었지만 델파이에서 사용하고자합니다 –

+1

키의 값으로 dynarray를 사용하는 것은 어떻습니까? 아니면 두 값을 가진 레코드? 그런 다음 'TDictionary '와 같이 실행됩니다. 값 유형으로'TPair '를 사용하십시오 (어쨌든 2 유형 레코드에 해당). –

답변

2

처럼 델파이에서 두 값에 대해 하나 개의 키를 사용하고 싶습니다. 그런 다음 해당 레코드 유형을 사전 값 유형으로 사용하십시오.

1

델피는 튜플 유형이 아닙니다. 귀하의 목적을 모르지만 레코드 유형 도움말의 동적 배열이 될 수 있습니다.

Type 
Tdict_ = reocord 
tkey:integer; 
tfirstvalue,Tsecondvalue :string; 
end; 
var 
Tdict:array of tdict_ 
... 
procedure adddata(Tkey:integer;tfirstvalue:string;Tsecondvalue :string); 
begin 
    setlength(tdict,length(tdict)+1); 
    tdict[length(tdict)-1].tkey:=tkey; 
    tdict[length(tdict)-1].tfirstvalue:=tfirstvalue; 
    tdict[length(tdict)-1].tsecondtvalue:=tsecondvalue;  
end; 

그러나 배열의 반환 색인에 대해 사용자 고유의 "찾기"함수를 작성해야합니다.

예를

Function find(tkey:integer):integer; 
    var i:Integer; 
    begin 
    for i:=0 to length(Tdict)-1 do 
    if tdict[i].tkey=i then 
     begin 
     result:=i; 
     break; 
     end; 
    end; 

    Function deletecalue(tkey:integer):integer; 
    var i,j:Integer; 
    begin 
    i:=find(tkey) 
     for j:=i to length(Tdict)-2 do 
      tdict[j]:=tdict[j+1]; 
     setlength(tdict,length(tdict)-1); 

    end; 

키 유형을 변경해야합니다 문자열 경우에 대한

하지만 거대한 날짜 속도가 느려질 수 있습니다.

또한이 읽기 : 키와 같은 튜플을 사용을 중지 무슨 https://github.com/malcolmgroves/generics.tuples

+0

verry match 감사합니다. –

관련 문제