Delphi - Rendszerváltozók feloldása

forráskód letöltése
Sok helyen a registry-ben találkozhatunk REG_EXPAND_SZ típusú adattal. Ez egy olyan sztring, melyben egy rendszerváltozó található, amely % jelek között van feltüntetve. Rendszerint elérési útvonalaknál használatos ez, például: %SystemRoot%\System32\zipfldr.dll. Egy ilyen adatot kiolvasva a registry-ből nem sokra megyünk, hacsak nem tudjuk a rendszerváltozókat helyettesíteni a hozzájuk tartozó tényleges adattal. Rendszerváltozók persze nem csak a registry adatai között fordulhatnak elő, hanem szinte bárhol. Egy-egy sztringben, ha van rendszerváltozó, akkor ezt egy egyszerű módszerrel kicserélhetjük annak aktuális értékére.

Ehhez az ExpandEnvironmentStrings függvényt kell használnunk. Első paraméterként azt a sztringet kell megadnunk, mely tartalmazza a rendszerváltozókat. Másodikként egy olyan területetet, melyre az eredmény kerülhet, amelynél már a rendszerváltozók helyén azoknak az értékük szerepel. Végül harmadikként a megadott területünk méretét adjuk át.
procedure TForm1.FormCreate(Sender: TObject);
var
  buf: array[0..255] of char;
begin
  ExpandEnvironmentStrings(PChar(Label1.Caption), buf, 256);
  Label2.Caption:=buf;
end;