2016-05-31 2 views
2

lst_devices : TArray<String> 변수를 초기화하는 더 좋은 방법을 찾고 있습니다.Delphi - 어떻게 TArray 문자열을 초기화합니까?

오늘 나는 이것을 (아주 추악하고 코드 냄새가 있지만, 적어도 잘 작동한다.) 이렇게하고있다.

lst_devices_id := ['', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 
     '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 
     '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 
     '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 
     '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 
     '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 
     '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 
     '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '']; 

어떻게 향상시킬 수 있습니까?

답변

7

문자열은 기본적으로 빈 문자열로 초기화됩니다. 그래서 당신과 같이 그에 의지 할 수 있었다 : 여기

SetLength(lst_devices_id, N); 

당신은 배열 요소의 수를 할당하고 빈 문자열로 초기화 기본 컴파일러에 의존하고 있습니다. 이것은 이전에 초기화되지 않은 배열에 의존합니다. 그런 경우가 아니라면 먼저 마무리해야합니다.

Finalize(lst_devices_id); 
SetLength(lst_devices_id, N); 
+0

"lst_devices_id : = nil;"이 아닙니다. 좀 더 우아한 다음 낮은 수준의 기능을 사용하여 Finalize? –

+2

@ZENsan Finalize는 똑같은 것을 수행하는 내장 함수입니다. 이 코드는 코드에서 사용할 것으로 예상되며 내부 RTL 코드에만 사용되는 것이 아니라는 의미에서 높은 수준의 함수입니다. 골라보세요. –

+0

설명해 주셔서 대단히 감사드립니다. 그것이 저에게 명확하게 해달라고 요청하는 이유입니다. –

관련 문제