Я считаю, что проблема заключается в том, что списки не инициализированы. Кроме того, обычно лучше кодировать интерфейс, чем реализацию, поэтому могут помочь следующие изменения:
class Store{
private String name;
// use interface and initialize;
private final List<Account> arracc = new ArrayList<>();
//same here
private final List<Products> arrprod = new ArrayList<>();
public Store(){
}
// return; note this exposes the internal storage, so may be incorrect
public List<Account> getArracc() {
return arracc;
}
// return the products; again, exposing internals and allows
// for anyone who calls getArrprod() to modify the list or the elements,
// which breaks encapsulation
public List<Products> getArrprod() {
return arrprod;
}
...
Я думаю, что вторую проблему можно решить с помощью некоторого рефакторинга.
private static loadProducts(Store store) {
ArrayList<String>productsList=new ArrayList<String>();
// Read all products from the products file
File products = new File("Products.txt");
try(Scanner input = new Scanner(products);)
{
input.useDelimiter(",");
while(input.hasNextLine()){
productsList.add(input.nextLine());
}
input.close();
}catch(Exception ex){
System.out.println("Error in Products");
}
for(int i = 0; i< productsList.size(); i++) {
String account=productsList.get(i);
splittedInfoProd= account.split(",");
String id = splittedInfoProd[0];
String name = splittedInfoProd[1];
String supplier = splittedInfoProd[2];
double price = Double.valueOf(splittedInfoProd[3]));
Products productObject = new Products (id, name, supplier, price);
store.setArrProd(productObject);
}
}
store
будет иметь все входы.
Поскольку VB6 создает COM DLL, Visual Studio не должна иметь никаких проблем при генерации interop тупика для Вас. Просто добавьте, что ссылка на VB6 DLL из Вашего проекта.NET выбором Добавляет Ссылку в Visual Studio и нахождении Вашего DLL под вкладкой COM. Удостоверьтесь, что VB6 DLL регистрируется на Вашей машине, прежде чем Вы сделаете это.