struct testR{
bytes32 name;
int32 count;
}
testR[] public tests;
function createTest(bytes32[] names) external returns (bool success) {
uint256 len = names.length;
for (uint8 i=0;i<len;i++){
tests.push(testR({name: names[i], count: 0}));
}
return true;
}
Hier ist mein Code. Wenn ich diesen Vertrag in meinem privaten Netzwerk bereitstelle, funktioniert die Funktion createTest einfach nicht. Ich übergebe ein Array von konvertierten in HEX-Zeichenfolgen. Wenn ich dann das öffentliche Array "tests" aufrufe, gibt es mir immer 0x und null zurück. Wenn ich versuche, diesen Vertrag in Remix mit JVM zu kompilieren und auszuführen, wird folgender Fehler angezeigt:
undefined errored: VM error: invalid opcode.
invalid opcode The constructor should be payable if you send value.
The execution might have thrown.
Debug the transaction to get more information.
Ich denke, mit meiner Schleife stimmt etwas nicht, aber es scheint so einfach zu sein.
Ich habe gerade ein paar Dinge neu geordnet und der folgende Code hat für mich funktioniert. Stellen Sie außerdem sicher, dass Sie tatsächlich ein Array eingeben, sonst erhalten Sie auch eine Fehlermeldung.
testR[] public tests;
struct testR{
bytes32 name;
int32 count;
}
function createTest(bytes32[] names) external returns (bool success) {
uint256 len = names.length;
for (uint8 i=0;i<len;i++){
tests.push(testR(names[i],0));
}
return true;
}
Alex Plechanow
das Fett
Alex Plechanow