Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Mehrdim. SafeArray (https://www.delphipraxis.net/111924-mehrdim-safearray.html)

wisher 11. Apr 2008 19:48


Mehrdim. SafeArray
 
Hallo,
ich möchte in meinem 2-dimensionalen SafeArray Werte speichern.
In der ersten Dimension einen Integer-Wert und in der zweiten Dimensionen einen jeweils zum Element der ersten Dimensionen gehörenden Wert. (auch integer)

Eindimensional klappt das gut, aber bei zwei Dimensionen habe ich irgendeinen Denkfehler drin. Der letzte Wert der ersten Dimension wird immer von einem Wert der zweiten Dimension überschrieben. anbei mal das Füllen des Array.

Delphi-Quellcode:

  var
  MySafeArray : PSafeArray
  aBound     : array[0..1] of TSafeArrayBound;
  Dim        : array[0..1] of Integer;
  arCols     : array of array[0..1] of Integer;



  aBound[0].cElements := length(arCols);
  aBound[0].lLbound  := 0;
  aBound[1].cElements := length(arCols);
  aBound[1].lLbound  := 0;      


   MySafeArray  := SafeArrayCreate(VT_INT,2,aBound)

   If length(arCols)>0 then begin
       for i := low(arCols) to high(arCols) do begin
          Dim[0] := i;
          PutBreite(MySafeArray,Dim,arCols[i,0]);
       end;

       for i := low(arCols) to high(arCols) do begin
          Dim[1] := i;
          PutBreite(MySafeArray,Dim,arCols[i,1]);
       end;
   end;
 

  procedure PutBreite(pSA: PSafeArray; iPos: array of Integer; Breite: Integer);
  begin
     SafeArrayPutElement(pSA, iPos, Breite);
  end;
Ich mache irgendwas mit den Dimensionen falsch. Hat jemand eine Idee?

Danke und Gruß
Sascha

sirius 12. Apr 2008 08:28

Re: Mehrdim. SafeArray
 
In der Funktion PutBreite machst du aus dem statischen Array Dim ein dynamisches array (zumindest von der Handhabung her), evtl. musst du iPos[0] o.ä. übergeben.

Jelly 12. Apr 2008 09:27

Re: Mehrdim. SafeArray
 
Zitat:

Zitat von wisher
PutBreite(MySafeArray,Dim,arCols[i,0]);

:mrgreen: Auch mal ein netter Methodenname :zwinker:


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:38 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