AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

AV bei FreeLibrary

Ein Thema von cookie22 · begonnen am 30. Jul 2010 · letzter Beitrag vom 30. Jul 2010
Antwort Antwort
Benutzerbild von cookie22
cookie22

Registriert seit: 28. Jun 2006
Ort: Düsseldorf
936 Beiträge
 
Delphi XE2 Professional
 
#1

AV bei FreeLibrary

  Alt 30. Jul 2010, 05:56
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:
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;
den code der dll hab ich soweit wie möglich reduziert um fehler auszuschliessen.
Delphi-Quellcode:
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.
sieht da jemand einen fehler, ich find da nichts. eigentlich sollte das so funktionieren oder bin ich blind.

mfg
cookie
Gruß
Cookie
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2

AW: AV bei FreeLibrary

  Alt 30. Jul 2010, 06:02
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: http://www.michael-puff.de/Artikel/StringDLL.shtml
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von cookie22
cookie22

Registriert seit: 28. Jun 2006
Ort: Düsseldorf
936 Beiträge
 
Delphi XE2 Professional
 
#3

AW: AV bei FreeLibrary

  Alt 30. Jul 2010, 08:01
danke, jetzt geht es.
Gruß
Cookie
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:45 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz