Модераторы: Partizan, gambit

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Гляньте код скажите что сделано не грамотно? С точки зрения ООП 
:(
    Опции темы
source777
Дата 7.8.2008, 20:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1878
Регистрация: 12.3.2007

Репутация: 3
Всего: 56



WaReZMEN, вот тебе список вопросов, пока ты для своего кода не ответишь на все эти вопросы положительно, разговаривать с тобой будет бесполезно...

user posted image

P.S. И добавь комментарии к методам и классам!!!


--------------------
Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте
PM MAIL   Вверх
WaReZMEN
Дата 8.8.2008, 00:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 683
Регистрация: 9.6.2006
Где: Россия, Санкт-Пет ербург

Репутация: нет
Всего: 3



source777, слов нет. Ну я ведь просил не придерется к названиям та как изменить их дело 10 секунд а на данном этапе мне и так понятно что и они обозначают. Я прекрасно понимаю, что здесь можно долго возражать. В дельфи делалось все проще создал юнит там константы объявил и юзаи их де нужно.  По поводу списка вопросов вопросы конечно интересные постараюсь ответить.  Тем неимение спасибо, что так раскритиковали заставляет задуматься тем ли я занимаюсь… Мож на сварщика пойти… 
Вот enum переделал так лучше?
Код

       public enum Align //Для Профилеи и Инфилов
    {
        None = 0,
        Center = 1,
        Left = 2,
        Top = 3,
        Rigth = 4,
        Bottom = 5
    }

    public enum Orientation //Для Импостов
    {
        Horizontal = 100,
        Vertical = 101
    }

   public enum MouseState //Для мыши 
    {
       msNone=0,       
       msImpostHorizontal = 200,
       msImpostVertical = 201,
       msMouseDown = 202
    }



Цитата

А имена переменных - это вообще отдельный ужос, чего только myBrush стоит или tmpInfill.Infill1...

Ну имена переменных слабость вечно полчаса сидишь и думаешь как назвать... myBrush ну а как к примеры вы бы назвали??? tmpInfill ну да здесь глупо конечно был еще один вариант xInfill smile 
Infill1 и Infill2 ну здесь вообще другие варианты просто отпадают ибо у каждого infil может быть еще два...



Это сообщение отредактировал(а) WaReZMEN - 8.8.2008, 02:32
PM MAIL ICQ   Вверх
Skynin
Дата 8.8.2008, 09:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 359
Регистрация: 1.7.2007
Где: Харьков

Репутация: 0
Всего: 10



Цитата(source777)

да нет, это нехорошо совсем по другой причине: тут вообще в приведении типов никакой надобности нет, а в твоём варианте оно осталось!

Я сразу написал, что не бо ООП мое замечание. Потому что в задачу не вникал, чтобы указать где что-то можно реализовать. Такие куски кода разве что будучи тим-лидером буду исследовать.

Цитата(WaReZMEN)

myBrush ну а как к примеры вы бы назвали???

Приставка my в названиях мне вообще непонятна. К чему "Мои документы", ..., myBrush, myCollection и т.д.? Понятно что если я написал то оно и так - My.

В случае же расширения классов конкретно ради специфики задачи и когда на ум ничего не приходит в качестве приставки, или окончания (зависит от пожеланий к сортировке при отображении в IDE) использую название проекта. Обычно 3, 4ре первые буквы.
Пример - это тоже проект. Приучайтесь к порядку и конкретике;

Цитата

так раскритиковали заставляет задуматься тем ли я занимаюсь… Мож на сварщика пойти… 

Может smile

Но тут решать нужно - чем больше нравится заниматься.

А насчет критики - то напрасно удивляетесь. Иного и быть не могло, даже если бы написали красивейший код.

Для того чтобы научиться писать в стиле ООП быстро и надежно (а не долго, от проекта к проекту по капле выдавливая из себя "процедуриста", и периодически впадая обратно) берете - Smalltalk(Cincom'овский например) - и вперед. Там либо ничего не напишете, либо в ООП.
PM MAIL WWW ICQ Skype GTalk YIM MSN   Вверх
WaReZMEN
Дата 8.8.2008, 09:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 683
Регистрация: 9.6.2006
Где: Россия, Санкт-Пет ербург

Репутация: нет
Всего: 3



Skynin
Цитата

А насчет критики - то напрасно удивляетесь. Иного и быть не могло, даже если бы написали красивейший код.

Я не против критики smile это просто шутка была... мне какраз критика и нужна...
PM MAIL ICQ   Вверх
source777
Дата 8.8.2008, 10:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1878
Регистрация: 12.3.2007

Репутация: 3
Всего: 56



Цитата(WaReZMEN @  8.8.2008,  00:03 Найти цитируемый пост)
я ведь просил не придерется к названиям та как изменить их дело 10 секунд
Это тебе пока так кажется, а практика показывает, что утверждение "как вы лодку назовёте - так она и поплывёт" вполне применимо к программированию, точнее к именованию идентификаторов. Ведь именно идентификаторы определяют под каким углом зрения ты будешь смотреть на код...

Цитата(WaReZMEN @  8.8.2008,  00:03 Найти цитируемый пост)
Ну имена переменных слабость вечно полчаса сидишь и думаешь как назвать... myBrush ну а как к примеры вы бы назвали??? tmpInfill ну да здесь глупо конечно был еще один вариант xInfill smile 

Зачем полчаса придумывать какое-то абстрактное имя для переменной? Если она не имеет чёткого семантического смысла, значит она не нужна, а если имеет, то и назови её исходя из смысла...  Смысл твоих переменных неочевиден и не описан в комментариях, поэтому хорошего названия на все случаи тебе никто не предложит, пока ты не разъяснишь конкретную ситуацию. 

Цитата(WaReZMEN @  8.8.2008,  00:03 Найти цитируемый пост)

Infill1 и Infill2 ну здесь вообще другие варианты просто отпадают ибо у каждого infil может быть еще два...
"У каждого заполнения может быть ещё два заполнения" - по твоему это нормальная фраза?

Добавлено через 5 минут и 10 секунд
Цитата(WaReZMEN @  8.8.2008,  00:03 Найти цитируемый пост)
Вот enum переделал так лучше?
гораздо лучше, ещё бы приставку ms убрать из значений MouseState, и Align заменить на Alignment, всё-таки существительные в данном случае предпочтительнее.



--------------------
Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте
PM MAIL   Вверх
WaReZMEN
Дата 8.8.2008, 11:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 683
Регистрация: 9.6.2006
Где: Россия, Санкт-Пет ербург

Репутация: нет
Всего: 3



source777
Цитата

"У каждого заполнения может быть ещё два заполнения" - по твоему это нормальная фраза?

Фраза может и не очень, но отражает суровую действительность... Так как что структура такова что самого начала работы программы у нас есть только одно заполнение когда мы кидаем на него Импост наш инфил грубо говоря делится на две части справа от импоста и слева. Так вот мне кажется, что такая структура правильна. Иначе придется сперва заполнение делить на множество вообще на мои взгляд так проще (с двумя инфилами) 
по поводу  Alignment ну я так и сделал сначала а потом посмотрел что в Делфи к примеру это свойство отвевает за выравнивание, а меня как бы к чему прилипает (глупо конечно звучит ) а MouseState уже убрал smile
Может, поможете мне решить проблему с методом Recalc

Код

           private void Recalc()
       {
            switch (profilAlignment)
            {
                case Alignment.Left:
                        this.maspoints[0] = new Point(Parent.BeginOrdinate.X, Parent.BeginOrdinate.Y);
                        this.maspoints[1] = new Point(Parent.BeginOrdinate.X + Fat, Parent.BeginOrdinate.Y + Fat);
                        this.maspoints[2] = new Point(Parent.BeginOrdinate.X + Fat, Parent.BeginOrdinate.Y + Parent.EndOrdinate.Y - Fat);
                        this.maspoints[3] = new Point(Parent.BeginOrdinate.X, Parent.BeginOrdinate.Y + Parent.EndOrdinate.Y);
                     break;
                case Alignment.Top:
                        this.maspoints[0] = new Point(Parent.BeginOrdinate.X, Parent.BeginOrdinate.Y);
                        this.maspoints[1] = new Point(Parent.BeginOrdinate.X + Parent.EndOrdinate.X, Parent.BeginOrdinate.Y);
                        this.maspoints[2] = new Point(Parent.BeginOrdinate.X + Parent.EndOrdinate.X - Fat, Parent.BeginOrdinate.Y + Fat);
                        this.maspoints[3] = new Point(Parent.BeginOrdinate.X + Fat, Parent.BeginOrdinate.Y + Fat);
                     break;
                case Alignment.Rigth:
                        this.maspoints[0] = new Point(Parent.BeginOrdinate.X + Parent.EndOrdinate.X - Fat, Parent.BeginOrdinate.Y + Fat);
                        this.maspoints[1] = new Point(Parent.BeginOrdinate.X + Parent.EndOrdinate.X, Parent.BeginOrdinate.Y);
                        this.maspoints[2] = new Point(Parent.BeginOrdinate.X + Parent.EndOrdinate.X, Parent.BeginOrdinate.Y + Parent.EndOrdinate.Y);
                        this.maspoints[3] = new Point(Parent.BeginOrdinate.X + Parent.EndOrdinate.X - Fat, Parent.BeginOrdinate.Y + Parent.EndOrdinate.Y - Fat);
                     break;
                case Alignment.Bottom:
                        this.maspoints[0] = new Point(Parent.BeginOrdinate.X, Parent.BeginOrdinate.Y + Parent.EndOrdinate.Y);
                        this.maspoints[1] = new Point(Parent.BeginOrdinate.X + Parent.EndOrdinate.X, Parent.BeginOrdinate.Y + Parent.EndOrdinate.Y);
                        this.maspoints[2] = new Point(Parent.BeginOrdinate.X + Parent.EndOrdinate.X - Fat, Parent.BeginOrdinate.Y + Parent.EndOrdinate.Y - Fat);
                        this.maspoints[3] = new Point(Parent.BeginOrdinate.X + Fat, Parent.BeginOrdinate.Y + Parent.EndOrdinate.Y - Fat);
                     break;
            }

        }


Все говорили что много switch и что нужно юзать паттерн State. Почитал я  думаю что сдесь он не уместен. Если не прав растолкуйте.
 Скажу лишь,  что это метод вызывается только при созданий экземпляра класса TPrifil это груба говоря, рама окна. 

Это сообщение отредактировал(а) WaReZMEN - 8.8.2008, 12:21
PM MAIL ICQ   Вверх
source777
Дата 8.8.2008, 12:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1878
Регистрация: 12.3.2007

Репутация: 3
Всего: 56



Цитата(WaReZMEN @  8.8.2008,  11:42 Найти цитируемый пост)
Так как что структура такова что самого начала работы программы 
Это всё отмазы, если структура - плохая, то надо сделать хорошую исходя из задачи, а не исходя из структуры. Ты можешь хоть описать, что ты делаешь, нормальным русским языком? Или ты думаешь, что кто-то понял твой код?  smile  smile  smile 

Цитата(WaReZMEN @  8.8.2008,  11:42 Найти цитируемый пост)
Скажу лишь,  что это метод вызывается только при созданий экземпляра класса TPrifil это груба говоря, рама окна. 
метод - рама? метод - это действие! Зачем нужен этот метод?  Что такое maspoints? Что такое Parent? Почему maspoints нельзя заменить на набор вычисляемых свойств? Почему maspoints пересоздаются каждый раз? Они устанавливаются разными методами? Так не должно быть должны быть центральные точки управления! А глобальных переменных быть не должно!!!
 




--------------------
Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте
PM MAIL   Вверх
WaReZMEN
Дата 8.8.2008, 13:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 683
Регистрация: 9.6.2006
Где: Россия, Санкт-Пет ербург

Репутация: нет
Всего: 3



source777, еслиб запустили мои код то уивидели бы что я делаю... Это примитивный конструктор пластиковых окон.

Цитата

метод - рама? метод - это действие! Зачем нужен этот метод?  Что такое maspoints?   

Вообщем каждое окно состоит из рамы (я предпоситаю слово каробка TConstraction)  стекл (или запонения TInfill) и импостов TImpost перегородок разделяющих раму онка и соответствено стекла (в место одного большого) два поменьше... рама (каробка) состоит из   4-х профилеи (всмысле пластиковых профилеи TProfill). Метод Recal (деиствие или как вы его называете...) для меня это грубо говоря процедура расчета координат профиля для его графического отображения точки он записывает в maspoint... 
Цитата

Что такое Parent?

Parent это какраз сылка на клас TConstraction мы делаем это для того чтоб понят к какой канструкций принадлежит данный профиль... как заменить на набор вычесляемых свойств не знаю как это сделать... 
Цитата

Почему maspoints пересоздаются каждый раз?Они устанавливаются разными методами? 

Насамом деле он создается только один раз для конкретного профиля. в дольшеишем нет пересчета...

Цитата

Так не должно быть должны быть центральные точки управления! А глобальных переменных быть не должно!!!

Центральные точки управления чего?
P.S. Вот скрин программы... user posted image
Планируется еще створки добавить предпологаю что класс створок будет наследоватся от TConstraction.

PM MAIL ICQ   Вверх
source777
Дата 8.8.2008, 14:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1878
Регистрация: 12.3.2007

Репутация: 3
Всего: 56



Pane - оконное стекло
WindowFrame - оконная рама
Separator - перегородка-разделитель
Profile - профиль

Ну демонстрируй, как ты за 10 сек, меняешь имена классов...

Цитата(WaReZMEN @  8.8.2008,  13:20 Найти цитируемый пост)
Насамом деле он создается только один раз для конкретного профиля. в дольшеишем нет пересчета...
С какого хрена maspoints не private??? Она просто обязана быть private!!! Нафига метод назван ReCalc, если нет никакого пересчёта? Зачем нужен этот метод? Убери его...

Цитата(WaReZMEN @  8.8.2008,  13:20 Найти цитируемый пост)
source777, еслиб запустили мои код то уивидели бы что я делаю...
Как в анекдоте:
Цитата

У быдло-кодера спрашивают: "Что ты пишешь?", а он отвечает: "Понятия не имею, сейчас запущу и увижу..."

Так что запомни: если код надо выполнить, чтобы понять, что он делает, то этот код необходимо выбросить!!!


Цитата(WaReZMEN @  8.8.2008,  13:20 Найти цитируемый пост)
Это примитивный конструктор пластиковых окон.

Ну хоть что-то удалось из тебя выжать... 
Уже можно сказать, что отношения наследования тут нет!
А есть класс Window, в него включены экземпляры классов WindowFrame,  Separator,  List<Profile>, List<Pane>.
У всех классов (Window, WindowFrame,  Separator,  Profile, Pane) есть св-ва TopLeftPoint, Width и Height и метод Draw, их можно взять у IDrawable, причём эти свойства read-only(исключение для Separator, который можно двигать, и Pane, геометрические св-ва которого меняются в зависимости от Separator) и устанавливаются в конструкторе. Дальше всё вполне просто, возможно ты даже справишься с реализацией самостоятельно.


Цитата(WaReZMEN @  8.8.2008,  13:20 Найти цитируемый пост)
Центральные точки управления чего?
Failed. Центральные точки управления ЧЕМ? Сложностью естественно.



--------------------
Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте
PM MAIL   Вверх
WaReZMEN
Дата 8.8.2008, 14:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 683
Регистрация: 9.6.2006
Где: Россия, Санкт-Пет ербург

Репутация: нет
Всего: 3



Цитата

Pane - оконное стекло
WindowFrame - оконная рама
Separator - перегородка-разделитель
Profile - профиль


Названия эти не мной придуманы так они насамом деле называются в производстве оконных пластиковых конструкциях...

Цитата

С какого хрена maspoints не private??? Она просто обязана быть private!!! 

Ну потому как был метод Paint в классе MngConstruction (он типа управляющий класс)...
Цитата

Нафига метод назван ReCalc, если нет никакого пересчёта? Зачем нужен этот метод? Убери его... 

Я упоминул что в будущем будет створка и если мы будем двигать Импост или как вы его назавали Separator то естествено створка будет пересчитыватся....  а вообще можно посомтреть мою прогу работающую на дельфе http://primokna.ru/PrimOknaSoft.exe ну это если интересно...

Цитата

Ну хоть что-то удалось из тебя выжать... 
Уже можно сказать, что отношения наследования тут нет!
А есть класс Window, в него включены экземпляры классов WindowFrame,  Separator,  List<Profile>, List<Pane>.
У всех классов (Window, WindowFrame,  Separator,  Profile, Pane) есть св-ва TopLeftPoint, Width и Height и метод Draw, их можно взять у IDrawable, причём эти свойства read-only(исключение для Separator, который можно двигать, и Pane, геометрические св-ва которого меняются в зависимости от Separator) и устанавливаются в конструкторе. Дальше всё вполне просто, возможно ты даже справишься с реализацией самостоятельно.

За это спасибо! Вот только мне лично кажется что  к примеру импост (Separator) можно унаследовать  от Profile створку от WindowFrame... может я и не прав конечно... 
Так осталось не понятно как быть с расчетом координат для Profile и прочих элементов?

Это сообщение отредактировал(а) WaReZMEN - 8.8.2008, 14:57
PM MAIL ICQ   Вверх
source777
Дата 8.8.2008, 15:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1878
Регистрация: 12.3.2007

Репутация: 3
Всего: 56



Цитата(WaReZMEN @  8.8.2008,  14:56 Найти цитируемый пост)
Так осталось не понятно как быть с расчетом координат для Profile и прочих элементов?
Не использовать все эти координаты, там явная избыточность у тебя с точки зрения математики, а нужный базис я тебе указал: координаты угла, ширина и высота.



Цитата(WaReZMEN @  8.8.2008,  14:56 Найти цитируемый пост)
Вот только мне лично кажется что  к примеру импост (Separator) можно унаследовать  от Profile створку от WindowFrame... может я и не прав конечно... 
Наследовать можно лишь в одном случае - если между классами существует отношение "является". А теперь подумай: перегородка является профилем? створка является оконной рамой?



--------------------
Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте
PM MAIL   Вверх
SKrivosein
Дата 8.8.2008, 15:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Идущий в даль
**


Профиль
Группа: Участник
Сообщений: 271
Регистрация: 9.6.2007
Где: Praha - Прага

Репутация: 4
Всего: 8



Спустил твою прогу, не очень понятно что делает.Особенно когда щелкаю на раму, ну становятся синего цвета. ну ладно написано "примитивный".
А допиши метод FMain_Paint так:
Код

 private void FMain_Paint(object sender, PaintEventArgs e)            
        {
            this.SetStyle(ControlStyles.OptimizedDoubleBuffer, true);
            this.SetStyle(ControlStyles.AllPaintingInWmPaint, true);
            this.SetStyle(ControlStyles.UserPaint, true);

            ConMng.Paint(e.Graphics);            
        }

Небудет так графика мерцать.  smile

Это сообщение отредактировал(а) SKrivosein - 8.8.2008, 15:56


--------------------
Оптимист - это плохо информированный человек.
user posted image

PM MAIL   Вверх
QryStaL
Дата 8.8.2008, 16:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Intellectual feast
**


Профиль
Группа: Участник
Сообщений: 914
Регистрация: 30.11.2005

Репутация: 10
Всего: 32



Эта тема уже разрослась до неимоверных пределов. Я думаю, обсуждение в таком же ключе мало чем поможет - надо перепроектировать. Автору неплохо бы изучить ООП, построить диаграмму классов, взаимодействий и потом уже заняться кодированием.


--------------------
I don't need a reason being who I am...
PM MAIL ICQ   Вверх
Partizan
Дата 8.8.2008, 19:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Let's do some .NET
****


Профиль
Группа: Модератор
Сообщений: 2828
Регистрация: 19.12.2005
Где: Санкт-Петербург

Репутация: 8
Всего: 67



QryStaL, а я как раз подумал, что автору следовало бы создать новый топик в разделе о проектировании ПО и запостить туда предметную область. Я думаю, что такие корифеи системного анализа как ida, помогут.


--------------------
СУВ,
       Partizan.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
WaReZMEN
Дата 9.8.2008, 00:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 683
Регистрация: 9.6.2006
Где: Россия, Санкт-Пет ербург

Репутация: нет
Всего: 3



SKrivosein
Цитата

Особенно когда щелкаю на раму, ну становятся синего цвета 

это выделения в будущем можно будет посмотреть размеры и тип выбраного профиля.... За код против мерцания отдельное спасибо smile
source777 ,
Цитата

А теперь подумай: перегородка является профилем? створка является оконной рамой?

Вот если чесно профиль делается из тогоже что и перегородка зазница между ними в ом что у профеля углы скошены а у перегоротки прямые ну и ее можно двигать... Рама тоже 4-х угольная как и створка более того в створке тоже может быть несколько стекл и перегоротка. Воообщем если говорите не нужно наследовать значит не буду... По поводу названий Pane не совсем верно так как в окнах не обязательно стекло может быть... Вообще в пластиковых окнах есть понятие заполнения в него входят стеклопаке (несколько стекл 2-3 и больше) а также сендвич-панель ну прочие не буду вдаватся в детали....
QryStaL
Цитата

надо перепроектировать

Ну этим я какраз токи я занялся... по поводу ООП ну какбы я знаю что это такое и с чам это едят...
Partizan, ну мне то ножно не готовое решения я хочу понять как должно быть. как говорилось выше программа то работает (просьба не кречать про говнокодерство) и я щас разбераюсь как по правельному должен быть написан подобный код вот и все... 

Это сообщение отредактировал(а) WaReZMEN - 9.8.2008, 01:20
PM MAIL ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
Partizan
PashaPash

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, Partizan, PashaPash.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | .NET для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.1451 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.