Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   "VarArrayCreate" vs "array of array of Integer" (https://www.delphipraxis.net/191905-vararraycreate-vs-array-array-integer.html)

norwegen60 2. Mär 2017 09:41

"VarArrayCreate" vs "array of array of Integer"
 
Hallo

ich bin in einem Programm auf folgenden Code gestoßen

Delphi-Quellcode:
Var
  IntegerArray : Variant;
 
begin
  IntegerArray := VarArrayCreate([0, 3, 0, AnzZeilen], varInteger);
  VarArrayPut(IntegerArray, WertRow, 1, Zeile);
und wüsste jetzt gerne was der Unterschied zu
Delphi-Quellcode:
var
  IntegerArray : array of array of Integer;

begin
  SetLength(IntegerArray, 4, AnzZeilen);
  IntegerArray[1, Zeile] := WertRow;
oder
Delphi-Quellcode:
var
  IntegerArray : array[0..3] of array of Integer;
 
begin
  SetLength(IntegerArray, AnzZeilen);
  IntegerArray[1, Zeile] := WertRow;
ist.

Ich fand Themen zu VarArrayCreate im Zusammenhang mit Übergabe an VisualBasic.
Danke
Gerd

bra 2. Mär 2017 11:29

AW: "VarArrayCreate" vs "array of array of Integer"
 
Mit VarArrayCreate wird ein Variant-Array erzeugt. Das braucht man u.a. für COM. Sofern du keine DLLs aufrufst oder zwischen unterschiedlichen Programmen Daten hin- und herüberträgst, sollte das für dich uninteressant sein.

norwegen60 2. Mär 2017 11:57

AW: "VarArrayCreate" vs "array of array of Integer"
 
Ja, aber genau dafür ist es. Um Daten an eine C##-DLL zu übertragen

TiGü 2. Mär 2017 12:36

AW: "VarArrayCreate" vs "array of array of Integer"
 
Zitat:

Zitat von norwegen60 (Beitrag 1363016)
Ja, aber genau dafür ist es. Um Daten an eine C##-DLL zu übertragen

C++ oder C#?
Zeig doch mal nen Stück Doku von der DLL, dann kann man dich besser beraten.

hoika 2. Mär 2017 13:21

AW: "VarArrayCreate" vs "array of array of Integer"
 
Hallo,
bei Variants siehe auch letzten Post

http://borland.public.cppbuilder.lan...i-variant-args

norwegen60 2. Mär 2017 21:55

AW: "VarArrayCreate" vs "array of array of Integer"
 
Ich meinte C#.

Die Aussage bezüglich der Schnittstelle war dass ein Array of Variant hinzugefügt worden ist. Jetzt habe ich mir mal den Code schicken lassen und der sieht so aus:
Code:
        public void SetAnalysisPosition(int[,] analysisPosition, int analysisNumber, object[] parameterValues, NetCallback callback)
Bisher gab es nur die ersten zwei Parameter und da hat der Aufruf in Delphi so ausgesehen:
Delphi-Quellcode:
var
  IntegerArray: Variant;
begin
  IntegerArray := VarArrayCreate([0, 3, 0, AnzahlZeilen], varInteger);
  fractionCollector.Obj.SetAnalysisPosition(VarArrayRef(IntegerArray), AnalysisNo);
und das hat auch funktioniert.
Eigentlich wurde mir gesagt, dass die zusätzliche Parameterliste ein Array of Variant ist, worauf ich die Deklaration wie folgt in Delphi implementiert habe
Delphi-Quellcode:
var
  IntegerArray: Variant;
  ParamList: Variant;    // Neue Parameterliste
begin
  IntegerArray := VarArrayCreate([0, 3, 0, AnzahlZeilen], varInteger);
  VarArrayPut(IntegerArray, Value, [0, 0]);.......

  ParamList := VarArrayCreate([0, 10], varVariant);
  VarArrayPut(ParamList, Value1, [0]); ....

  fractionCollector.Obj.SetAnalysisPosition(VarArrayRef(IntegerArray), AnalysisNo, VarArrayRef(ParamList));
aber irgendwie klappt es nicht. Muss mich morgen mal mit dem C-Programmierer in Verbindung setzen. Aber vielleicht weiß ja auch ein Delphianer, wie ich die Parameterliste auf der Delphi-Seite definieren muss.

Zacherl 2. Mär 2017 22:00

AW: "VarArrayCreate" vs "array of array of Integer"
 
Zitat:

Zitat von norwegen60 (Beitrag 1363079)
aber irgendwie klappt es nicht

Klappt es denn, wenn du den
Delphi-Quellcode:
callback
Parameter noch hinzufügst? Den hast du bisher vergessen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:17 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz