// zuerst werden die zwei DLLs erzeugt:
// ---------------------------------------------------------------
library deutsch;
type
stringarray = array[0..3] of Shortstring;
function stringsausgeben: stringarray;
begin
result[0] := '&Ja';
result[1] := '&Nein';
result[2] := '&Abbrechen';
result[3] := 'deutsch';
end;
exports stringsausgeben;
begin
end.
// ----------------------------------------------------------------
library english;
type
stringarray = array[0..3] of Shortstring;
function stringsausgeben: stringarray;
begin
result[0] := '&Yes';
result[1] := '&No';
result[2] := '&Cancel';
result[3] := 'english';
end;
exports stringsausgeben;
begin
end.
// Hinweis: Die uses-Anweisung in der DLL wurde erst nach dem Abspeichern
// entfert, dann nochmal gespeichert und danach die DLL erzeugt.
// Man kann sie auch drin lassen, dann wird aber die DLL größer.
// ---------------------------------------------------------------
// Und so kann man beispielsweise das Ganze im Programm aufrufen:
type
spr = (deutsch, english);
stringarray = array[0..3] of Shortstring;
TBeschriftung = function: stringarray;
const
sprache: spr = deutsch;
var
HLIB: THandle;
Zeiger: TFarProc;
function CaptionsSetzen(kompo: array of TComponent): boolean;
var
beschriftung: TBeschriftung;
x: integer;
begin
case sprache of
deutsch: HLIB := LoadLibrary('deutsch.dll');
english: HLIB := LoadLibrary('english.dll');
end;
zeiger := GetProcAddress(HLIB, 'stringsausgeben');
if zeiger <> nil then begin
@beschriftung := zeiger;
for x := 0 to high(kompo) do
if kompo[x] is TLabel then
TLabel(kompo[x]).caption := beschriftung[x]
else if kompo[x] is TButton then
TButton(kompo[x]).caption := beschriftung[x];
result := true;
end else result := false;
freeLibrary(HLIB);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
CaptionsSetzen([Button1, Button2, Button3, Label1]);
end;
// DLLs wechseln
procedure TForm1.Button1Click(Sender: TObject);
begin
if not CaptionsSetzen([Button1, Button2, Button3, Label1])
then showmessage('Fehler');
if sprache = deutsch then sprache := english else sprache := deutsch;
end;