2014-06-16 2 views

답변

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

'TResultType에는 해당 구성 요소가 없습니다.'라는 오류가 발생합니다. 어쩌면 충분히 명확하지 않을 수도 있습니다. 이 함수는 현재 값 n에서 특정 값을 반환하는 프로 시저 중에 호출 할 수있는 배열 (X [n])을 생성하는 데 사용됩니다. – Jack

+0

@Jack 질문의 코드로 인해 오류가 발생하지 않습니다. 우리에게 당신이 우리에게 보여주지 않을 것을 우리가 볼 수없는 당신의 코드에 대해 언급 할 것을 기대하지 마십시오. 코딩하기 전에 기본 속도를 늦추고 배우는 것이 좋습니다. –

0

이 아니다 함수 선언이 응용 프로그램의 유형에 의존하지 않는 등의 VCL/콘솔 문제가 당신 쓰고있다.

델파이 (또는 모든 파스칼) 함수는 명명 된 데이터 형식을 반환 할 수 있습니다. 타입 섹션에서 배열 타입을 선언하는 한, 함수가 그것을 처리 할 수 ​​있습니다.

예 :

type 
    ExtArray : array of extended; 

function IntToArray(i:integer):ExtArray; 
begin 
    ... 
end; 
+0

슬레 이드가 저를 때리는 것처럼 보입니다! – BT64