Success at last! At first I was trying to write some C code and make a DLL that would handle my variant and change the array values. I found out that what was being passed was not actually a pointer to a pointer, but I still don't really know what it is. There may be a way to make this work with C, but I am not good enough at C to figure it out. Likewise with C++. I realized that the company that provided me with the API used Visual Basic to do all of their example programs, so I made an ActiveX DLL in VB and used that to change my array values. I would strongly recommend using VB if you have to mess with Variants - it is really not picky about what you give it, and the code isn't too hard to write. Here is the function I wrote to take care of things:
Public Function ArrayEdit2D(NewArray As Variant, Cal2DTableData As Object, Rowsize As Integer, Colsize As Integer) As BooleanDim data As ObjectDim matrixData As VariantDim res As BooleanDim row As IntegerDim col As IntegerSet data = Cal2DTableData.GetValue()matrixData = data.GetDoublePhysValue()For row = 0 To (Rowsize - 1)For col = 0 To (Colsize - 1)matrixData(row, col) = NewArray(row, col)Next colNext rowres = data.SetDoublePhysValue(matrixData)res = res And Cal2DTableData.SetValue(data)ArrayEdit2D = resEnd Function
Thanks to everyone who offered their help, and I hope that some day I'll be able to make such useful contributions!