Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.199 Beiträge
 
Delphi 12 Athens
 
#4

AW: Multilingual mit DLLs u. Unicode - so richtig?

  Alt 31. Aug 2011, 22:15
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;
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (31. Aug 2011 um 22:28 Uhr)
  Mit Zitat antworten Zitat