Solange
DLL und EXE Delphi geschrieben sind, brauchst du nichts Zusätzliches.
Wobei andere Sprachen auch den Speichermanager der EXE mit benutzen könnten, da hier die EXE ja zuerst geladen wird.
Bei ShareMem mußte man noch eine weitere
DLL mitgeben (die mit dem globalen Speichermanager ... BorlndMM.dll oder so)
Der FastMM, in deinem Delphi, ist aber so ausgelegt, daß er von sich aus den Speicher sharen kann, welches die besagte
Unit für dich erledigt.
> Die EXE/
DLL welche hierbei zuerst geladen wird, stellt ihren MM den Anderen zur Verfügung.
[add]
Ach ja ... *aufpfotenhau*
Was suchen z.B. len und buffer in den globalen?
Du kombinierst String mit PWideChar
String + PChar + SizeOf(Char)
WideString|UnicodeString + PWideChar + 2|SizeOf(WideChar)
AnsiString + PansiChar + 1|SizeOf(AnsiChar)
und untereinander niemals vermischen!
PS:
Zitat:
Delphi-Quellcode:
function TForm1._cl(compName: string): String;
var
s: String; // garnicht verwendet?
begin
len:=comp(PWideChar(compName), nil, 0);
try
GetMem(Buffer, len*2+2);
len:=comp(PWideChar(compName), Buffer, len*2+2);
result:=String(Buffer);
finally
FreeMem(Buffer);
end;
end;
Delphi-Quellcode:
function TForm1._cl(compName: UnicodeString): UnicodeString;
begin
SetLength(Result, comp(PWideChar(compName), nil, 0));
comp(PWideChar(compName), PWideChar(Result), (Length(Result) + 1) * SizeOf(WideChar));
end;