Result := PChar(ver);
Eine lokale Variable so zu verwenden ist ungünstig.
In deinem Fall wird die Adress nicht gleich überschrieben werden, aber eigentlich zeigt der Pointer nach Verlassen der Funktion auf einen ungültigen Speicherbereich.
Ja das ist total falsch, niemals einen Speiecherbereich so in
Dll's übergeben.
Besser:
Delphi-Quellcode:
function getDllVersion(Buffer : Pchar; bufsize : integer) : integer;
begin
// Hier den buffer mit maximal bufsize füllen
//strpcopy oder was auch immer
end;
hat den Vorteil das auch über das Result auf zu kleinen Buffer oder sonstige Problem hingewiesen werden kann