Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Делфи _ Вывод системной информации

Автор: klem4 15.03.2007 22:06

Надо мне сделать ф-ю для вывода некоторой системной информации, но почему-то вместо пути каталога временных файлов выдает какой-то бред ...

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);

Автор: volvo 15.03.2007 23:00

Странно, у меня нормально выдает... Только

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;


Автор: klem4 16.03.2007 0:02

Спасибо, убрал size из констант и все теперь правильно показывает, только у меня и с константой компилировалось ... это должно настораживать ?

Автор: volvo 16.03.2007 0:10

От настроек зависит... Я убрал галку с Assignable Typed Constants, как видишь, лучше оно не будет компилироваться, чем выдаст некорректный результат... smile.gif