Zitat von
HaCkAttaCk2001:
Das soll also heißen, dass ich für jede Prozedur ein type und den Rest anlegen muss? *seufz*
Eben das kannst Du vermeiden (zumindest die stupide Handarbeit)
Nehmen wir an es gibt folgende Deklarationen:
Delphi-Quellcode:
function foo: Integer; stdcall; external 'foo.dll' name 'foo';
function bar(const i: Integer): Integer; stdcall; external 'bar.dll' name 'bar';
...dann kannst Du:
- Die Zeilen markieren
- Im Menü 'Search / Replace... (Strg+R)' auswählen
- Option 'Regular Expressions' aktivieren
- 'Text to find:'
Code:
^ *function *{[a-z_A-Z0-9]*}{.*}; external *{[a-z_A-Z0-9.']*} *name *{[a-z_A-Z0-9.']*};$
- 'Replace with:'
Code:
{$IFDEF DYNAMIC_LINK}[color=red]\r// foo\r[/color]{$ELSE}\rfunction \0\1; external \2 name \3;\r{$ENDIF DYNAMIC_LINK}
...und dann wird bei 'Replace All' daraus
Delphi-Quellcode:
{$IFDEF DYNAMIC_LINK}
// foo
{$ELSE}
function foo: Integer; stdcall; external 'foo.dll' name 'foo';
{$ENDIF DYNAMIC_LINK}
{$IFDEF DYNAMIC_LINK}
// foo
{$ELSE}
function bar(const i: Integer): Integer; stdcall; external 'bar.dll' name 'bar';
{$ENDIF DYNAMIC_LINK}
\r// foo\r kannst Du durch Deinen Wrapper ersetzen, wobei:
- \r ist ein Zeilenumbruch
- \0 ist der Name der Funktion
- \1 sind die Parameter der Funktion
- \2 ist der Name der
Dll
- \3 ist der Export-Name
Gruss Nico