Пишем ли на Clarion.Net

Clarion.NET & .NET технологии

Модератор: Дед Пахом

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Ответить
Аватара пользователя
Admin
Администратор
Сообщения: 3959
Зарегистрирован: 05 Июль 2005, 15:59
Откуда: Хабаровск
Благодарил (а): 25 раз
Поблагодарили: 22 раза
Контактная информация:

Пишем ли на Clarion.Net

Сообщение Admin »

Пишет ли кто нибудь для себя на Clarion.Net
Ну типа для общего развития.
Что пишете? Прмеров бы ... :)
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
Аватара пользователя
Admin
Администратор
Сообщения: 3959
Зарегистрирован: 05 Июль 2005, 15:59
Откуда: Хабаровск
Благодарил (а): 25 раз
Поблагодарили: 22 раза
Контактная информация:

Сообщение Admin »

Да-а-а! То что в MSDN нет примеров по Clarion.Net удручает :(
Существующие примеры по С# в основном нужно сильно переделывать. Некоторые моменты работают не так как хотелось бы и т.д.

вот несколько примеров ... пока до них дошел - мозг съел :)
после обычного Клариона напряжно, но прикольно с другой стороны.
g &System.Drawing.Graphics()
pen &Pen()
myrect Rectangle(1,1,100,100)
CODE
g := self.CreateGraphics()
pen := new Pen(Color.Black)
g.DrawRectangle(pen,myrect)
pen.Dispose
g.Dispose

g &System.Drawing.Graphics
sb &SolidBrush
CODE
g := self.CreateGraphics()
sb := new SolidBrush(Color.Black)
g.FillRectangle(sb,new Rectangle(1,1,50,50))
sb.Dispose
g.Dispose

g &System.Drawing.Graphics
font &Font
mystring clastring(100)
CODE
g := self.CreateGraphics()
font := new Font('Times New Roman',36,FontStyle.Regular)
mystring = 'Test string from sea'
g.DrawString(mystring,font, SystemBrushes.Highlight, 10, 10)
font.Dispose
g.Dispose
P.S. Еще напрягает то что часто после записи проекта, в следующий раз он не грузится ... окна форм не открываются. валятся ошибки :(
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
Аватара пользователя
Admin
Администратор
Сообщения: 3959
Зарегистрирован: 05 Июль 2005, 15:59
Откуда: Хабаровск
Благодарил (а): 25 раз
Поблагодарили: 22 раза
Контактная информация:

Сообщение Admin »

Кстати если кисть создал таким способом

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

FillRectangle(new SolidBrush(Color.Blue),new Rectangle(1,1,50,50))
то, насколько я понимаю Dispose ей делать не нужно?
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
Аватара пользователя
Дед Пахом
Старичок
Сообщения: 3131
Зарегистрирован: 07 Июль 2005, 16:51
Откуда: Москва, Россия
Благодарил (а): 10 раз
Поблагодарили: 28 раз
Контактная информация:

Сообщение Дед Пахом »

Вообще говоря, Dispose() надо вызывать, если необходимо освободить unmanaged -ресурсы. Я с графикой не работал, не знаю, кто тут managed, а кто нет. Но судя по коду, обращений к wINapi нет, тогда и Dispose'ы не нужны нигде.
С уважением, ДП
Аватара пользователя
Дед Пахом
Старичок
Сообщения: 3131
Зарегистрирован: 07 Июль 2005, 16:51
Откуда: Москва, Россия
Благодарил (а): 10 раз
Поблагодарили: 28 раз
Контактная информация:

Сообщение Дед Пахом »

P.S. Еще напрягает то что часто после записи проекта, в следующий раз он не грузится ... окна форм не открываются. валятся ошибки
VS тоже валится "дай Бог каждому", хотя конечно неприятно.
С уважением, ДП
Аватара пользователя
Дед Пахом
Старичок
Сообщения: 3131
Зарегистрирован: 07 Июль 2005, 16:51
Откуда: Москва, Россия
Благодарил (а): 10 раз
Поблагодарили: 28 раз
Контактная информация:

Сообщение Дед Пахом »

Блин, что же я написал-то... про Dispose(). Тяжело в воскресенье утром мозги шевелятся, пришлось встряхнуть концертом ABBA на Wembley :)
Вобщем, так. Если .NET-класс реализует интерфейс IDisposable и следовательно имеет метод Dispose(), то однозначно надо его вызывать, т. к. явно идёт работа с unmanaged-ресурсами (шрифт, файл, соединение с бд и т.д.), которые освобождаются именно в Dispose() (ссоглашение MS). Обычная практика такая:

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

try
{
  Создать unmanaged-объект()
  и работать с ним()
}
catch(...)
{
}
finally
{
  объект.Dispose();
}
В c# есть короткая форма
using(...), которая автоматом вызывает блок finally. Не знаю, есть ли что-либо подобное в кларе.нет.
С уважением, ДП
Аватара пользователя
try-catch
Бывалый
Сообщения: 62
Зарегистрирован: 03 Декабрь 2005, 13:02
Откуда: Russia

Сообщение try-catch »

Admin писал(а):P.S. Еще напрягает то что часто после записи проекта, в следующий раз он не грузится ... окна форм не открываются. валятся ошибки :(
Проект - архивировать, и отсылать в PTSS.
Regards,
TC
Аватара пользователя
Admin
Администратор
Сообщения: 3959
Зарегистрирован: 05 Июль 2005, 15:59
Откуда: Хабаровск
Благодарил (а): 25 раз
Поблагодарили: 22 раза
Контактная информация:

Сообщение Admin »

C Dispose все равно не совсем понятно...
Что происходит в данном случае?

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

FillRectangle(new SolidBrush(Color.Blue),new Rectangle(1,1,50,50))
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
Аватара пользователя
Дед Пахом
Старичок
Сообщения: 3131
Зарегистрирован: 07 Июль 2005, 16:51
Откуда: Москва, Россия
Благодарил (а): 10 раз
Поблагодарили: 28 раз
Контактная информация:

Сообщение Дед Пахом »

В MSDN они вызывают Dispose():

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

    // Create a custom brush using a semi-transparent color, and 
    // then fill in the rectangle.
    Color customColor = Color.FromArgb(50, Color.Gray);
    SolidBrush shadowBrush = new SolidBrush(customColor);
    e.Graphics.FillRectangles(shadowBrush, new RectangleF[]{rectFToFill});

    // Dispose of the brush.
    shadowBrush.Dispose();
С уважением, ДП
Аватара пользователя
Admin
Администратор
Сообщения: 3959
Зарегистрирован: 05 Июль 2005, 15:59
Откуда: Хабаровск
Благодарил (а): 25 раз
Поблагодарили: 22 раза
Контактная информация:

Сообщение Admin »

ага спасибо... я просто в одном месте не врубился ... с Rectangle...
а это не класс а структура :)
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
Ответить