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

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

Короткий путь [D6]


ArhAngel2 ©   (2002-08-21 19:25:00) 

Подскажите что я делаю не так
var
temp: PChar;
i: integer;
begin
...
i:=GetShortPathName(PChar("C:\Program Files"),temp,sizeof(@temp));
..
end;
Получаеться
i=12
temp=""


ArhAngel2   (2002-08-21 20:02:00) [1]

Все заработало. Спасибо большое!!!!


Anatoly Podgoretsky   (2002-08-21 19:54:00) [2]

Но вообще то подход почти правильный, надо вместо sizeof(@temp)); передавать 0, а затем

GetMem(temp,I+1);
i:=GetShortPathName("C:\Program Files",temp,I));

Дополнительно нужно проверять на ошибки и обрамить код выделения ресурсов в try блок, что бы не потерять память, в итоге это будет выглядеть так:


begin
...
I := GetShortPathName("C:\Program Files", Temp, 0);
if I <> 0 then
try
GetMem(Temp, I+1);
I := GetShortPathName("C:\Program Files",temp,I));
finally
FreeMem(Temp,I+1);
end
else
Ошибка
..
end;


Anatoly Podgoretsky   (2002-08-21 19:45:00) [3]

Тебе надо к Пушкину обратиться, что бы выделил память под temp и к Лермонтову, что расказал, что sizeof вернет 4


ZrenBy   (2002-08-21 19:31:00) [4]

GetMem(temp,254) делал ?


Наверх

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