Ich glaub, ich weiß, wo es hakt. Der Accept-HEader liefert nicht nur */*, sondern danach noch eingies an Datenmüll.
PChar haben eine #0 hinten dran und Delphi-Strings aka LongStrings (also alles außer dem ShortString) sogar zwei implizite #0#0 (so lange der Entwickler nicht am Speicher rumpfuscht, ala BufferOverflow).
Array und Packed-Array sollten hier keinen Unterschied haben, da Pointer quasi immer packed sind (weil sie
keine ungerade unausgerichtete Größe besitzen, also immer bereits ausgerichtet sind und es somit auch keine Lücke gibt)
Laut Dokumentation ist die #0 aber nicht ganz richtig.
Delphi-Quellcode:
accept[0] := PAnsiChar('*/*');
accept[1] := nil; // ein Zeiger auf NICHTS, während PChar(#0) ein Zeiger auf einen String aus einem #0 ist (eigentlich aus zwei #0, inkl. dem PChar-Terminator)
Zitat:
Code:
PCTSTR rgpszAcceptTypes[] = {_T("text/*"), NULL};
C++-NULL = Delphi-nil