Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

помогите разобраться ;с поинтерами [D6, WinXP]


Philip ©   (2002-01-27 00:35:00) 

Мастера, подскажите пожалуйста, как правильно пользоваться функцией GetSystemDirectory, а то я совсем запутался с поинтерами и PChar"ами: как правильно
GetSystemDirectory(@Buf, MAX_PATH);
или
GetSystemDirectory(Buf, MAX_PATH);
если Buf : PChar;

и как потом значение в Buf корректно изменить на Buf + S, если S : string.

заранее благодарю и извините за ламерский вопрос.
p.s. все мои попытки приводили к ошибке EAccessViolation.


Petrovich   (2002-01-29 13:21:00) [1]

> amamed_3071

Вместо страшного цикла с заполнением строки пробелами лучше использовать SetLength(S, MAX_PATH)


amamed_3071   (2002-01-29 10:28:00) [2]

S:String;
//Set S max value
s:="";
//For i:=1 to 255 do
s:=s+" ";
S:=" "

GetSystemDirectory(@S[1],255);
s:=trim(s)


Romkin   (2002-01-28 16:04:00) [3]

По причине того, что функция возвращает длину пути в символах, рекомендую пользоваться string, без заморочек с памятью
var
SystemDir: string;
nSize: integer;

nSize := GetSystemDirectory(nil,0);
//nSize = 0 - Error
SetLength(SystemDir,nSize);
GetSystemDirectory(PChar(SystemDir),nSize);
//SystemDir = путь

При этом отпадает необходимость контроля за памятью


Philip   (2002-01-27 00:58:00) [4]

Спасибо.


Tosov   (2002-01-27 00:55:00) [5]

Скорее всего Buf, но надо выделить операвивку для этого Buf
GetMem(buf,MAX_PATH);
..
потом FreeMem(Buf);


Наверх

Титульная страница Поиск, карта сайта Написать письмо