Übergabe von 2D-Const Array's, aber wie ?

Für Fragen zur Programmiersprache auf welcher Lazarus aufbaut
Antworten
Benutzeravatar
corpsman
Lazarusforum e. V.
Beiträge: 1498
Registriert: Sa 28. Feb 2009, 08:54
OS, Lazarus, FPC: Linux Mint Mate, Lazarus GIT Head, FPC 3.0
CPU-Target: 64Bit
Wohnort: Stuttgart
Kontaktdaten:

Übergabe von 2D-Const Array's, aber wie ?

Beitrag von corpsman »

Servus miteinander,

ich portiere mir gerade einige Python routinen nach Pascal und stehe nun vor folgendem Problem:

Code: Alles auswählen

 
Type
  TDoubleArray = Array Of Double;
  numpy = record
    fContent: Array Of TDoubleArray;
  End;
 
Function toNumpy(data: Array Of Double): numpy;
Var
  j: Integer;
Begin
  setlength(result.fContent, length(data), 1);
  For j := 0 To high(data) Do Begin
    result.fContent[j, 0] := data[j];
  End;
End;
 
Function toNumpy2(data: Array Of TDoubleArray): numpy;
Var
  i, j: Integer;
Begin
  setlength(result.fContent, length(data), length(data[0]));
  For j := 0 To high(data) Do Begin
    For i := 0 To high(data[0]) Do Begin
      result.fContent[j, i] := data[j, i];
    End;
  End;
End
 

Das compiliert, aber wie schreibe ich aufruf von Numpy2 ?

Code: Alles auswählen

 
  a := toNumpy([1.0, 2.0]);
  b := toNumpy2([[2.0, 4.0, 6.0], [3.0, 5.0, 7.0]]);   // -- Hier kriege ich einen Compilerfehler
 
--
Just try it

pluto
Lazarusforum e. V.
Beiträge: 7178
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Re: Übergabe von 2D-Const Array's, aber wie ?

Beitrag von pluto »

Du solltest die Variable array of array als Datentyp definieren, dann sollte es gehen.
Zuletzt geändert von pluto am Do 30. Mai 2019, 15:43, insgesamt 2-mal geändert.
MFG
Michael Springwald

pluto
Lazarusforum e. V.
Beiträge: 7178
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Re: Übergabe von 2D-Const Array's, aber wie ?

Beitrag von pluto »

Ich habe es eben getestet, bei mir klappt es nur es gibt Warnungen bei setlength
unit1.pas(36,19) Warning: Function result variable of a managed type does not seem to be initialized
habe dein Code 1 zu 1 übernommen. A und B habe ich beide als numpy definiert.

Aber es kommt keine Fehler Meldung.
MFG
Michael Springwald

Antworten