also meine Funktion ist relativ leicht aufgebaut: es soll eine dezimalzahl in hex umwandeln und dann wieder an Excel zurück geben, jedoch stürzt das program einfach ab:
also meine Funktion ist relativ leicht aufgebaut: es soll eine
dezimalzahl in hex umwandeln und dann wieder an Excel zurück
geben, jedoch stürzt das program einfach ab:
char *int2hex(int dezimalzahl)
{
sprintf(zielPuffer, „%X“, dezimalzahl);
return zielPuffer;
}
jedoch stürzt excel einfach so ab…woran könnte das liegen?
Kann man nicht sagen, wenn man den Rest des
Programms nicht kennt. meine Glaskugel sagt
mir aber, daß ‚zielPuffer‘ als
char \* zielPuffer;
deklariert wurde. Falls kein Speicher zugewiesen
wurde, kommt es in der Funktion zum „Speicherfehler“.
Das __declspec wird in der Regel bei DLLs durch ein X_EXPORT Makro ersetzt, welches entweder zu Import (Headerfilebenutzer) oder Export (Implementierung) expandiert.
Zurueckgegeben wird nichts statisches, sondern ein Wert, der von einer der SysAlloc Funktionen allokiert wurde.
Fuer den non-unicode Fall koennte die Funktion also wie folgt aussehen;
ich selbst habe noch nie vb programmiert, kann dir also nichts über die Speicherverwaltung sagen. Prinzipiell musst du aber bei deiner Funktion aufpassen:
Dieser Code erzeugt die erwünschte Ausgabe 1 2.
Was jetzt noch fehlt ist eine Längenüberprüfung bzw. das Bereitstellen von übermäßig viel Speicher (char *erg1=new char[4096], *erg2=new char[4096]