11
델파이 7 사용 :TStringList의 AddObject를 정수와 함께 사용 하시겠습니까?
- 가 어떻게이 stringlist 항목의 대상 부분에 정수를 추가 할 수 있습니다를,
AddObject
를 사용하고 계십니까? - 문자열 목록 항목의 객체 속성에서 정수를 다시 검색하려면 어떻게해야합니까?
- 모든 개체를 해제하고 완료되면 을 나열하려면 어떻게합니까?
델파이 7 사용 :TStringList의 AddObject를 정수와 함께 사용 하시겠습니까?
AddObject
를 사용하고 계십니까?Q :How can i add an integer to the object portion of a stringlist item, using AddObject?
A :How can a retrieve the integer back from a object property of stringlist item?
A : : 캐스트에 그냥 TObject
List.AddObject('A string',TObject(1));
Q에 정수 값을 캐스팅How do i free all objects and list when done?
A : : 개체 값을
AValue := Integer(List.Objects[i]);
Q 정수 당신이 메모리을 할당되지 때문에, 개체 목록을 확보 할 필요가 없습니다. 따라서 TStringList
의 Free
절차로 전화하십시오.
{$APPTYPE CONSOLE}
uses
Classes,
SysUtils;
Var
List : TStringList;
i : Integer;
begin
try
List:=TStringList.Create;
try
//assign the string and some integer values
List.AddObject('A string',TObject(1));
List.AddObject('Another string',TObject(100));
List.AddObject('And another string',TObject(300));
//Get the integer values back
for i:=0 to List.Count - 1 do
Writeln(Integer(List.Objects[i]));
finally
//Free the list
List.free;
end;
except
on E:Exception do
Writeln(E.Classname, ': ', E.Message);
end;
Readln;
end.
당신은 그것에 나를 이길이 샘플 응용 프로그램을 시도하지만 대신에 당신을 upvote에 있습니다. OP에 대한 마지막 참고 사항으로 TStringList가 내부 포인터 목록을 해제하고 개체를 만들지 않았으므로 해당 목록에 저장된 정수 만 명시 적으로 해제 할 필요가 없습니다. 이것은 RRUZ가 보여준 것이며 TSTringList 만 해제합니다. –
@RRUZ - +1 와우! 나는 당신이 내가 알아 내려고 애쓰는 중요한 문제를 해결했다고 생각한다. 데이터베이스 조회 값에 ID/값 쌍을 사용하고 싶습니다. 따라서 위의 내용을 정확히 이해하면 드롭 다운에 List.Strings [i] (값 부분)을 표시하고 관련 Integer (List.Objects [i])를 데이터베이스의 ForeignKey Id로 사용할 수 있습니다. –
@IElite, 정밀도와 동적 범위가 중요하지 않은 부동 소수점 값 목록을 저장하는 비슷한 방법을 사용했습니다 (Delphi '단일'형식은 4 바이트이며 포인터로 유형 변환 될 수 있음). 문자열이없고 정수/float 만 저장하려는 경우 TList를 사용할 수도 있습니다. – rossmcm