AGB  ·  Datenschutz  ·  Impressum  







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

Programm stürzt bei Zugriff auf DLL ab

Ein Thema von WorstNightmare · begonnen am 6. Okt 2008 · letzter Beitrag vom 7. Okt 2008
 
WorstNightmare

Registriert seit: 6. Okt 2008
159 Beiträge
 
RAD-Studio 2010 Arc
 
#1

Programm stürzt bei Zugriff auf DLL ab

  Alt 6. Okt 2008, 12:37
Hi,

ich habe eine DLL geschrieben, die mir einfachen Zugriff auf die Grundfunktionen von RegExpr.pas gibt, da ich noch viele andere Libraries habe, die Reguläre Ausdrücke verwenden, und diese nicht wegen RegExpr.pas 100 KB größer werden sollen.
Bei mir funktioniert die DLL auch (Vista Ultimate SP1), nur bei einem Kollegen (Windows XP SP3) stürzt das Programm, welches auf die DLL zugreift, ab.

Dies ist der Code in der DLL:
Delphi-Quellcode:
library RegExp;

{ Wichtiger Hinweis zur DLL-Speicherverwaltung: ShareMem muss sich in der
  ersten Unit der unit-Klausel der Bibliothek und des Projekts befinden (Projekt-
  Quelltext anzeigen), falls die DLL Prozeduren oder Funktionen exportiert, die
  Strings als Parameter oder Funktionsergebnisse übergeben. Das gilt für alle
  Strings, die von oder an die DLL übergeben werden -- sogar für diejenigen, die
  sich in Records und Klassen befinden. Sharemem ist die Schnittstellen-Unit zur
  Verwaltungs-DLL für gemeinsame Speicherzugriffe, BORLNDMM.DLL.
  Um die Verwendung von BORLNDMM.DLL zu vermeiden, können Sie String-
  Informationen als PChar- oder ShortString-Parameter übergeben. }


uses
  RegExpr;

{$R *.res}

function RegEx(Mask, Source: PChar): PChar; stdcall;
var
  RE: TRegExpr;
begin
  RE := TRegExpr.Create;
  RE.Expression := Mask;
  try
    if RE.Exec(Source) then
      Result := PChar(RE.Match[0])
    else
      Result := 'kein Treffer';
  finally
    RE.Free;
  end;
end;

exports
  RegEx;

begin
end.
Und so sieht die Zugriffs-Unit aus:
Delphi-Quellcode:
unit RegExp;

interface

const
  LIB = 'Plugins\RegExp.dll';
  NOT_MATCHED = 'kein Treffer';

function RegExProc(Mask, Source: PChar): PChar; stdcall; external LIB name 'RegEx';
function RegEx(Mask, Source: string): string;

implementation

function RegEx(Mask, Source: string): string;
begin
  Result := RegExProc(PChar(Mask), PChar(Source));
end;

end.
Ein Aufruf sieht z.B. so aus:
Delphi-Quellcode:
var
  s: string;
begin
  s := RegEx('\d+', 'asd123dsa');
end;
Beides wurde mit Delphi 2009 kompiliert.
Liegt der Fehler in meinem Code, oder kann es auch an etwas anderem liegen?
  Mit Zitat antworten Zitat
 


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 19:27 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