Thema: Delphi Farbwert zu Dezimal

Einzelnen Beitrag anzeigen

Amateurprofi

Registriert seit: 17. Nov 2005
Ort: Hamburg
1.041 Beiträge
 
Delphi XE2 Professional
 
#75

AW: Farbwert zu Dezimal

  Alt 2. Apr 2019, 13:11
Bin mir auch nicht sicher ob die von @Neutral General verwendete Funktion das 2D Array zu 1D Array zu konvertieren der richtige weg ist.
Delphi-Quellcode:
function Array2DTo1D(AArray: TArray2D): TArray1D;
var
  y, x: Integer;
  n: Integer;
begin
   SetLength(Result, Length(AArray) * Length(AArray[0]));

   n := 0;
   for y := 0 to High(AArray) do begin
     for x := 0 to High(AArray[y]) do begin
       Result[n] := AArray[y,x];
       inc(n);
     end;
   end;
end;
Ich bin mir vollkommen sicher dass die Funktion Array2DTo1D korrekt funktioniert, allerdings unter der Bedingung dass alle in SpectrumData2D enthaltenen Arrays die gleiche Länge haben. Das scheint in Deinem Projekt der Fall zu sein.

Die nachstehende Version liefert die gleichen Ergebnisse aber deutlich schneller (Laufzeit ca. 1/3 der obigen Version).
Auch hier gilt die Bedingung dass alle in SpectrumData2D enthaltenen Arrays die gleiche Länge haben.

Delphi-Quellcode:
FUNCTION xArray2DTo1D(AArray: TArray2D): TArray1D;
var I,Len,Size:Integer;
begin
   Len:=Length(AArray[0]);
   SetLength(Result, Length(AArray)*Len);
   Size:=Len*SizeOf(Result[0]);
   for I:=0 to High(AArray) do
      Move(AArray[I,0],Result[I*Len],Size);
end;
Gruß, Klaus
Die Titanic wurde von Profis gebaut,
die Arche Noah von einem Amateur.
... Und dieser Beitrag vom Amateurprofi....
  Mit Zitat antworten Zitat