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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Коллекция состоящая из коллекций классов. Возможно ли такое? 
:(
    Опции темы
thomas
Дата 20.7.2007, 22:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доцент... почти
***


Профиль
Группа: Завсегдатай
Сообщений: 1385
Регистрация: 3.10.2006
Где: " Сказочное королевство"

Репутация: 6
Всего: 65



Приветствую всех.
Собственно вопрос в названии темы.
Код

Dim myClass as MyClass 
Dim myCollection as List(Of myClass)
Dim myBigCollection as List(Of myCollection) 

' и там где-то в коде методом перебора сначала заполнить одну коллекцию и в родительском цикле вставить ее в старшую коллекцию.
myBCol = New myBigCollection()
For Each dr as DataRow In dt.Rows
    mCol= New myCollection()
    for i as int =0 To dt.Colomns.Count
         mCl = New myClass(dr, i) 'конструктор заполнит поля класса значениями
         mCol.Add(mCl)
    Next i
    myBCol.Add(mCol)
Next dr


Такое в принципе возможно? Или противоречит .NET ?  smile 


--------------------
Крепко жму горло, искренне ваш Thomas. (С)vingrad
Некоторые сорта флоры буквально за одно мгновение превращают нас в фауну!
Проблемы негров шерифа не волнуют.
PM MAIL   Вверх
Idsa
Дата 20.7.2007, 22:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2086
Регистрация: 5.12.2006
Где: Томск

Репутация: 14
Всего: 62



Цитата(thomas @  20.7.2007,  22:06 Найти цитируемый пост)

Dim myCollection as List(Of myClass)
Dim myBigCollection as List(Of myCollection) 

Если перевести на "русский", получим:
List<List<MyClass>> myBigCollection = new List<List<MyClass>>(). Так?

List<MyClass> полноправный тип, значит мы можем делать с ним все, что угодно (в том числе и создавать коллекцию таких типов).

Это сообщение отредактировал(а) Idsa - 20.7.2007, 22:23


--------------------
Мой блог: alexidsa.blogspot.com
PM MAIL ICQ   Вверх
thomas
Дата 21.7.2007, 10:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доцент... почти
***


Профиль
Группа: Завсегдатай
Сообщений: 1385
Регистрация: 3.10.2006
Где: " Сказочное королевство"

Репутация: 6
Всего: 65



Цитата(Idsa @ 20.7.2007,  20:20)

List<MyClass> полноправный тип, значит мы можем делать с ним все, что угодно (в том числе и создавать коллекцию таких типов).

Возможно это и так.
Я вот только подумал, так сказать, поглубже, поширее. Ну создам я эту коллекцию коллекций, а ведь мне потом надо будет сохранить данные которые она содержит в таблицу БД. И что я тут буду делать?  smile 

Ведь что получается:
- класс содержит значения code, description и value;
- коллекция этих классов определяет одну строку будущей таблицы, где description=название колонки(поля), 
  а value=соответственно значение;
- коллекция коллекций соответственно составляет всю таблицу.

А там еще одни "грабли" нарисовались: это ID строки, которое в классе не прописывается, а по идее должно быть указано как свойство коллекции классов.

И вот передомной встал разумный вопрос: а как мне доставать нужные мне данные из этой коллекции коллекций.
Ну там с коллекцией классов более мение понятно. Есть свойство индекс, оно определяет класс в коллекции и далее свойство класса  value.
 
Код

 variable = mCol(index).value
 columnName = mCol(index).description

так до этой коллекции еще нужно добраться из старшей коллекции. И тут я теряюсь, как невеста на смотринах.  smile 

PS если это не выходит за рамки темы, то может обсудим.  smile 


--------------------
Крепко жму горло, искренне ваш Thomas. (С)vingrad
Некоторые сорта флоры буквально за одно мгновение превращают нас в фауну!
Проблемы негров шерифа не волнуют.
PM MAIL   Вверх
mr.DUDA
Дата 21.7.2007, 10:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


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

Репутация: 110
Всего: 232



Ничего не понимаю. Почему класс - не строка таблицы а поле ? Зачем 2 коллекции, если достаточно одной (коллекции объектов-строк) ? Последний вопрос на засыпку - DataTable / DataRow смотрели ?


--------------------
user posted image
PM MAIL WWW   Вверх
thomas
Дата 21.7.2007, 11:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доцент... почти
***


Профиль
Группа: Завсегдатай
Сообщений: 1385
Регистрация: 3.10.2006
Где: " Сказочное королевство"

Репутация: 6
Всего: 65



mr.DUDA, 
Цитата

Последний вопрос на засыпку - DataTable / DataRow смотрели ? 

Это я смотрел и в принцыпе люблю.

Просто, в данной ситуации, меня попутал работодатель. Я тут программку мучаю для создания XML из xls. Я, как мне и привычно, работу выполнил используя DataSet и DataBase. Но так как входные данные поступают различного вида(ко-во и название колонок в таблицах), а исходящий XML должен содержать строго определенные элементы таблицу в DataBase приходиться создавать динамически при этом проверяется 23 чекбокса (должен этот элемент отображаться в исходящем XML или нет). Поэтому программа работает медленно. Ну данный товарищ и настоял на использовании классов.
И тут и возникли вот такие "интересные" конструкции. Идти пришлось с конца, т.е. от XML элементов и их аттрибутов.
Вот кусок XML который нужно заполнять их входящих в виде xls данных:
Код

<Items>
      <Item seq="1" lang="fr" midNum="10123453332521" psCode="12" priority="P">
        <Comps>
          <Comp code="9" value="Rue de l'eglise"/>
          <Comp code="13" value="123"/>
          <Comp code="15" value="1000"/>
          <Comp code="16" value="Bruxelles"/>
        </Comps>
      </Item>
      <Item seq="2" lang="nl" midNum="10123453332522" psCode="12" priority="P">
        <Comps>
          <Comp code="9" value="Koningsstraat"/>
          <Comp code="13" value="10"/>
          <Comp code="15" value="1000"/>
          <Comp code="16" value="Brussel"/>
        </Comps>
      </Item>
      <Item seq="3" lang="nl" midNum="10123453332523" psCode="12" priority="P">
        <Comps>
          <Comp code="9" value="Belliardstraat"/>
          <Comp code="13" value="105"/>
          <Comp code="15" value="1000"/>
          <Comp code="16" value="Brussel"/>
        </Comps>
      </Item>
    </Items>

И тут получается класс описывает элемент Comp = <Comp code="9" value="Belliardstraat"/>
Таких элементов может быть 23 ( они выведены в отдельную таблицу в БД -> code и description(улица, номер дома, страна, почтовый индекс и т.д. и т.п.))

Коллекция этих классов описывает адрес в целом. (адресов порядка 20-40 тысяч)
Код

<Item seq="3" lang="nl" midNum="10123453332523" psCode="12" priority="P">
        <Comps>
          <Comp code="9" value="Belliardstraat"/>
          <Comp code="13" value="105"/>
          <Comp code="15" value="1000"/>
          <Comp code="16" value="Brussel"/>
        </Comps>
      </Item>

Идентификатором данного адреса будет аттрибут элемента Item --> midNum="10123453332523"

Ну и соответственно коллекция коллекций будет содержать все адреса которые внесены в данный XML.

И вот я вижу что такой подход не очень правильный.

Да еще раз вернусь к таблице элементов адреса. Там дано 23 кода и то что этот код означает. В каждом отдельном XML комбинация этих кодов может быть различна. В данном примере их 4-ре ->9, 13, 15, 19. Потому как во входном xls были такие колонки. А в другом xls таблица другого содержания и коды будут 91, 15 ,16 или  7, 9, 12, 15, 16.
И заказчик говорит что, кол-во кодов может со временем поменяться. Потому их и вывели в отдельную таблицу в БД. Если что-то измениться, то достаточно будет внести изменения в эту таблицу и программа продолжает работать. Про это я спрашивал тут.
Ну это уже отступление от темы.
 

Это сообщение отредактировал(а) thomas - 21.7.2007, 11:42


--------------------
Крепко жму горло, искренне ваш Thomas. (С)vingrad
Некоторые сорта флоры буквально за одно мгновение превращают нас в фауну!
Проблемы негров шерифа не волнуют.
PM MAIL   Вверх
mr.DUDA
Дата 21.7.2007, 13:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


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

Репутация: 110
Всего: 232



Вот пример как юзать XML с классами, может натолкнёт на какие-нибудь мысли:
Код
using System;
using System.Collections.Generic;
using System.Xml;
using System.Xml.Serialization;
using System.IO;


public class DocRoot
{
    [XmlArray]
    public List<Item> Items = new List<Item>();
}

public class Item
{
    [XmlAttribute]
    public string seq;
    [XmlAttribute]
    public string lang;
    [XmlAttribute]
    public string midNum;
    [XmlAttribute]
    public string psCode;
    [XmlAttribute]
    public string priority;

    [XmlArray]
    public List<Comp> Comps = new List<Comp>();
}

public class Comp
{
    [XmlAttribute]
    public string code;
    [XmlAttribute]
    public string value;
}

class Program
{
    static void Main()
    {
        string xml = @"<DocRoot><Items>
      <Item seq=""1"" lang=""fr"" midNum=""10123453332521"" psCode=""12"" priority=""P"">
        <Comps>
          <Comp code=""9"" value=""Rue de l'eglise""/>
          <Comp code=""13"" value=""123""/>
          <Comp code=""15"" value=""1000""/>
          <Comp code=""16"" value=""Bruxelles""/>
        </Comps>
      </Item>
      <Item seq=""2"" lang=""nl"" midNum=""10123453332522"" psCode=""12"" priority=""P"">
        <Comps>
          <Comp code=""9"" value=""Koningsstraat""/>
          <Comp code=""13"" value=""10""/>
          <Comp code=""15"" value=""1000""/>
          <Comp code=""16"" value=""Brussel""/>
        </Comps>
      </Item>
      <Item seq=""3"" lang=""nl"" midNum=""10123453332523"" psCode=""12"" priority=""P"">
        <Comps>
          <Comp code=""9"" value=""Belliardstraat""/>
          <Comp code=""13"" value=""105""/>
          <Comp code=""15"" value=""1000""/>
          <Comp code=""16"" value=""Brussel""/>
        </Comps>
      </Item>
    </Items></DocRoot>";

        // К примеру, я десериализую из строки. А можно из любого Stream-а.
        XmlSerializer ser = new XmlSerializer(typeof(DocRoot));
        StringReader reader = new StringReader(xml);

        // десериализация, получаем объект
        DocRoot obj = (DocRoot)ser.Deserialize(reader);

        // работаем с объектом, как нам нужно. Например это:
        Item itemNew = new Item();
        Comp compNew = new Comp();
        compNew.code = "a"; compNew.value = "b";
        itemNew.Comps.Add(compNew);
        itemNew.lang = "ru";
        obj.Items.Add(itemNew);

        // сохраняем обратно в XML
        StringWriter writer = new StringWriter();
        ser.Serialize(writer, obj);

        xml = writer.GetStringBuilder().ToString();
    }
}


Единственное, что нужен "корневой объект" (DocRoot в примере).


--------------------
user posted image
PM MAIL WWW   Вверх
thomas
Дата 21.7.2007, 14:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доцент... почти
***


Профиль
Группа: Завсегдатай
Сообщений: 1385
Регистрация: 3.10.2006
Где: " Сказочное королевство"

Репутация: 6
Всего: 65



mr.DUDA, 
Спасибо.
Очень интересно. Думаю в дальнейшем мне это очень пригодиться.
Но к данному случаю не очень подходит.
Так как приведенный выше фрагмент XML является конечным продуктом(output), отправляемым программой для обработки на почту.
А входным(input) является файл Excel с произвольной таблицей адресов, получаемый от клиента. 

Первый шаг программы это прочитать xls, поместить данные в таблицу ДатаСет и выдать список наименований колонок имеющейся таблицы.(помещается в комбобокс)
Второй шаг создание таблицы в БД со стандартными названиями колонок и заполнение ее данными из таблицы ДатаСет, плюс добавить колонку с PreSortingCode.
Третий шаг чтение данных из БД и запись  их в XML.

Все это я уже в принципе реализовал. Просто заказчику не понравилось что таблица в БД заполняется данными из ДатаСет построчно и слишком медленно. И ему подумалось что если вместо таблицы в ДатаСет использовать коллекцию классов будет быстрее.

Вот я и начал "мутить" с классами.

Хотя мне кажеться быстрее все равно не будет. Таблицу в БД иначе как командой INSERT INTO не заполнить. А она выполняется построчно. Или я не прав? 
И второе какая в принципе разница откуда брать значения для ввода в XML из таблицы ДатаСет(БД) или из коллекции классов. То и другое в памяти.

Вроде простенькая программа, а столько подводных камней и течений.  smile  В общем учиться, учиться и еще раз учиться. Набираться опыта, так сказать. И прислушиваться к советам более мудрых товарисчей  smile 

Вообще самый главный тормоз этой программы - это динамическое создание команды INSERT INTO с переопределением названий колонок ( каждый раз надо проверить состояние 23 чекбоксов) и построчное заполнение данными таблицы в БД.
Лучше бы этого не делать, но нужно сохранить данные которые были отправлены. Если после контроля на почте придет файл с ошибками адресов, то редактировать эти ошибки проще и удобнее в таблице БД.

ЗЫ не знаю есть ли смысл дальнейшего разговора о коллекции коллекций классов или тему можно закрывать.  smile  

Это сообщение отредактировал(а) thomas - 21.7.2007, 14:47


--------------------
Крепко жму горло, искренне ваш Thomas. (С)vingrad
Некоторые сорта флоры буквально за одно мгновение превращают нас в фауну!
Проблемы негров шерифа не волнуют.
PM MAIL   Вверх
Idsa
Дата 22.7.2007, 00:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2086
Регистрация: 5.12.2006
Где: Томск

Репутация: 14
Всего: 62



Не уверен, что правильно понял задачу... но всё же:
Цитата(thomas @  21.7.2007,  14:46 Найти цитируемый пост)
Первый шаг программы это прочитать xls, поместить данные в таблицу ДатаСет и выдать список наименований колонок имеющейся таблицы.(помещается в комбобокс)

Насколько я понял, на этом этапе используется 1 таблица. Тогда лучше использовать не DataSet, а DataTable.

Цитата(thomas @  21.7.2007,  14:46 Найти цитируемый пост)
Хотя мне кажеться быстрее все равно не будет. Таблицу в БД иначе как командой INSERT INTO не заполнить. А она выполняется построчно. Или я не прав? 

Здесь можно только посоветовать создать один пакет команд (записать все insert'ы в одну строку, разделив их точкой с запятой).

Цитата(thomas @  21.7.2007,  14:46 Найти цитируемый пост)
Третий шаг чтение данных из БД и запись  их в XML.

Вот этот этап можно неплохо оптимизировать. Как он у тебя реализован сейчас?


--------------------
Мой блог: alexidsa.blogspot.com
PM MAIL ICQ   Вверх
thomas
Дата 23.7.2007, 00:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доцент... почти
***


Профиль
Группа: Завсегдатай
Сообщений: 1385
Регистрация: 3.10.2006
Где: " Сказочное королевство"

Репутация: 6
Всего: 65



Цитата(Idsa @ 21.7.2007,  22:08)

Цитата(thomas @  21.7.2007,  14:46 Найти цитируемый пост)
Третий шаг чтение данных из БД и запись  их в XML.

Вот этот этап можно неплохо оптимизировать. Как он у тебя реализован сейчас?

Привет.
Готовая таблица адресов из БД помещается в таблицу ДС.
Считываю построчно данные отуда и при помощи XmlTextWriter() записываю и сохраняю XML-файл
Сейчас программа пишет файл на 32920 адресов за 27 сек. (WinXP SP2, CPU 1,4 Ггц)
Размер файла 9,59Мб.

По мне так нормально.  smile 

А вот записать эти 32920 строк в БД из ДС нужно 42 минуты.  smile 


Это сообщение отредактировал(а) thomas - 23.7.2007, 00:08


--------------------
Крепко жму горло, искренне ваш Thomas. (С)vingrad
Некоторые сорта флоры буквально за одно мгновение превращают нас в фауну!
Проблемы негров шерифа не волнуют.
PM MAIL   Вверх
sTa1kEr
Дата 23.7.2007, 00:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


9/10 программиста
***


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

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



Цитата(Idsa @  22.7.2007,  00:08 Найти цитируемый пост)
Здесь можно только посоветовать создать один пакет команд (записать все insert'ы в одну строку, разделив их точкой с запятой).

Подождите, а что мешает в данном случае создать insert'ы с готовым набором строк - это буде намного быстрее, чем на одну строку по запросу.
Цитата(thomas @  23.7.2007,  00:06 Найти цитируемый пост)
Привет.
Готовая таблица адресов из БД помещается в таблицу ДС.

Зачем читать в ДС? DataSet-ы - это в первую очередь пустая трата ресурсов на удобную выборку (или биндинг), в данном случае абсалютно не нужна. Почему, читая базу, сразу не писать в XML?

И еще, может не совсем в тему, но все же попробуйте использовать Altova MapForce для генерации XML из БД.
PM MAIL   Вверх
thomas
Дата 23.7.2007, 00:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доцент... почти
***


Профиль
Группа: Завсегдатай
Сообщений: 1385
Регистрация: 3.10.2006
Где: " Сказочное королевство"

Репутация: 6
Всего: 65



sTa1kEr, 
Цитата

Зачем читать в ДС? 
 А по ТТЗ "юзверь" должен видеть что он там насоздавал. Потому таблица и помещается в память и отображается на форме. Плюс, я думаю, гораздо рациональнее прочитать всю таблицу за одно подключение к БД, чем при чтении новой строки подключаться по-новой. XML нужно писать в "один поток", а он не простой, там есть еще разделы до адресов, а адреса пишутся в цикле.  Туже и ответ на вопрос. 
Цитата
Почему, читая базу, сразу не писать в XML?


Если интересно вот код:
Код

Private Sub MailingRequest(ByVal fileName As String, ByVal mode As String)
        lblRecords.Text = ""
        Dim m_senderId As String = ConfigurationManager.AppSettings("CustomerID")
        Dim m_accountId As String = ConfigurationManager.AppSettings("AccountID")
        Dim m_myLastName As String = "" ' все что ниже тоже из APP.CONFIG
        Dim m_myFirstName As String = ""
        Dim m_myEmail As String = ""
        Dim m_myLang As String = ""
        Dim m_myPhone As String = ""
        Dim m_myFax As String = ""
        Dim m_myMobile As String = ""
        Dim m_fileId As String = txtFileId.Text
        Dim m_rowId As String = ""
        Dim m_pscode As String = ""
        Dim loper As Integer = 0
        Dim wr As New XmlTextWriter(fileName, System.Text.Encoding.GetEncoding("ISO-8859-1"))

        With wr
            .WriteStartDocument()
            .WriteStartElement("MailingRequest")

            .WriteStartElement("Context")
            'attributen
            .WriteAttributeString("requestName", "MailingRequest")
            .WriteAttributeString("dataset", "M037_MID")
            .WriteAttributeString("sender", m_senderId) 'keuze uit APP.CONFIG!!!
            .WriteAttributeString("receiver", "MID")
            .WriteAttributeString("version", "0100")
            .WriteEndElement() '"Context"

            .WriteStartElement("Header")
            'attributen 
            .WriteAttributeString("customerId", m_senderId) 'keuze uit APP.CONFIG!!!
            .WriteAttributeString("accountId", m_accountId) 'keuze uit APP.CONFIG!!!
            .WriteAttributeString("mode", mode) 'P=production; C=certification; T=test voorzien om te vervangen door keuze in GUI !!!

            .WriteStartElement("Files")

            .WriteStartElement("RequestProps")
            'attribute 
            .WriteAttributeString("customerFileRef", m_fileId) ' input vanuit GUI!!!
            .WriteEndElement() '"RequestProps"
            .WriteEndElement() '"Files"
            .WriteEndElement() '"Header"

            .WriteStartElement("MailingCreate")
            'attributen vaan MailingCreate
            .WriteAttributeString("seq", "1")
            .WriteAttributeString("mailingRef", m_fileId) ' input vanuit GUI!!!

            .WriteStartElement("Contacts")

            .WriteStartElement("Contact")
            'attribute van ons (gebruiker) <-- !!! Uit APP.CONFIG !!! -->
            .WriteAttributeString("seq", "1")
            .WriteAttributeString("firstName", m_myFirstName)
            .WriteAttributeString("lastName", m_myLastName)
            .WriteAttributeString("e-mail", m_myEmail) 'NOODZAKELIJK !!! 
            .WriteAttributeString("lang", m_myLang)
            .WriteAttributeString("phone", m_myPhone)
            .WriteAttributeString("fax", m_myFax)
            .WriteAttributeString("mobile", m_myMobile)
            .WriteEndElement() '"Contact"
            .WriteEndElement() '"Contacts

            .WriteStartElement("Items")
            For Each dr As DataRow In db.myDs.Tables(tableName).Rows
                m_rowId = dr("RowId").ToString()
                m_pscode = dr("psCode").ToString()
                loper += 1
                '======== БЛОК ниже выполняется в цикле =======================
                .WriteStartElement("Item")
                'attributen van Item = adres
                .WriteAttributeString("seq", loper)
                .WriteAttributeString("lang", "nl") 'nl, fr, de. Voorzien om te vervangen door keuze in GUI
                .WriteAttributeString("midNum", m_rowId)
                .WriteAttributeString("psCode", m_pscode)
                .WriteAttributeString("priority", "p") '"P"-priority, "NP"-non prior. 

                .WriteStartElement("Comps")
                For i As Int16 = 0 To dgvComponents.Rows.Count - 1 'читается таблица компонентов адреса
                    Dim checkCell As DataGridViewCheckBoxCell = dgvComponents.Rows(i).Cells(1)
                    Dim textCell As DataGridViewTextBoxCell = dgvComponents.Rows(i).Cells(0)
                    Dim codeCell As DataGridViewTextBoxCell = dgvComponents.Rows(i).Cells(4)
                    If checkCell.Value = "true" Then ' если компонент соответствует входящим данным, то он пишется
                        .WriteStartElement("Comp")
                        .WriteAttributeString("code", codeCell.Value)
                        .WriteAttributeString("value", dr(textCell.Value).ToString())
                        .WriteEndElement() '"Comp"
                    End If
                Next
                .WriteEndElement() '"Comps"
                .WriteEndElement() '"Item"
                '======== БЛОК выше выполняется в цикле =======================
                lblRecords.Text = loper.ToString()
            Next

            .WriteEndElement() '"Items"

            .WriteStartElement("ItemCount")
            .WriteAttributeString("value", loper.ToString()) 
            .WriteEndElement() '"ItemCount"
            .WriteEndElement() '"MailingCreate"
            .WriteEndElement() '"MailingRequest"
            .WriteEndDocument()
            .Flush()
            .Close()
        End With
    End Sub


Вот такая маленькая процедурка.  smile 


--------------------
Крепко жму горло, искренне ваш Thomas. (С)vingrad
Некоторые сорта флоры буквально за одно мгновение превращают нас в фауну!
Проблемы негров шерифа не волнуют.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

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


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

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


 




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


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

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