Форум: "Система";
Текущий архив: 2002.04.25;
Скачать: [xml.tar.bz2];
Внизпомогите разобраться с поинтерами Найти похожие ветки
← →
Philip (2002-01-27 00:35) [0]Мастера, подскажите пожалуйста, как правильно пользоваться функцией GetSystemDirectory, а то я совсем запутался с поинтерами и PChar"ами: как правильно
GetSystemDirectory(@Buf, MAX_PATH);
или
GetSystemDirectory(Buf, MAX_PATH);
если Buf : PChar;
и как потом значение в Buf корректно изменить на Buf + S, если S : string.
заранее благодарю и извините за ламерский вопрос.
p.s. все мои попытки приводили к ошибке EAccessViolation.
← →
Tosov (2002-01-27 00:55) [1]Скорее всего Buf, но надо выделить операвивку для этого Buf
GetMem(buf,MAX_PATH);
..
потом FreeMem(Buf);
← →
Philip (2002-01-27 00:58) [2]Спасибо.
← →
Romkin (2002-01-28 16:04) [3]По причине того, что функция возвращает длину пути в символах, рекомендую пользоваться string, без заморочек с памятью
var
SystemDir: string;
nSize: integer;
nSize := GetSystemDirectory(nil,0);
//nSize = 0 - Error
SetLength(SystemDir,nSize);
GetSystemDirectory(PChar(SystemDir),nSize);
//SystemDir = путь
При этом отпадает необходимость контроля за памятью
← →
amamed_3071 (2002-01-29 10:28) [4]S:String;
//Set S max value
s:="";
//For i:=1 to 255 do
s:=s+" ";
S:=" "
GetSystemDirectory(@S[1],255);
s:=trim(s)
← →
Petrovich (2002-01-29 13:21) [5]> amamed_3071
Вместо страшного цикла с заполнением строки пробелами лучше использоватьSetLength(S, MAX_PATH)
Страницы: 1 вся ветка
Форум: "Система";
Текущий архив: 2002.04.25;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.006 c