On-line: SergKis, гостей 1. Всего: 2 [подробнее..]
АвторСообщение
постоянный участник




Пост N: 6265
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 20.04.19 13:18. Заголовок: Предложения по ErrorLog.htm


Andrey пишет:

 цитата:

Есть большой лог ошибок ErrorLog.htm
Просматривать вручную его ОЧЕНЬ ДОЛГО...
Как бы сделать с него выборку:
Date: 10.04.19 Time: 21:25:30
Error MGERROR/0 Control: PrgBar_1 Of Form_Index Not defined. Program terminated.
Called from - выборку ошибок 5 или 7 уровней.

Может сделать бы стандартный компонент в МиниГуи для этого ?
В виде дерева будет наверное очень удобно !



Можно данную проблему решить улучшением HTML-верстки для ErrorSys.prg
Ошибки будут сразу видны, а подробности свернутыми будут.
Но каждый узел можно развернуть и посмотреть детально.
Тогда на современных браузерах это будет выглядеть так - Firefox ErrorLog.htm


Для просмотра нового ErrorLog2.htm - https://cloud.mail.ru/public/5aHd/2aTdiSeoy
Правда в микрософтном IE выглядеть будет по старому, сразу развернутый, длинный предлинный...
Как вам такая идея ?
Что править в ErrorSys.prg я примерно знаю, есть у кого проконсультироваться.

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 34 , стр: 1 2 All [только новые]


постоянный участник




Пост N: 2417
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 20.04.19 14:01. Заголовок: Andrey пишет Как вам..


Andrey пишет
 цитата:
Как вам такая идея ?


По мне, лучше текстовый файл (передалываем для себя). Смотрим Ntepad3.
Можно тут применить (реализовав поиск) hbedit с расцветкой для LANG_TXT
Про выборки из txt файла - дело техники
Т.е. иметь установку, какой ErrorLog.htm или ErrorLog.txt

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 1470
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 20.04.19 16:32. Заголовок: SergKis пишет: По м..


SergKis пишет:

 цитата:
По мне, лучше текстовый файл (передалываем для себя


Так и есть. Также посещала мысль сделать ErrorView отдельной утилитой, а сам вывод в dbf.
Нл пока переделал в текст под себя

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 2418
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 20.04.19 17:24. Заголовок: Haz пишет а сам выво..


Haz пишет
 цитата:
а сам вывод в dbf.


Зачем ? Разве мало вариантов виеверов текстовых файлов.
С clipper какой то перенесен в wvt и работает местами.

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 1471
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 20.04.19 17:59. Заголовок: SergKis пишет: Заче..


SergKis пишет:

 цитата:
Зачем ?


По dbf проще и привычнее ставить фильтр по разделам лога, только по этому. Да и растащить по окнам не составит труда. В одном ошибка, в другом все установки, в третьем инфо по текущим запмсям
Сейчас просто глазами в тексте ищу, и все нахожу.
Идея возникла только после того как потребовалось понять не просто ошибку, а у какого пользователя она возникает, чтоб допросить с пристрастием как он это делает.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 2420
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 20.04.19 18:26. Заголовок: Haz пишет По dbf про..


Haz пишет
 цитата:
По dbf проще и привычнее ставить фильтр по разделам лога


Это понятно, но лог содержит, как правило, больше чем надо в дбф.
Т.е. процедура поедания лога[ов] в дбф есть и работает по надобности.

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 1472
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 20.04.19 18:35. Заголовок: SergKis пишет: Это ..


SergKis пишет:

 цитата:
Это понятно, но лог содержит, как правило, больше чем надо в дбф


Это и останавливает. И в тоже время если лог детально структурироввть все реализовать можно.
Поэтому пока текстовик под себя.

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 1473
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 20.04.19 19:08. Заголовок: SergKis пишет: как ..


SergKis пишет:

 цитата:
как ты различаешь, когда началась кор-ка строки и когда закончилась положительно,


По выходу из редакции. По результатам.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 6266
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 20.04.19 19:10. Заголовок: Вот ошибка у меня в ..


Вот ошибка у меня в проге:
Application: D:\Sklad4.Client\Sklad4win.exe 
Date: 03.04.2019 Time: 14:42:37
Time from start: 0 days 0 hours 0 mins 1 secs
Error MGERROR/0 Window: unrecognized property 'MESSAGE'. Program terminated.


Called from MSGMINIGUIERROR(99) in module: h_error.prg
Called from SETPROPERTY(3785) in module: h_controlmisc.prg
Called from (b)WAIT_WINDOW_MY(266) in module: Source\WaitWin.prg
Called from _PROCESSINITPROCEDURE(1672) in module: h_windows.prg
Called from _ACTIVATEWINDOW(1487) in module: h_windows.prg
Called from WAIT_WINDOW_MY(315) in module: Source\WaitWin.prg
Called from WAITWINDOWERROR(157) in module: Source\WaitWin.prg
Called from COPYSERVERCLIENT(209) in module: Source\Copy2file.prg
Called from MYCOPYFILE(412) in module: Source\main_check.prg
Called from (b)HB_MACROBLOCK(0)

Она у моих пользователей периодически возникает, а у меня нет.
STATIC PROCEDURE OnRelease() 
ThisWindow.Release
DO MESSAGE LOOP
RETURN

Почему ?

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 2423
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 20.04.19 19:33. Заголовок: Andrey пишет Почему ..


Andrey пишет
 цитата:
Почему ?


Если глянешь текст line 3785 это
      OTHERWISE 

MsgMiniGuiError( "Window: unrecognized property '" + Arg2 + "'." )

END CASE

на заданный Arg2 (нет такого в списке case), смотри что написано у тебя в Setproperty (...), если считаешь, что правильно, то поставь _LogFile(...) перед стокой MsgMiniGuiError(...) или перед Setproperty (...) ставь на вывод параметров и см. что приходит в параметрах у клиентов где валится.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 2424
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 20.04.19 19:36. Заголовок: PS хотя явно видно п..


PS
хотя явно видно приходит Arg2 = MESSAGE, т.е. это и пришло, где то попортился Arg2, если у тебя там другое

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 6952
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 13.05.21 22:02. Заголовок: Вопрос по ErrorLog.h..


Вопрос по ErrorLog.htm
Не видно почему произошла допустим вот такая ошибка:
Time from start: 0 days 0 hours 28 mins 54 secs 
Error BASE/1003 Переменная не существует: KTARIF
--------------------------------- Stack Trace ---------------------------------
Called from ASK_TARIF(29) in module: Source\form_dogovor.prg
Called from (b)HB_MACROBLOCK(0)
Called from DIM_WRT_DBTYPEJ(3636) in module: Source\Tbrw_fCard.prg
.....
--------------------- Internal Error Handling Information ---------------------
Subsystem Call ....: BASE
System Code .......: 1003
Default Status ....: .F.
Description .......: Переменная не существует
Operation .........: KTARIF
Involved File .....:
Dos Error Code ....: 0

По коду - запись в базу, ТАКОЕ поле есть в базе.
Подозреваю что юзер переключал на другие окна или оставил на 1-2 минуты окно ввода, а у меня по таймеру переключение и отправка записей в инет и может АЛИАС базы сменился на это время.

И нет в ErrorLog.htm при ошибке - какая текущая база была при ошибке !
Куда и какой код добавить чтобы при ошибке было видно какая текущая база ?

Нужно наверное скрин экрана записывать в отдельную папку, когда происходит ошибка.
А как это сделать, чтобы всем было удобно ?
Для терминалки в хХарборе пишется экран в лог-файл. Это очень удобно.

Анализ ошибок делаешь без юзера и где был вылет ОЧЕНЬ сложно понять.

Может типа команды сделать SET ErrorLogPath TO GetStartUpFolder() + "\ErrorScreen\"
Файлы можно обозначить так ErrorScreen001.png, ErrorScreen002.png

Спасибо: 0 
ПрофильЦитата Ответить
moderator




Пост N: 1859
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 14.05.21 09:59. Заголовок: Andrey пишет: нет ..


Andrey пишет:

 цитата:
нет в ErrorLog.htm при ошибке - какая текущая база была при ошибке


Такая информация есть в разделе "System Information"

 цитата:
Current Work Area..: 2


Номера всех открытых рабочих областей и их алиасов можно взять из раздела "Detailed Work Area Items" и таким образом определить, имя текущей базы

Andrey пишет:

 цитата:
Может типа команды сделать SET ErrorLogPath TO


Уже есть подобная команда, например:

 цитата:
SET ERRORLOG TO "Z:\File.htm"


Если требуются отдельные файлы для каждой произошедшей ошибки, то надо писать свой обработчик, готовые примеры есть в папке samples\Basic\Hmg_Error_2 и др.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 6953
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 14.05.21 10:10. Заголовок: А как сделать запис..


А как сделать запись экрана, когда происходит ошибка ?

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 1612
Зарегистрирован: 27.01.07
ссылка на сообщение  Отправлено: 14.05.21 11:45. Заголовок: Andrey пишет: А как..


Andrey пишет:

 цитата:
А как сделать запись экрана, когда происходит ошибка ?


Видимо

gfilatov2002 пишет:

 цитата:
надо писать свой обработчик



Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 7356
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 14.05.21 11:55. Заголовок: Andrey пишет: А как..


Andrey пишет:

 цитата:
А как сделать запись экрана, когда происходит ошибка ?


А ты уже спрашивал ранее и я тебе указал на папку с примером Minigui.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 6956
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 23.05.21 13:08. Заголовок: Dima пишет: А ты уж..


Dima пишет:

 цитата:
А ты уже спрашивал ранее и я тебе указал на папку с примером Minigui.
\MiniGUI\SAMPLES\Applications\ScreenshotMaker\


Посмотрел пример.
Там используется JPG.dll
Не то.
Как без дополнительных dll сделать запись экрана в картинку png или bmp ?

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 7371
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 23.05.21 14:20. Заголовок: Andrey пишет: Как б..


Andrey пишет:

 цитата:
Как без дополнительных dll сделать запись экрана в картинку png или bmp


https://stackoverflow.com/questions/60173096/hyperv-wmi-apply-snapshot-in-c-sharp

PS
я не знал например но погуглил , чего и тебе желаю

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 6957
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 23.05.21 15:05. Заголовок: Погуглил для FiveWin..


Погуглил для FiveWin
http://fivewin.com.br/index.php?/topic/13291-save-screen/

у самого класса WINDOW есть отличный метод для этого!
Вы можете называть его любым наследуемым от него объектом, например TDialog!
oDlg: saveToBmp ("C: \ path \ image_name.bmp")
Он делает идеальный скриншот диалога!

В МиниГуи тоже есть метод:
SaveAs Method      
Save Control or Window as BitMap file.
SYNTAX
METHOD
<WindowName>.SaveAs( <BitMap> )
<ParentWindowName>.<ControlName>.SaveAs( <BitMap> )

А как в ErrorSys.prg поймать имя окна где произошла ошибка ?
Нужно это в FUNCTION DefError()

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 7372
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 23.05.21 15:35. Заголовок: Andrey Вот чего наг..


Andrey
Вот чего нагуглил
#include "BosTaurus.CH"
.
.
BT_BitmapSaveFile(BT_BitmapCaptureDesktop(), "errorDESKTOP.png", 4)

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 1691
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 23.05.21 20:14. Заголовок: Andrey пишет: Нужно..


Andrey пишет:

 цитата:
Нужно это в FUNCTION DefError()



На примере MiniGUI\SAMPLES\BASIC\Hmg_Error\Hmg_Error.prg

STATIC FUNCTION DefError( oError )
...
//Html Arch to ErrorLog
LOCAL HtmArch, xText

//Save screen
n := Ascan( _HMG_aFormHandles, GetActiveWindow() )
IF n > 0
oError:cargo := _HMG_aFormNames[ n ]
DoMethod( oError:cargo, "SaveAs", hb_DirBase() + "screen.bmp" )
ENDIF

...
и дальше
...
Function ShowError ( oError )
...
x_body_erro += " File.................: " + oError:filename() + CRLF
x_body_erro += " Form.................: " + oError:cargo + CRLF
x_body_erro += " DOS error code.......: " + strvalue( oError:oscode() ) + CRLF
...

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 6958
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 23.05.21 21:01. Заголовок: Спасибо Петр ! :sm3..


Спасибо Петр !
Не просмотрел этот пример...

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 6959
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 23.05.21 21:55. Заголовок: Вот так сделал Error..


Вот так сделал ErrorLog.htm:


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 6960
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 23.05.21 22:47. Заголовок: Dima пишет: Вот чег..


Dima пишет:

 цитата:
Вот чего нагуглил
#include "BosTaurus.CH"


Спасибо Дима ! Получилось отлично !

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 6961
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 27.05.21 01:17. Заголовок: Хоть пинайте меня, н..


Хоть пинайте меня, но всё равно HMG_Alert() сбоит...

Прицепил к своему большому проекту исправленный ErrorSys2.prg из ErrorLog_2
И при ошибке получаю ПРОСТО вылет из программы, без показа окна ошибки.
В ErrorLog.htm ошибка сохраняется и скрин экрана тоже есть.
Вот такая ошибка:
Error MGERROR/0 Control: Say_02 Of oDlg Not defined. Program terminated. 
--------------------------------- Stack Trace ---------------------------------
Called from MSGMINIGUIERROR(0)
Called from VERIFYCONTROLDEFINED(0)
Called from SETPROPERTY(0)
Called from (b)SHOWERROR(254) in module: errorsys2.prg
Called from DO_WINDOWEVENTPROCEDURE(0)
Called from FILLDLG(0)
Called from HMG_ALERT(0)
Called from SHOWERROR(267) in module: errorsys2.prg
Called from DEFERROR(150) in module: errorsys2.prg
Called from (b)ERRORSYS(66) in module: errorsys2.prg
Called from MYPRINTCARD(3064) in module: tbrw_fcard.prg
Called from (b)MYMENUBUTTONCARD(2912) in module: tbrw_fcard.prg
Called from (b)METRO3BUTTON(53) in module: metro3button.prg
......

Вот код:
Скрытый текст

Если ставлю просто так:
bInit := {|| This.TopMost := .T. }
То окно ошибки появляется без проблем !
Если оставить ТОЛЬКО строки:
bInit   := {|| SetProperty("oDlg", "Say_01" , "FontColor", YELLOW   ) ,; 
SetProperty("oDlg", "Say_01" , "Alignment", "CENTER" ) ,;
This.TopMost := .T. }

То окно ошибки тоже появляется, только весь текст ошибки становиться жёлтым и по центру, вот так:

Хотя задаю белый фонт - SET MSGALERT FONTCOLOR TO WHITE
Почему так происходит ? Как правильно делать, чтобы не было вылетов ?

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 3733
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 27.05.21 01:38. Заголовок: Andrey пишет Хоть пи..


Andrey пишет
 цитата:
Хоть пинайте меня, но всё равно HMG_Alert() сбоит...


Что тебя пинать, сам ходишь по кругу с не полученными для себя ответами
- какие окна доступны в этот момент (не разрушены)
- какие контролы на окнах доступны в этот момент (не разрушены)
- есть ли окно main (не разрушено) для hmg_Alert() это важно
Замени ф-ии на MsgStop(), MsgYesNo()

Спасибо: 0 
ПрофильЦитата Ответить
moderator




Пост N: 1861
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 27.05.21 10:17. Заголовок: Andrey пишет: bInit..


Andrey пишет:

 цитата:
bInit := {|| SetProperty("oDlg", "Say_01" , "FontColor", YELLOW ) ,;
SetProperty("oDlg", "Say_01" , "Alignment", "CENTER" ) ,;
This.TopMost := .T. }


Запиши этот блок инициализации следующим образом:

      bInit := {|| iif( GetControlType( "Say_01", "oDlg" ) == "EDIT", , ( ; 
SetProperty( "oDlg", "Say_01", "FontColor", YELLOW ), ;
SetProperty( "oDlg", "Say_01", "Alignment", "CENTER" ), ;
SetProperty( "oDlg", "Say_02", "FontColor", YELLOW ), ;
SetProperty( "oDlg", "Say_02", "Alignment", "CENTER" ) ) ), ;
This.TopMost := .T. }

и посмотри на результат

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 6962
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 27.05.21 11:34. Заголовок: gfilatov2002 пишет: ..


gfilatov2002 пишет:

 цитата:
Запиши этот блок инициализации следующим образом:


Записал.
Получается аналогично такому результату - bInit := {|| This.TopMost := .T. }
Т.е. окно ошибки появляется, только белым цветом и первые 2 строчки не по центру, отбивка влево.
Первые две строчки должны быть же ЖЕЛТЫМИ и по центру !

Сделал так:
 
cMsg := " Сталася помилка в програмі ! " + CRLF
cMsg += "*** НЕОБХІДНО КОНТАКТИ З програмістів ***" + CRLF + CRLF
cMsg += iif( _lShowDetailError(), cErrorMessage, ErrorMessage( oError ) )

И вывожу отладку в лог-файл, строчек ошибок 43.
Почему ломается на "Say_02" ?

SergKis пишет:

 цитата:
- есть ли окно main (не разрушено) для hmg_Alert() это важно


Есть main окно.

SergKis пишет:

 цитата:
- какие контролы на окнах доступны в этот момент (не разрушены)


Они очень плохо выглядят. Хочется нормальное окно с ошибкой.

SergKis пишет:

 цитата:
- какие контролы на окнах доступны в этот момент (не разрушены)


Как это сделать в bInit := {|| ????

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 6967
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 08.06.21 18:36. Заголовок: Haz пишет: я Сам см..


Haz пишет:

 цитата:
я Сам смотрю по логам, плюс прилетает на почту сообщение ( опционально )


Как такое реализовать такое же у себя ?

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 1694
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 08.06.21 19:10. Заголовок: Andrey пишет: Как т..


Andrey пишет:

 цитата:
Как такое реализовать такое же у себя


Ну это совсем просто
1.Регистрируешь ящик, через который будешь слать письма
2.Подравляешь Errorsys.prg static переменная bPostErrorBlock := NIL и функция ее установки SetPostErrorBlock( bBlock ). Перед завершением проверяешь если тип переменной блок то выполняешь и выходишь
3. Этот блок тупо берет лог и через hb_sendMail() шлет куда указал используя ящик из п1

дальше нюансы

Если только слать почту то это все, НО если хочется большего, пишешь свой ReadMail() который читает яшик п1 . Если прилетело "хитрое" письмо ( с кодовой последовательностью в теле ) , то тут все что угодно
Можно отправить в письме hbr файл и при получении он выполниться .
Это может быть обработка по базам, переиндексация , упаковка, модификация структур подмена других hbr проекта , вобщем тут только фонтазия ограничивает. У меня сервисные операции по базам запускаются

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 7388
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 08.06.21 19:18. Заголовок: Haz пишет: 3. Этот ..


Haz пишет:

 цитата:
3. Этот блок тупо берет лог и через hb_sendMail()


У него не срослось с этой функцией + SSL

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 1696
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 08.06.21 19:20. Заголовок: Dima пишет: У него ..


Dima пишет:

 цитата:
У него не срослось с этой функцией + SSL


ну тогда или растить дальше или использовать sendmail.exe

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 7389
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 08.06.21 19:38. Заголовок: Haz пишет: или испо..


Haz пишет:

 цитата:
или использовать sendmail.exe


Или Curl.exe

https://stackoverflow.com/questions/14722556/using-curl-to-send-email

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 6969
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 08.06.21 19:58. Заголовок: Dima пишет: У него ..


Dima пишет:

 цитата:
У него не срослось с этой функцией + SSL


Нет, есть такая работа.
Свой "почтовик" написан на МиниГуи.
Мне Григорий ещё в 2014 году помог его сделать.
До сих пор у некоторых юзеров работает...

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 1614
Зарегистрирован: 27.01.07
ссылка на сообщение  Отправлено: 08.06.21 21:28. Заголовок: Вот еще вариант: htt..


Вот еще вариант: https://www.inveigle.net/cmail

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 34 , стр: 1 2 All [только новые]
Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 242
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет