Hi
Maybe accessing in a different way.
Code:
[/code] 
#include <acknex.h>
#include <default.c>
#define ROWS    10
#define COLUMS   3

var video_depth = 32;
  
STRING* mdArray[30]; // ROWS * COLUMS;

void testFunction(STRING** param)
{
  diag(param[0]);
  diag(param[1]);
  diag(param[2]);
}

void testFunction2(STRING** param, int x, int y)
{
  diag(param[x * COLUMS + y]);   // x + COLUMS * y
}

function main()
{
   level_load(NULL);
   //STRING* A0 = "\nline 0";
   STRING* A1 = "\nline 1";
   STRING* A2 = "\nline 2";
   STRING* A29 = "\narray last item";
   mdArray[0] = (STRING*)malloc(sizeof(STRING)); // allocate memory
 //mdArray[0] = A0;
   mdArray[1] = A1;
   mdArray[2] = A2;
   mdArray[29] = A29;

  // str_cpy(mdArray[0], "\nreplace string data mdArray[0]");
  // str_cpy(mdArray[1], "\nreplace string data in mdArray[1]");
   
   //for malloc use this
   strcpy((mdArray[0]).chars, "\nreplace string data mdArray[0]");
   
   testFunction(mdArray);
   
   testFunction2(mdArray, 0, 0);
   testFunction2(mdArray, 9, 2);

}
[code]