Arrays doorgeven C

Ik ben lekker ( :sealed: :cry: ) bezig met Applescript Studio en het aanroepen van C-gebaseerde methoden via de 'call method' in Applescript.

[b:12301c6827]Deze vraag gaat met name over de C-methode, die een aantal variabelen moet verwerken welke uit een array komen.[/b:12301c6827]

goed, een voorbeeld uit het Applescript:

[code:1:12301c6827]
set myArray to {100, 200, 300}
set myReturnedString to call method "ReturnMyValue:" with parameter myArray
[/code:1:12301c6827]

De C-methode:

[code:1:12301c6827]

  • (NSString*)ReturnMyValue:(NSArray *)myValues
    {

    Ontbrekende code:
    de binnenkomende array ‘myValues’ moet verwerkt worden, bijvoorbeeld:

      int theCalculatedValue =  myValues[0] + myValues[1] / myValues[2];
      ---
      Het resultaat mag dan weer worden teruggegeven aan mijn Applescript
    

    return [NSString stringWithFormat:@"%hu", theCalculatedValue];

}
[/code:1:12301c6827]

Ik heb al het nodige geprobeerd, maar ik krijg die variabelen niet uitgelezen in de methode.
Meestal Error: Incompatible types in assignment, wanneer ik de volgende regels aan mijn methode toevoeg:

[code:1:12301c6827]
NSArray *myVar[3];
myVar[0] = myValues[1];
[/code:1:12301c6827]
Dus, welke C-specialist kan mij verder helpen om de array ‘myValues’ verder te verwerken binnen de methode?

Thnks in advance,

Erik

Dit is een "long shot", maar misschien heb je er iets aan: In Delphi is het effect van: myArray = otherArray dat myArray een pointer wordt naar otherArray, en niet een copie. Omdat C vaak veel strenger is dan Delphi, kun je een foutmelding krijgen omdat myArray geen pointer is, maar een address. Om een echte copie van otherArray te maken, moet je dan het commando 'Copy' gebruiken: copy(myArray,otherArray). In C is dat misschien helemaal anders, maar misschien dat dit in de goede richting wijst.

Hallo Erik, zoiets?

Groetjes,

Frank

#include <stdio.h>

void doewat(int lokaal) / de waarde van de pointer in het argument is een int */
{
lokaal[1]=lokaal[0]+7;
printf(“in functie 0:%d 1:%dn”,lokaal[0],lokaal[1]);
}

int main(){
int rijtje[2]={0,0};

rijtje[0]=1;
printf(“voor 0:%d 1:%dn”,rijtje[0],rijtje[1]);
doewat(&rijtje[0]); /* dit kan ook doewat(rijtje) zijn */
printf(“na 0:%d 1:%dn”,rijtje[0],rijtje[1]);
}

./test
voor 0:1 1:0
in functie 0:1 1:8
na 0:1 1:8

Dank voor de reacties alvast! Ik ga eens kijken of ik hier wat verder mee kom!

Erik