VC 6 Datentypenprobleme

Mel_One

Erfahrenes Mitglied
Hallo,
ich bin mehr oder minder Neuling in C, habe aber das Problem, dass ich eine C-Funktion in VB6 einbinden muss (längere Geschichte :-) ). Ich hab da allerdings (irgendwie ja auch verständlich) Probleme mit den Datentypen.
Fangen wir doch erst mal mit dem C-Code an:
Code:
int _stdcall iconv_aufruf(const char* tocode, const char* fromcode, char* into, int *intoSize,char* out, int *outSize)
{
	iconv_t cd = iconv_open(tocode,fromcode);
	//char *test=fromcode;
	size_t valueIntoSize = (unsigned int)intoSize;
	size_t valueOutputSize = (unsigned int)outSize;
	out[0]=(char)intoSize;
	/*size_t returnValue = iconv(cd,&into,&valueIntoSize,&out,&valueOutputSize);*/
	iconv_close(cd);
	return 0;
	/*i=23;
	return 0;*/
}
Problem dabei ist, dass die beiden int-Variablen intoSize und outSize anscheinend falsch in den size_t-Variablen landen, wobei size_t ein Typedef für unsigned int ist. Ich frag mich, ob es da irgendeinen Trick gibt, denn man anwenden muss? Oder sieht hier jemand einen signifikanten Fehler? Bin für jede Hilfe dankbar.
Grüße
 
Hm, falls noch jemand sucht und wat findet, wär das sehr freundlich für Leute mit diesem Problem, ich hab es umgangen und berechne die Übergabewerte direkt in der Funktion. Hätt ich auch mal früher drauf kommen können.
Greetings
 
Zuletzt bearbeitet:
Hallo,
die int-Werte werden als Zeiger übergeben und müssen auch entsprechend verwendet werden. Mit deiner Schreibweise weist du die Adressen der Variablen zu, aber nicht deren Werte. Richtig sollte es so sein:
C++:
size_t valueIntoSize   = (size_t)*intoSize;
size_t valueOutputSize = (size_t)*outSize;
Gruß
MCoder
 
K, erklärt das ganze. :-) Ich seh schon, ich sollte mich endlich mal mehr mit Zeigern etc. auseinandersetzen. Danke auf jeden Fall.
Greetings.
 

Neue Beiträge

Zurück