Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - rekusiv durch variant array


daedalouse - Do 15.04.10 16:08
Titel: rekusiv durch variant array
Hallo,

ich möchte ein Variant Array (v) in ein Array vom fortran type speichern (alles zeilenweise hintereinander). Zur Compile Zeit ist dimCount(v) nicht bekannt. Bei einem normalen C-artigen array könnte man das durch rekursion machen. Folgendes klappt aber nicht, weil v[i] in zeile 18

Delphi-Quelltext
1:
result := varToFortranDblArray(v[i],f,pos);                    

einen RunTime error liefert (da dimCount(v) > 0). Any Ideas? schon mal vielen Dank!!!


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
function varToFortranDblArray(v:variant;var f:array of double;var pos:integer):integer;overload;
var dimCount,i:integer;
begin
  result := -1;
  dimCount := VarArrayDimCount(v);
  if  dimCount = 1 then
  begin
    for i:=VarArrayLowBound(v,dimCount) to VarArrayHighBound(v,dimCount) do
    begin
      f[pos] := v[i];
      pos := pos +1;
    end;
  end;

  if  dimCount > 1 then
  begin
    for i:=VarArrayLowBound(v,dimCount) to VarArrayHighBound(v,dimCount) do
    begin
      result := varToFortranDblArray(v[i],f,pos);
    end;
  end;
  result := 0;
end;


Moderiert von user profile iconNarses: Code- durch Delphi-Tags ersetzt
Moderiert von user profile iconNarses: Delphi-Tags hinzugefügt


Xion - Fr 16.04.10 22:30

Willkommen

Vielleicht könntest du mal dein problem konkretisieren für unwissende...ich weiß nicht so ganz was du überhaupt machen willst.


Delphi-Quelltext
1:
2:
3:
function varToFortranDblArray(v:variant;var f:array of 
 [...]
      result := varToFortranDblArray(v[i],f,pos);



Das kommt mir komisch vor. In Verbindung mit dem dim kann ich da aber durchaus einen Sinn sehen.