procedure GetEnvironmentStrings(ss:TStrings); {Получение переменных среды} var ptr: PChar; s: string; Done: boolean; begin ss.Clear; s:=''; Done:=FALSE; ptr:=windows.GetEnvironmentStrings; while Done=false do begin if ptr^=#0 then begin inc(ptr); if ptr^=#0 then Done:=TRUE else ss.Add(s); s:=ptr^; end else s:=s+ptr^; inc(ptr); end; end; Function GetTempDir : string; var EnvStrings : TStringList; i : integer; s : string; begin EnvStrings := TStringList.Create; GetEnvironmentStrings(EnvStrings); Result := EmptyStr; for i := 0 to EnvStrings.Count - 1 do begin s := trim(EnvStrings[i]); if copy(s, 1, 5) = 'TEMP=' then begin Result := copy(s, 6, 255); Break; end; end; EnvStrings.Free; end;