Zitat von
Luckie:
Wie machen das
API-Funktionen, dass man da in Delphi das Schlüsselwort
var benutzen muss.
Zur Ergänzung zu Dax: das geht natürlich nicht mit Strings, da C einen anderen Speichermanager verwendet.
Zitat von
Luckie:
Wie sicher ist die C-Funktion bezüglich BufferOverflows?
Überhaupt nicht. Bessere Variante:
Code:
extern "C" EXPORT int addstr(char *str1, char *str2, char *buffer, int buflen)
{
StringCbCopy(buffer, buflen, str1);
StringCbCat(buffer, buflen, str2);
return strlen(buffer);
}
Zitat von
Luckie:
Und zu guter letzt, wie muss ich es machen, damit meine C-Funktion die erforderliche Größe des Buffers zurückgibt, falls dieser zu klein ist beim Aufruf?
Ganz einfach: strlen(str1) + strlen(str2) mit buflen vergleichen und entsprechend handeln.
// EDIT: Parameterreihenfolge korrigiert