Line head, *pointer; Matrix head2, *pointer2; int i,j; pointer=&head; pointer2=&head2; for (i=0;i<1000;i++) { if (StringGrid1->Rows[i]!="") { pointer2->next= new Matrix; pointer2=pointer2->next; pointer2->i=i; pointer2->value=pointer; pointer2->next=NULL; for (j=0;j<1000;j++) { if (StringGrid1->Cells[j][i]!="") { pointer->next= new Line; pointer=pointer->next; pointer->value= StrToInt(StringGrid1->Cells[j][i]); pointer->j=j; pointer->next=NULL; } } }