콘솔 유형의 함수를 사용하여 배열을 반환 할 수는 있지만 정수 n을 입력으로 사용하고 VCL 형식의 확장 배열을 반환하는 함수를 만들려고합니다. 델파이. 어떻게 할 수 있니? 내 기억이 정확 저를 제공하는 경우VCL 형식으로 확장 된 배열을 반환하는 함수 델파이
0
A
답변
3
최신 버전의 델파이에서는 TArray<T>
이라는 일반 배열을 사용해야합니다. 이처럼 :
function Foo(N: Integer): TArray<Extended>;
var
i: Integer;
begin
SetLength(Result, N);
for i := 0 to N-1 do begin
Result[i] := i;
end;
end;
나는 그것이 가능성이 Extended
를 사용하는 실수임을 강조한다. 이는 다소 이상하고 성능이 나쁜 10 바이트 부동 소수점 유형입니다. 이 유형은 제한된 수의 프로세서에서만 사용할 수 있습니다. 거의 모든 실제 부동 소수점 계산은 Single
또는 Double
, 4 바이트 및 8 바이트 IEEE-754 부동 소수점 데이터 유형을 사용하여 수행됩니다.
2
,이를 다시 입력하여 수행해야합니다 예 :
type
TResultType: array of extended;
function DoSomthing(): TResultType
begin
SetLength(Result, 2);
Result[0] := 1.2;
Result[1] := 3.4;
end;
0
이 아니다 함수 선언이 응용 프로그램의 유형에 의존하지 않는 등의 VCL/콘솔 문제가 당신 쓰고있다.
델파이 (또는 모든 파스칼) 함수는 명명 된 데이터 형식을 반환 할 수 있습니다. 타입 섹션에서 배열 타입을 선언하는 한, 함수가 그것을 처리 할 수 있습니다.
예 :
type
ExtArray : array of extended;
function IntToArray(i:integer):ExtArray;
begin
...
end;
+0
슬레 이드가 저를 때리는 것처럼 보입니다! – BT64
'TResultType에는 해당 구성 요소가 없습니다.'라는 오류가 발생합니다. 어쩌면 충분히 명확하지 않을 수도 있습니다. 이 함수는 현재 값 n에서 특정 값을 반환하는 프로 시저 중에 호출 할 수있는 배열 (X [n])을 생성하는 데 사용됩니다. – Jack
@Jack 질문의 코드로 인해 오류가 발생하지 않습니다. 우리에게 당신이 우리에게 보여주지 않을 것을 우리가 볼 수없는 당신의 코드에 대해 언급 할 것을 기대하지 마십시오. 코딩하기 전에 기본 속도를 늦추고 배우는 것이 좋습니다. –