| Автор
| Сообщение |
|
|
|
Цитата |
|
Такая у меня проблема возникла.
Есть функция:
| Код: |
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.
|
После нажатия "ОК" курсор ошибки кидается на
Без этой процедуры все происходит нормально, так что дело именно в ней.
Еще такая деталь: программа кидается в трей и сидит там.
Заранее спасибо,
Gold_Dreamer |
|
| В начало |
|
 |
|
|
 |
 Ktf
Администратор

Возраст: 32
Знак зодиака: 
Зарегистрирован: 15.05.2005
Сообщения: 1502
Откуда: localhost
|
|
|
Цитата |
|
| Цитата: | 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
Великий гонщик


Возраст: 26
Знак зодиака: 
Зарегистрирован: 12.09.2005
Сообщения: 714
Откуда: Великий город Рига... =Ъ
|
|
|
Цитата |
|
Гхх...
Function GetWindir: String;
Var
acBuff: array[0..MAX_PATH] of Char;
Begin
GetWindowsDirectory(acBuff, SizeOf(acBuff));
Result := StrPas(acBuff);
End; _________________
 |
|
| В начало |
|
 |
|
|
|
Цитата |
|
используй ansistring тип.
либо так
{$h+}
Tmp : string;
{$h-} |
|
| В начало |
|
 |
|