Ok... sad cu malo da ti sazvacem ovo :)
Iz dlla exportujes funkciju koja izgleda npr. ovako:
Code:
function GetLocalizedData(ControlProperty: PChar; Data: PChar; var DataSize: Integer): Integer; stdcall;
Dakle... u prvom parametru saljes string kojim trazis sta hoces, drugi parametar je string u kojem ces dobiti rezultat, treci parametar predstavlja koliko mesta imas u tom stringu.
Dll ce da uzme ControlProperty strign i recimo da u njemu pise
MainForm:ButtonOpen:Caption... svoj dll mozes da hardcodiras i da napises nesto kao:
Code:
if ControlProperty = 'MainForm:ButtonOpen:Caption' then
vrati Otvori
mada bi najbolje bilo na imas neki script fajl u kome ces definisati sta dll da vrati kad treba tako da neces morati da pises dll za svaki jezik nego da pises u obicnom notepadu samo skriptu koja bi izgledala recimo ovako:
Code:
MainForm:ButtonOpen:Caption="Otvori"
Kad dobijes string koji treba da vratis, prvo pogledas da li je Data razlicito od nil i da li je DataSize vece ili jednako s duzinom stringa koji treba da vratis. Ako je tako samo upises string u Data i vratis duzinu stringa koju si upisao (sve je proslo ok). Ako je Data nil ili u DataSize kaze da ima manje mesta nego sto treba, onda samo vratis duzinu stringa koju treba da upises.
u glavnom programu funkciju pozivas npr ovako:
Code:
procedure NekaProcedura;
var
DataString: String;
begin
SetLength(DataString, GetLocalizedData('MainForm:ButtonOpen:Caption', nil, 0));
GetLocalizedData('MainForm:ButtonOpen:Caption', PChar(DataString), Length(DataString));
btnOpen.Caption := DataString;
end;
Nadam se da je sad bilo jasno.