이것은 다소 이전의 질문 중 하나입니다. found here. 기본적으로 dll/함수를 기본 예제로 테스트하려고하는데 'E2010 - 호환되지 않는 유형 : AInteger/ADouble 및 '및'E1012 - 상수 표현이 배열의 범위를 벗어남 [] 오류가 발생합니다. 나는 (다소) 말하려고하는 것이지만, 내가 무엇을 고쳐야 하는지를 알 수 없다. AInteger
및 ADouble
유형 내 배열 인델파이 배열 초기화
var
n: Integer;
Ap, Ai: AInteger;
Ax, b: ADouble;
begin
// Initializations
n := 5;
Ap := [0, 2, 5, 9, 10, 12]; <- E2010
Ai := [0, 1, 0, 2, 4, 1, 2, 3, 4, 2, 1, 4]; <- E2010
Ax := [2, 3, 3, -1, 4, 4, -3, 1, 2, 2, 6, 1]; <- E2010 and E1012
b := [8, 45, -3, 3, 19]; <- E1012
:
ADouble = array[0..High(Integer) div SizeOf(Double) - 1] of Double;
AInteger = array[0..High(Integer) div SizeOf(Integer) - 1] of Integer;
과 (루디의 델파이 페이지와 다른 C - 투 - 파스칼 소식통에 따르면)이 방법을 초기화해야한다 그들은 이후 예를 들어 C에서 double Ax[]
으로 작성되었습니다. 뭔가 잘못되었거나 내 dll을 테스트하기 위해 바뀔 수있는 간단한 내용이있을 것입니다.하지만 예제/솔루션을 찾을 수 없기 때문에 잘못 검색했을 수 있습니다. 그래서, 질문 형태 :
Q1 "
를 참조 E1012이며, 당신이이 등의 작업을 수행 할 경우 [AInteger 및 ADouble], 높은 에 너무 가까이 오지하지 않도록주의 (정수), 컴파일러가 데이터 구조가 너무 큰 것이라고 불평 할지도 모릅니다. " 어떻게이 코드를 변경해야합니다 :
2 분기 (루디의 페이지에서 인용)?
미리 도움을 청하십시오.
그것은 도움이 될 수 있습니다. 당신이 당신의 배열을 초기화하기 위해 작성한 코드는 델파이/파스칼의 모든 버전에서 일한 적이 있으며, 그것은 잘못된 구문 때문에 루디의 페이지는, 그들이 AFAICT해야 말을하지 않습니다 그것은 사실이 있음을하시기 바랍니다 말한다면 루디 (잘 알고있다 링크를 제공하십시오). 델파이는 상수 배열 (해당 구문이 아닌) 또는 의사 생성자 구문을 사용하는 동적 배열의 초기화 만 허용합니다. 자신이하려는 일을 분명히하지 않았기 때문에 어떻게 바꾸어야 하는지를 말하기는 어렵습니다. –
이것은 드문 드문 한 행렬 솔버처럼 보입니다. 어느 쪽이 관심 밖에서 사용하고 있습니까? 저는 Tim Davis의 CSparse를 좋아해요. C 코드를 .obj로 컴파일 한 다음 똑같은 방식으로 연결하는 방법으로 마무리했습니다. –
Ken - 죄송합니다, 제가 언급 한 링크는 C에서 Pascal 로의 변환을 포함합니다. 루디 (Rudy)의 페이지는 "Array Parameters"하위 섹션의 [여기] (http://rvelthuis.de/articles/articles-convert.html 여기)에 언급되어 있습니다. @David 바로 내가 작업하고있는 솔버입니다. 내가 가기로 결정한 방식이 다른 누군가에 의해 수행되었음을 알고 기꺼이 하하입니다. –