Плагин для CommFort (Delphi)

Andrey M
Администратор
Администратор
Аватара
Andrey M
Администратор
Администратор
Репутация: 0
Сообщения: 2345
С нами: 6 лет 7 месяцев
Откуда: Воронеж
ICQ Сайт Skype

Re: Плагин для CommFort (Delphi)

Сообщение #261 Andrey » 15.10.2011, 21:40

Кажется да, но сейчас скорее всего дело не в ней. Хотя всё может быть. Я пока сравниваю версии на 2 языках и если найду существенные различия то попробую подправить

Maximus M
Автор темы, Супермодератор
Супермодератор
Аватара
Maximus M
Автор темы, Супермодератор
Супермодератор
Репутация: 0
Сообщения: 1507
С нами: 6 лет 7 месяцев
Откуда: Воронеж
ICQ Сайт

Re: Плагин для CommFort (Delphi)

Сообщение #262 Maximus » 15.10.2011, 21:42

У нас ошибка происходит при обработке сообщений в PluginProcess, думаю вряд ли та функция влияет на эту процедуру.

Andrey M
Администратор
Администратор
Аватара
Andrey M
Администратор
Администратор
Репутация: 0
Сообщения: 2345
С нами: 6 лет 7 месяцев
Откуда: Воронеж
ICQ Сайт Skype

Re: Плагин для CommFort (Delphi)

Сообщение #263 Andrey » 15.10.2011, 21:47

Процедура PluginProcess у нас большая и там много всего есть. Плохо что конкретный фрагмент вызывающий ошибку определить почти невозможно.

Maximus M
Автор темы, Супермодератор
Супермодератор
Аватара
Maximus M
Автор темы, Супермодератор
Супермодератор
Репутация: 0
Сообщения: 1507
С нами: 6 лет 7 месяцев
Откуда: Воронеж
ICQ Сайт

Re: Плагин для CommFort (Delphi)

Сообщение #264 Maximus » 15.10.2011, 21:49

Вся надежда на администрацию, которая может быть всё-таки уважит и ответит что это за ошибка.

Andrey M
Администратор
Администратор
Аватара
Andrey M
Администратор
Администратор
Репутация: 0
Сообщения: 2345
С нами: 6 лет 7 месяцев
Откуда: Воронеж
ICQ Сайт Skype

Re: Плагин для CommFort (Delphi)

Сообщение #265 Andrey » 15.10.2011, 21:52

Если бы у меня воспроизводилась ошибка и простое решение не было бы найдено, то переделал бы на c++ взяв основные функции из примера. Но останавливает размер плагина и то что эту версию придётся выкладывать чтобы её проверили.

Andrey M
Администратор
Администратор
Аватара
Andrey M
Администратор
Администратор
Репутация: 0
Сообщения: 2345
С нами: 6 лет 7 месяцев
Откуда: Воронеж
ICQ Сайт Skype

Re: Плагин для CommFort (Delphi)

Сообщение #266 Andrey » 15.10.2011, 21:56

Завтра ещё подумаю над тем что можно сделать

Maximus M
Автор темы, Супермодератор
Супермодератор
Аватара
Maximus M
Автор темы, Супермодератор
Супермодератор
Репутация: 0
Сообщения: 1507
С нами: 6 лет 7 месяцев
Откуда: Воронеж
ICQ Сайт

Re: Плагин для CommFort (Delphi)

Сообщение #267 Maximus » 16.10.2011, 12:14

Похоже ошибка E90 не во всех плагинах, а только в смс и не в том который я кидал, а в другом, если отсутствует соединение с интернет плагин вылетает. Но плагин города и тот смс который я кидал тоже вроде бы вылетают. Как можно проверить есть соединение с интернет или нет?

Andrey M
Администратор
Администратор
Аватара
Andrey M
Администратор
Администратор
Репутация: 0
Сообщения: 2345
С нами: 6 лет 7 месяцев
Откуда: Воронеж
ICQ Сайт Skype

Re: Плагин для CommFort (Delphi)

Сообщение #268 Andrey » 16.10.2011, 12:44

Можно попытаться подключиться к какому-либо сайту. Если не успешно, то подключения нет. У меня где-то был такой код. Только вот я не уверен что при попытке подключения плагин не вылетит. Но в любом случае надо пробовать. А эксперимент с отсутствием доступа в интернет я проведу

Andrey M
Администратор
Администратор
Аватара
Andrey M
Администратор
Администратор
Репутация: 0
Сообщения: 2345
С нами: 6 лет 7 месяцев
Откуда: Воронеж
ICQ Сайт Skype

Re: Плагин для CommFort (Delphi)

Сообщение #269 Andrey » 16.10.2011, 13:06

Способ №1 - прстой
Нужно разместить на форме или создать компонент IdHTTP, объявить логическую переменную connected и для проверки использовать код
Try
IdHTTP1.Get( 'http://mail.ru' );
connected := True;
Except
connected := False;
End;

Способ №2 - сложнее
Выложу если с первым способом будут какие-либо проблемы
Последний раз редактировалось Andrey 16.10.2011, 13:06, всего редактировалось 4 раза.
Причина: Исправлена подсветка синтаксиса

Maximus M
Автор темы, Супермодератор
Супермодератор
Аватара
Maximus M
Автор темы, Супермодератор
Супермодератор
Репутация: 0
Сообщения: 1507
С нами: 6 лет 7 месяцев
Откуда: Воронеж
ICQ Сайт

Re: Плагин для CommFort (Delphi)

Сообщение #270 Maximus » 16.10.2011, 13:16

IdHTTP1 тоже нужно объявить?

Andrey M
Администратор
Администратор
Аватара
Andrey M
Администратор
Администратор
Репутация: 0
Сообщения: 2345
С нами: 6 лет 7 месяцев
Откуда: Воронеж
ICQ Сайт Skype

Re: Плагин для CommFort (Delphi)

Сообщение #271 Andrey » 16.10.2011, 13:19

Будет проще поставить его на форму и использовать. Он на какой-то из вкладок Indy

Maximus M
Автор темы, Супермодератор
Супермодератор
Аватара
Maximus M
Автор темы, Супермодератор
Супермодератор
Репутация: 0
Сообщения: 1507
С нами: 6 лет 7 месяцев
Откуда: Воронеж
ICQ Сайт

Re: Плагин для CommFort (Delphi)

Сообщение #272 Maximus » 16.10.2011, 13:24

Не вышло, плагин опять вылетел.

Andrey M
Администратор
Администратор
Аватара
Andrey M
Администратор
Администратор
Репутация: 0
Сообщения: 2345
С нами: 6 лет 7 месяцев
Откуда: Воронеж
ICQ Сайт Skype

Re: Плагин для CommFort (Delphi)

Сообщение #273 Andrey » 16.10.2011, 13:26

Вылетел по той же проблеме или из-за вставки этого кода?

Maximus M
Автор темы, Супермодератор
Супермодератор
Аватара
Maximus M
Автор темы, Супермодератор
Супермодератор
Репутация: 0
Сообщения: 1507
С нами: 6 лет 7 месяцев
Откуда: Воронеж
ICQ Сайт

Re: Плагин для CommFort (Delphi)

Сообщение #274 Maximus » 16.10.2011, 13:30

Таже ошибка.

Andrey M
Администратор
Администратор
Аватара
Andrey M
Администратор
Администратор
Репутация: 0
Сообщения: 2345
С нами: 6 лет 7 месяцев
Откуда: Воронеж
ICQ Сайт Skype

Re: Плагин для CommFort (Delphi)

Сообщение #275 Andrey » 16.10.2011, 13:37

Тогда второй способ, но сразу скажу что не знаю как плагин будет работать с WinAPI.
Для начала подключить модуль для работы с WInAPI
uses ShellAPI

Вот функция которая делает проверку

function IsConnectedToInternet(lpdwFlags: LPDWORD): Boolean;
const
WininetDLL = 'wininet.dll';
var
hWininetDLL: THandle;
dwReserved: DWORD;
fn_InternetGetConnectedState: function(lpdwFlags: LPDWORD; dwReserved: DWORD): BOOL; stdcall;
begin
Result := False;
dwReserved := 0;
hWininetDLL := LoadLibrary(WininetDLL);
if hWininetDLL > 0 then
begin
@fn_InternetGetConnectedState := GetProcAddress(hWininetDLL,'InternetGetConnectedState');
if Assigned(fn_InternetGetConnectedSta te) then
begin
Result := fn_InternetGetConnectedState(lpdwFl ags, dwReserved);
end;
FreeLibrary(hWininetDLL);
end else
raise Exception.Create('Unable to locate function InternetGetConnectedState in library ' + WininetDLL);
end;


Пример использования этой функции
procedure TForm1.Button1Click(Sender: TObject);
const
INTERNET_CONNECTION_MODEM = 1;
INTERNET_CONNECTION_LAN = 2;
INTERNET_CONNECTION_PROXY = 4;
INTERNET_CONNECTION_MODEM_BUSY = 8;
var
dwConnectionTypes: DWORD;
begin
dwConnectionTypes :=
INTERNET_CONNECTION_MODEM +
INTERNET_CONNECTION_LAN +
INTERNET_CONNECTION_PROXY;
if IsConnectedToInternet(@dwConnection Types) then
ShowMessage('Connected.')
else
ShowMessage('Not Connected.')
end;


Всё что внутри if поменять на то что нужно. Если и это не пойдёт, то есть ещё способ
Последний раз редактировалось Andrey 16.10.2011, 13:37, всего редактировалось 4 раза.
Причина: Исправлена подсветка синтаксиса

Maximus M
Автор темы, Супермодератор
Супермодератор
Аватара
Maximus M
Автор темы, Супермодератор
Супермодератор
Репутация: 0
Сообщения: 1507
С нами: 6 лет 7 месяцев
Откуда: Воронеж
ICQ Сайт

Re: Плагин для CommFort (Delphi)

Сообщение #276 Maximus » 16.10.2011, 13:56

Код: Выделить всё

if Assigned(fn_InternetGetConnectedSta te) then
begin
Result := fn_InternetGetConnectedState(lpdwFl ags, dwReserved);
end;

Я ток понял что дожно быть fn_InternetGetConnectedState и Result := fn_InternetGetConnectedState(lpdwFlags, dwReserved);?

Код: Выделить всё

if IsConnectedToInternet(@dwConnection Types) then

И здесь?

Код: Выделить всё

if IsConnectedToInternet(@dwConnectionTypes) then

Andrey M
Администратор
Администратор
Аватара
Andrey M
Администратор
Администратор
Репутация: 0
Сообщения: 2345
С нами: 6 лет 7 месяцев
Откуда: Воронеж
ICQ Сайт Skype

Re: Плагин для CommFort (Delphi)

Сообщение #277 Andrey » 16.10.2011, 14:01

Да, лишние пробелы встречаются, их надо убрать(не заметил сразу)

Maximus M
Автор темы, Супермодератор
Супермодератор
Аватара
Maximus M
Автор темы, Супермодератор
Супермодератор
Репутация: 0
Сообщения: 1507
С нами: 6 лет 7 месяцев
Откуда: Воронеж
ICQ Сайт

Re: Плагин для CommFort (Delphi)

Сообщение #278 Maximus » 16.10.2011, 14:02

Всё равно, сервер перестаёт отвечать, потом плагин отрубается.

Andrey M
Администратор
Администратор
Аватара
Andrey M
Администратор
Администратор
Репутация: 0
Сообщения: 2345
С нами: 6 лет 7 месяцев
Откуда: Воронеж
ICQ Сайт Skype

Re: Плагин для CommFort (Delphi)

Сообщение #279 Andrey » 16.10.2011, 14:11

Если источник проблемы известен (отсутствие соединения с интернет) и ошибка стабильно воспроизводится то я сейчас попробую сам несколько способов. Если хоть один из них будет удачным опишу его. Но это минут через 30 (срочно несколько документов напечатать надо).

Andrey M
Администратор
Администратор
Аватара
Andrey M
Администратор
Администратор
Репутация: 0
Сообщения: 2345
С нами: 6 лет 7 месяцев
Откуда: Воронеж
ICQ Сайт Skype

Re: Плагин для CommFort (Delphi)

Сообщение #280 Andrey » 16.10.2011, 14:25

Не воспроизвелось на виртуалке с WinXP без доступа к интернет.


Вернуться в «Delphi/Pascal»

Кто сейчас на форуме (по активности за 5 минут)

Сейчас этот раздел просматривают: 8 гостей