AFAIK 해당 레코드가 일반 구조 인 경우 레코드 멤버에 값을 직접 할당 할 수 없습니다. 가진 예를 들어Delphi XE에서 Generics의 레코드 멤버를 효율적으로 변경하십시오.
:
var
...
temp: TMyRec;
...
begin
...
temp:=myList[999];
temp.Width:=1000;
myList[999]:=temp;
...
end;
미운, 천천히,하지만 작품 :
type
TMyRec = record
Width: integer;
Height: integer;
end;
var
myList: TList<TMyRec>;
...
myList[888].Width:=1000; //ERROR here: Left side cannot be assigned.
...
는 지금까지, 나는 이것을 극복하기 위해 임시 변수를 사용했다.
type
TMyRec = record
Width: integer;
Height: integer;
Points: array or TPoint;
end;
을 ... 정도 앞뒤로 임시 변수에 복사 큰되었다 수있는 다른 데이터 구조는 실현 가능한 옵션이 아니다 :하지만 지금은 TMyRec
에 동적 배열을 추가 할 수 있습니다.
질문 :이 레코드가 임시 var에 복사 할 필요없이 일반 구조에있을 때 레코드 멤버를 변경하는 방법은 무엇입니까? 피드백
은 어디'PMyRec' 포인터가 TMyRec''이다'TList를'등'myList'를 선언 할 수 쓸 수 있을까? 이 방법으로 복사하지 않고 직접 데이터를 사용할 수 있습니다. –
teran
@teran 이것은 목록과 별도로 스토리지를 관리해야하기 때문에 불편합니다. 나는 TList <>처럼 동작하는 클래스를 작성했지만 i 번째 요소에 대한 포인터를 리턴하는 특성을 가지고있다. 그건 분명히 작동하지만 그것은 명확하게 내장되어 있지 않습니다. –