Надо мне сделать ф-ю для вывода некоторой системной информации, но почему-то вместо пути каталога временных файлов выдает какой-то бред ...
type
TSystemInfo = (
siCompName,
siWinDir,
siTempPath
);
// ....
function getSysInfo(const Info: TSystemInfo): String;
const
size: DWORD = 255;
var
buf: PChar;
begin
GetMem(buf, size);
case Info of
siCompName: GetComputerName(buf, size);
siWinDir: GetWindowsDirectory(buf, size);
siTempPath: GetTempPath(size, buf);
end;
Result := buf;
FreeMem(buf, size);
end;
// ...
someString := getSysInfo(siTempPath);
Странно, у меня нормально выдает... Только
var
size: DWORD = 255; // <-- С константой не компилируется...
function getSysInfo(const Info: TSystemInfo): String;
var
buf: PChar;
begin
GetMem(buf, size);
case Info of
siCompName: GetComputerName(buf, size);
siWinDir: GetWindowsDirectory(buf, size);
siTempPath: GetTempPath(size, buf);
end;
Result := buf;
FreeMem(buf, size);
end;
Спасибо, убрал size из констант и все теперь правильно показывает, только у меня и с константой компилировалось ... это должно настораживать ?
От настроек зависит... Я убрал галку с Assignable Typed Constants, как видишь, лучше оно не будет компилироваться, чем выдаст некорректный результат...