Гость
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Ошибка доступа к форме / 20 сообщений из 20, страница 1 из 1
06.09.2021, 14:28
    #40095484
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка доступа к форме
Разворачиваю чужой проект. В проекте используется много сторонних компонент. Их потихоньку ставлю. Но вопрос в том, что первым сообщением об ошибке при открытии формы в IDE появляется
File access deniedЧто это может быть? Атрибута RO на dfm файле нет. А потом после нескольких сообщений Class not found появляется еще и такоеError reading Cellular1.Active: File access denied.dfm лежит в бинарном формате. При конвертации в текстовый формат ошибки остаются.

С уважением, Vasilisk
...
Рейтинг: 0 / 0
06.09.2021, 14:39
    #40095490
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка доступа к форме
антивирус?
...
Рейтинг: 0 / 0
06.09.2021, 15:37
    #40095510
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка доступа к форме
Мимопроходящий
антивирус?
Кроме стандартного Defender'а нет. Ну и компоненты из формы среда же читает?
...
Рейтинг: 0 / 0
06.09.2021, 15:38
    #40095511
Gerasimenko
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка доступа к форме
_Vasilisk_,

а если Delphi запустить от имени администратора?
...
Рейтинг: 0 / 0
06.09.2021, 15:41
    #40095514
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка доступа к форме
_Vasilisk_Что это может быть?

Я такое сообщение видел если путь к файлу содержит "My Documents", а это
Junction, у которого какая-то хрень с правами.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
06.09.2021, 15:42
    #40095515
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка доступа к форме
Gerasimenko
а если Delphi запустить от имени администратора?
Тогда этих ошибок нет. Интересно. Но файл доступен для редактирования из под обычного пользователя
...
Рейтинг: 0 / 0
06.09.2021, 15:43
    #40095516
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка доступа к форме
Dimitry Sibiryakov
а это Junction,
Нет. Весь проект лежит в папке на диске D:
...
Рейтинг: 0 / 0
06.09.2021, 15:50
    #40095518
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка доступа к форме
Process Monitor нашел.

В одной из компонент есть процедура
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
procedure WrLog(str: String);
Var
  f: TextFile;
begin
  AssignFile(f, 'r.log');
  if str = 'restart' then
    Rewrite(f)
  else
    try
      Append(f);
    except
      Rewrite(f);
    end;
  WriteLn(f, FormatDateTime('hh:nn:ss.zzz', Now) + ': ' + str);
  CloseFile(f);
end;

При открытой IDE текущий каталог Studio\20.0\Bin. Туда, соответственно писать нельзя.

Тогда такой вопрос: а можно ли в обычной процедуре (не методе компонента) определить, что у нас DesignTime?
...
Рейтинг: 0 / 0
06.09.2021, 15:56
    #40095520
wadman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка доступа к форме
_Vasilisk_
В одной из компонент есть процедура

_Vasilisk_
а можно ли в обычной процедуре (не методе компонента) определить, что у нас DesignTime?

Попробуй это анализировать в компоненте.
...
Рейтинг: 0 / 0
06.09.2021, 15:56
    #40095521
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка доступа к форме
_Vasilisk_
Тогда такой вопрос: а можно ли в обычной процедуре (не методе компонента) определить, что у нас DesignTime?

Код: pascal
1.
2.
3.
4.
function RunningFromIDE: Boolean;
begin
  Result := (DebugHook > 0);
end;
...
Рейтинг: 0 / 0
06.09.2021, 16:16
    #40095529
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка доступа к форме
Мимопроходящий
Код: pascal
1.
DebugHook 

Это не то. Это проверка на запуск из под отладчика, а мне нужна проверка на дизайн-тайм.
Вот так будет работать
Код: pascal
1.
if ExtractFileName(GetModuleName(HInstance)) = 'bds.exe' then

но это криво и монструозно
...
Рейтинг: 0 / 0
06.09.2021, 17:30
    #40095559
DarkMaster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка доступа к форме
_Vasilisk_
Process Monitor нашел.

В одной из компонент есть процедура
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
procedure WrLog(str: String);
Var
  f: TextFile;
begin
  AssignFile(f, 'r.log');
  if str = 'restart' then
    Rewrite(f)
  else
    try
      Append(f);
    except
      Rewrite(f);
    end;
  WriteLn(f, FormatDateTime('hh:nn:ss.zzz', Now) + ': ' + str);
  CloseFile(f);
end;

При открытой IDE текущий каталог Studio\20.0\Bin. Туда, соответственно писать нельзя.

Тогда такой вопрос: а можно ли в обычной процедуре (не методе компонента) определить, что у нас DesignTime?


Я бы вместо плясок с бубном насчет DesignTime отдал бы правильное (полное) имя файла для записи в эту процедуру. Чтобы писалось или рядом с exe или еще куда-то...
...
Рейтинг: 0 / 0
07.09.2021, 10:27
    #40095654
wadman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка доступа к форме
DarkMaster
Чтобы писалось или рядом с exe

В дезигне "рядом с exe" и есть в папке, где ide. Тут если только toolsapi подключать и вычислять путь/имя проекта.
...
Рейтинг: 0 / 0
07.09.2021, 11:48
    #40095680
Гаджимурадов Рустам
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка доступа к форме
wadman
DarkMaster
Чтобы писалось или рядом с exe

В дезигне "рядом с exe" и есть в папке, где ide.
Это ведь можно поменять (задать в настройках).
...
Рейтинг: 0 / 0
07.09.2021, 13:49
    #40095731
DarkMaster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка доступа к форме
wadman
DarkMaster
Чтобы писалось или рядом с exe

В дезигне "рядом с exe" и есть в папке, где ide. Тут если только toolsapi подключать и вычислять путь/имя проекта.


ExtractFilePath(ParamStr(0))+'logfile.log' - разве тебе папку IDE даст, а не папку со скомпиленным проектом? Ну и да - можно вообще прыгать не от exe, а читать настройки, где хранить путь к логам.
...
Рейтинг: 0 / 0
07.09.2021, 14:01
    #40095738
wadman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка доступа к форме
DarkMaster
ExtractFilePath(ParamStr(0))+'logfile.log'

В дизайнтайме? Нет там скомпиленного проекта. Там bpl, которую грузит ide.
...
Рейтинг: 0 / 0
07.09.2021, 14:15
    #40095743
DarkMaster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка доступа к форме
wadman,

Все, вопрос снят, действительно - там бпл.
...
Рейтинг: 0 / 0
07.09.2021, 15:07
    #40095758
Fr0sT-Brutal
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка доступа к форме
_Vasilisk_
Process Monitor нашел.

В одной из компонент есть процедура
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
procedure WrLog(str: String);
Var
  f: TextFile;
begin
  AssignFile(f, 'r.log');
  if str = 'restart' then
    Rewrite(f)
  else
    try
      Append(f);
    except
      Rewrite(f);
    end;
  WriteLn(f, FormatDateTime('hh:nn:ss.zzz', Now) + ': ' + str);
  CloseFile(f);
end;

При открытой IDE текущий каталог Studio\20.0\Bin. Туда, соответственно писать нельзя.

Тогда такой вопрос: а можно ли в обычной процедуре (не методе компонента) определить, что у нас DesignTime?

За логи по относительным путям надо бить долго и ногами...
Самое простое - прикрой манипуляции с файлом try-except. В любом случае логгер не должен выкидывать исключение, так что это будет логично.
Другой нормальный путь - централизованно отключать лог в дизайн-тайм. Например, добавить параметр
procedure WrLog(str: String; DisableLog: Boolean = False);
и вызывать WrLog('blabla', csDesigning in ComponentState)
(это наименьшие затраты)

Либо использовать глобальную переменную в рамках модуля
uUtils.DoLog := not (csDesigning in ComponentState)
...
Рейтинг: 0 / 0
07.09.2021, 15:57
    #40095774
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка доступа к форме
Fr0sT-Brutal
За логи по относительным путям надо бить долго и ногами...
Я уже писал - проект не мой и огромен. Там косяков вагон и маленькая тележка
Fr0sT-Brutal
Например, добавить параметр
Fr0sT-Brutal
Либо использовать глобальную переменную в рамках модуля
Спасибо. Нужно будет подумать, что проще. Сейчас просто первой строкой поставил Exit;
...
Рейтинг: 0 / 0
07.09.2021, 19:21
    #40095823
Fr0sT-Brutal
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка доступа к форме
_Vasilisk_
Я уже писал - проект не мой и огромен. Там косяков вагон и маленькая тележка

Я и не говорил, что тебя :) легаси, понимаю. Придется прикручивать костыли.
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Ошибка доступа к форме / 20 сообщений из 20, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]