![]() |
AV bei FreeLibrary
hallo,
ich habe folgendes problem. ich rufe aus delphi 2005 eine in delphi 5 geschriebene dll auf. leider bekomme ich bei freelibrary eine access violation und weiss nicht warum. der code sieht so aus:
Delphi-Quellcode:
den code der dll hab ich soweit wie möglich reduziert um fehler auszuschliessen.
type
TGetRegString = function(n: PChar): PChar; stdcall; function GetRegString(n: PChar): PChar; function GetRegString(n: PChar): PChar; var GetRegString: TGetRegString; Handle: THandle; begin Handle := LoadLibrary(PChar(ExtractFilePath(ParamStr(0)) + 'reg.dll')); if Handle <> 0 then begin @GetRegString := GetProcAddress(Handle, 'GetRegString'); if @GetRegString <> nil then begin Result := GetRegString(n); end; FreeLibrary(Handle); end; end;
Delphi-Quellcode:
sieht da jemand einen fehler, ich find da nichts. eigentlich sollte das so funktionieren oder bin ich blind.
library reg;
uses SysUtils, Classes{, SlokUtil}; {$R *.RES} function GetRegString(n: PChar): PChar; stdcall; var s: string; begin //s := GetChallenge('$44§ds#hu&c1b76klhh' + StrPas(n), 0); //s := GetUnlockString(s, '$44§ds#hu&c1b76klhh', 0); Result := PChar(s); end; exports GetRegString; begin end. mfg cookie |
AW: AV bei FreeLibrary
PChar ist ein Zeiger auf eine Zeichenkette. Da DLL und Exe unterschiedliche Speichermanager haben, funktioniert das nicht. Das heißt nicht FreeLibrary löst die Exception aus, sondern die tritt schon viel früher auf. Wie man Zeichenketten aus einer DLL zurückgibt, kannst du hier sehen:
![]() |
AW: AV bei FreeLibrary
danke, jetzt geht es. :)
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:26 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz