TOpenFileName.lpstrFile muss auf einen PChar zeigen, der initialisiert ist. Idealerweise ist die Länge wenigstens MAX_PATH. TOpenFileName.nMaxFile muss auf diese Länge gesetzt werden.
Wichtig ist, dass das erste Zeichen im PChar-Puffer ein Nullbyte sein muss.
Ich empfehle dir, die komplette OPENFILENAME-Struktur im
PSDK durchzusehen, und alle Elemente zu setzen, die dir von Nutzen sein könnten.
Da du die Variable buffer im nächsten Codestück verwendest, scheinst du nicht den vollständigen Code gepostet zu haben. Wenn es mit dem, was ich oben schrieb, nicht funktioniert, solltest du das vielleicht mal tun.