0
A
답변
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 감사합니다. –
를? –
은 C# netfram 4에서 사용되었지만 델파이에서 사용하고자합니다 –
키의 값으로 dynarray를 사용하는 것은 어떻습니까? 아니면 두 값을 가진 레코드? 그런 다음 'TDictionary'와 같이 실행됩니다. 값 유형으로'TPair '를 사용하십시오 (어쨌든 2 유형 레코드에 해당). –