Chertenok.ru - все о программировании
Вход  |  Регистрация  |  Поиск 
Праздник
Через 3 дня :

День славянской письменности и культуры


GetWindowsDirectory


Новая тема  Ответить  Печать Предыдущая тема  Следующая тема
Автор Сообщение
Gold_Dreamer
Гость







СообщениеПн, 28-Ноя-2005 10:08    Заголовок сообщения: GetWindowsDirectory
Цитата

Такая у меня проблема возникла.
Есть функция:
Код:

procedure isAnimateExists;
var
  Tmp : PChar;
begin
  GetWindowsDirectory(Tmp, MAX_PATH);
  Path := StrPas(Tmp);
  if DirectoryExists(Path + '\srchasst\chars') then begin
    ...
  end;
end;

Где я ее только не пытался использовать, и в OnCreate и в OnShow, все-равно выскакивает такая ошибка:
Цитата:

Project Project1.exe raised exception class EAccessViolation with message 'Access violation t address 0040401C in module 'Project1.exe'. Read of address 575C3A1F'. Process stopped. Use Step or Run to continue.

После нажатия "ОК" курсор ошибки кидается на
Код:
Application.Run;

Без этой процедуры все происходит нормально, так что дело именно в ней.
Еще такая деталь: программа кидается в трей и сидит там.

Заранее спасибо,
Gold_Dreamer
В начало
Пол:Муж Ktf
Администратор


Возраст: 32
Знак зодиака: Рак
Зарегистрирован: 15.05.2005
Сообщения: 1502
Откуда: localhost
СообщениеПн, 28-Ноя-2005 10:59 
Цитата

Цитата:
procedure isAnimateExists;
var
Tmp : PChar;
begin
GetWindowsDirectory(Tmp, MAX_PATH);

а ты выдели под переменную Tmp память.
Tmp := GetMemory(MAX_PATH);
только потом не забудь освободить ее.
FreeMemory(Tmp);
а вообще я бы на твоем месте объявил эту переменную так
Код:
var
  Tmp : array[0..MAX_PATH] of Char;

тогда меньше морок с выделением/освобождением памяти.

_________________
Пойду посплю перед сном.
В начало
Посмотреть профиль Отправить личное сообщение
Пол:Муж TuXAPuK
Великий гонщик

Предупреждений : 1
Возраст: 26
Знак зодиака: Рыбы
Зарегистрирован: 12.09.2005
Сообщения: 714
Откуда: Великий город Рига... =Ъ
СообщениеСб, 03-Июн-2006 3:35 
Цитата

Гхх...

Function GetWindir: String;
Var
acBuff: array[0..MAX_PATH] of Char;
Begin
GetWindowsDirectory(acBuff, SizeOf(acBuff));
Result := StrPas(acBuff);
End;

_________________
В начало
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
cybermerlin
Гость







СообщениеВт, 06-Июн-2006 9:21 
Цитата

используй ansistring тип.
либо так
{$h+}
Tmp : string;
{$h-}
В начало
Показать сообщения:   
Страница 1 из 1
Перейти:  
Новая тема  Ответить  Печать

Вы можете начинать темы
Вы можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете присоединять файлы в этом форуме
Вы можете скачивать файлы в этом форуме
хостинг от .masterhost 
Rambler's Top100