[00:46:02] <_valexey_> vlad2: там у них рядом еще тема появилась про указатели на статические переменные
[00:46:16] <_valexey_> Как раз отчем мы тут говорили про оберон 7
[13:01:03] <geniepro> код Темиргалеева:
                 a.date.year := files.modified.year;
                 a.date.month := files.modified.month;
                 a.date.day := files.modified.day;
                 a.time.hour := files.modified.hour;
                 a.time.minute := files.modified.minute;
                 a.time.second := files.modified.second;

Такой (невыровненный) код затрудняет его понимание и делает более сложной отладку...
[14:12:32] <geniepro> http://www.yandex.ru/?defskin=anime&promo=sub
лол
[14:12:59] <valexey> няшненько
[14:14:43] <valexey> geniepro: а что ужасного в том коде?  ну, кроме того, что он неоправданно низкоуровневый
[14:15:19] <geniepro> он должен быть таким хотя бы:
                 a.date.year   := files.modified.year;
                 a.date.month  := files.modified.month;
                 a.date.day    := files.modified.day;
                 a.time.hour   := files.modified.hour;
                 a.time.minute := files.modified.minute;
                 a.time.second := files.modified.second;

[14:15:57] <valexey> ну, ты ж понимаешь что ни тут ни в ББ не используется моноширинный шрифт. так что я разницы не вижу :-)
[14:16:04] <valexey> то есть глазами вот сейчас не увидел
[14:16:46] <valexey> а в ББ он мог быть выровнен не пробелами и не табами, а ихней линейкой
[14:19:40] <valexey> "Дело вот в чём: на Обероне возможно разрабатывать высоконагруженные приложения, вообще не использующие сборку мусора. Т.е. сборщик просто отключен. Объекты держатся в пулах - берутся из них и в них возвращаются."
[14:19:51] <valexey> Вау! Мегаособенность оберона!!1
[14:19:59] <valexey> Интересно вот, в каком языке так НЕЛЬЗЯ?
[14:20:29] <valexey> Ну, разве что в хаскелле ;-) Но там и проблем как бэ нет со сборкой мусора особых.
[14:34:46] <geniepro> valexey> ну, ты ж понимаешь что ни тут ни в ББ не используется моноширинный шрифт. так что я разницы не вижу :-)
у меня тут шрифт моноширинный, и на форуме, куда он этот код выложил -- тоже моноширинный...
так что разница очевидная
[14:35:57] <geniepro> когда все эти a.time. и files.modified. выровнены по вертикали -- глаз радуется )))
[14:37:06] <valexey> а когда a.date := files.modified; (* глаз радуется еще сильнее *)
[14:41:21] <valexey> но видимо язык такого не позволяет  ;-)
[14:48:02] <geniepro> я вот вчера шокирован был -- походу в сишарпе низзя модифицировать поля структуры!!! по крайней мере мне компилятор не даёт (((
а мне там не хочется класс использовать...
[14:48:26] <kemiisto> ХВАТИТ ЭТО ТЕРПЕТЬ!
[14:49:33] <valexey> geniepro: что значит нельзя? не понял :-)
[14:49:40] <geniepro> что именно? о_О
[14:49:46] <valexey> пример в студию!
[14:50:01] <geniepro> что именно трепеть я имел в виду )))
[14:56:00] <valexey> проверил - у меня все присваивается
[14:59:16] <geniepro>        [Serializable]
       public struct TestStruct
       {
           public int    Field1;
           public string Field2;

           public TestStruct(int a, string b)
           {
               Field1 = a;
               Field2 = b;
           }
       }

       public TestStruct test { get; private set; }

       public MainForm()
       {
           test = new TestStruct(123, "abc");
           test.Field1 = 0;     // ашыпка -- Error 1 Cannot modify the return value of 'ххх.MainForm.test' because it is not a variable
           test.Field2 = "zxc"; // аналогично
       }
[14:59:46] <valexey> ололо
[14:59:49] <valexey> ща попробую
[14:59:51] <geniepro> чо?
[15:00:09] <geniepro> { get; private set; } делает переменную пропиртей и усё!
[15:02:37] <geniepro> главное, если вместо struct написать class -- то всё компилируется
[15:03:35] <valexey> без геттера-сеттера все работает
[15:03:53] <valexey> то есть убиваем public TestStruct test { get; private set; }
[15:03:55] <valexey> и все
[15:05:08] <valexey> геттер-сеттер похоже хочет исключительно референсы
[15:05:34] <valexey> то есть геттер-сеттер оперирует ссылкой а не значением
[15:05:58] <valexey> переменная класса это всегда ссылка
[15:06:01] <valexey> поэтому там все хорошо
[15:06:23] <geniepro> я хочу, что бы переменная была наружу видна только рид-онли.
и это не отвечает на вопрос -- почему с классом можно, а со структурой нельзя!
[15:06:33] <valexey> я только что ответил
[15:06:41] <valexey> аналогично нельзя и просто с int
[15:06:48] <valexey> и с любым Value-type'ом
[15:07:02] <geniepro> у просто int нет полей
[15:07:20] <valexey> int fff {get; set;}
[15:07:22] <geniepro> ведь всё переменную изменить-то можно, нельзя менять её поля
[15:07:24] <valexey> fff = 42; // облом
[15:07:30] <geniepro> странно
[15:07:35] <valexey> ничего странного
[15:08:34] <geniepro> нет никакого облома!!!111
[15:08:42] <geniepro> компилируется!!!
[15:09:02] <valexey> да. это у меня руки кривые
[15:09:38] <geniepro> да и если бы был такой облом -- я бы давно уже на него наткнулся, несколько лет назад
[15:09:53] <geniepro> а вот со структурой наткнулся тока вчера
[15:10:21] <geniepro> обычно классы использую, но там нежелательно -- утечки памяти в ConcurrentQueue
[15:11:00] <valexey> ща подумаю
[15:15:22] <valexey> гм. я с точки зрения языка не вижу способа разрешения проблемы. то есть с точки зрения создателя языка
[15:15:43] <valexey> set - принимает на вход ЦЕЛОЕ значение, то есть всю структуру целиком
[15:16:45] <valexey> то есть выход один - как-то обойти сеттер
[15:17:57] <valexey> не обходя сеттер в твоем случае это будет: test = new TestStruct(123, "abc"); test = new TestStruct(0, "zxc");
[15:23:52] <geniepro> ну вот так я и делаю ))))
[15:24:43] <geniepro> если смотреть на это как на присваивание ерез setter -- то да, логично всю структуру сразу менять. но неудобно же!
[15:26:48] <valexey> это легко обходится
[15:27:12] <valexey> в две строчки
[15:29:05] <geniepro> как?
[15:29:30] <geniepro> отдельный метод, который выдаёт значение?
[15:30:12] <valexey> private TestStruct test_;
public TestStruct test { get {return test_;} private set {test_ = value;} }

public MainForm()
{
   test_ = new TestStruct(123, "abc");
   test_.Field1 = 0;
   test_.Field2 = "zxc";
}
[15:30:41] <valexey> test же это не структура и не значение. это пропертя
[15:31:35] <valexey> все. я работать.
[15:32:45] <geniepro> public TestStruct test { get {return test_;} private set {test_ = value;} }
а эта строка зачем? она же не используется...
[15:54:38] <geniepro> макинтошнег о_О
[16:00:39] <geniepro> http://www.vesti.ru/doc.html?id=709271

[16:03:34] <geniepro> ничто не ново.
в древней греции как-то прокатилась олна самоубийств среди молодых девушек.
оказалось, им понравилось как хоронят этих самоубийц -- с пышной помпой. и им захотелось также...
тогда власти запретили так хорнить самоубийц -- самоубийства резко уменьшились...
[16:24:52] <geniepro> всё-таки как уныл этот сишарп после хаскелла или хотя бы эфшарпа... кодю и плююся от тонны лишней работы...
[16:26:20] <geniepro> хотя оберон ещё более унылый...
[16:26:41] <geniepro> в сишарпе хотя бы есть возможность удобной инициализации структур и массивов...
[16:28:34] <romiras> Приветствую всех завсегдатаев
[16:28:55] <geniepro> ку
[16:29:01] <geniepro> как дела?
[16:29:13] <geniepro> что случилось в наих лесах?
[16:29:22] <geniepro> наших*
[16:29:31] <romiras> Вот, начальство отсутствует - решил початиться немного
[16:30:07] <romiras> Да, а что с лесом-то?
[16:30:24] <geniepro> с каким лесом?
[16:30:30] <romiras> Редеет?
[16:30:49] <romiras> сам писал ведь про лес
[16:30:54] <geniepro> это фраза из варкрафта -- когда щёлкаешь по рогатой кентаврийке-дриаде она эту фразу говорит...
[16:31:23] <romiras> :)
[16:32:04] <romiras> > в сишарпе хотя бы есть возможность удобной инициализации структур и массивов...
а что, так часто есть в этом необходимость?
[16:33:47] <geniepro> постоянно
[16:34:30] <romiras> а зачем константы держать в коде?
[16:35:26] <romiras> кроме временных вариантов - типа написания скриптов
[16:54:06] <romiras> Знает ли кто-нибудь из вас какие-нибудь универсальные форматы-контейнеры данных и с их описанием (по подобию TIFF, AVI, но более общие)?
Чтобы независимо от данных был (текст, изображение, звук, видео и специальные форматы данных). Ради любопытства спрашиваю.
[16:54:41] <geniepro> иногда это не совсем константы, а имена функций, например. массив функций удобнее инициализировать специальным конструктором массивов, чем типа
arr[0] = foo1;
arr[1] = foo1;
...
arr[x] = foo1;
[16:55:33] <geniepro> >Знает ли кто-нибудь из вас какие-нибудь универсальные форматы-контейнеры данных и с их описанием (по подобию TIFF, AVI, но более общие)?
что-то типа mkv, ogg?
[16:56:23] <geniepro> http://ru.wikipedia.org/wiki/MPEG-4_Part_14
[16:57:06] <romiras> >что-то типа mkv, ogg?
чтобы в заголовке метаданных можно было указать кодек, а затем можно было бы использовать любой поток даннных.
[16:58:17] <geniepro> если совсем любой поток данных, то возможно свой вариант контейнера придётся придумать... или доработать какой-нить открытый вариант
[16:58:54] <romiras> Чтобы, захотел - картинку. Захотел - звук. Или даже какой-нибудь DWG  или любой другой специальный формат.
[16:59:49] <romiras> Даже Word DOC :)
[17:01:00] <geniepro> о! я знаю ответ!! активные документы блекбокса!!!
[17:01:17] <romiras> В итоге программа, считывающая этот файл, по кодеку могла бы (де)кодировать данные.
[17:01:45] <geniepro> по-моему это OLE и прочее виндовозное давно известное...
[17:02:56] <romiras> > arr[0] = foo1;
набор таких операторов тоже напрашивается на автоматизацию.
[17:03:33] <romiras> > активные документы блекбокса!!!
[17:03:54] <romiras> Гм ...
[17:48:38] <valexey> geniepro: эта строчка конечно же используется
[17:48:53] <valexey> она нужна для ограничения readonly для клиентов данного класса
[17:50:02] <valexey> romiras: матрешка
[17:50:15] <valexey> а, ну про mkv уже сказали
[18:01:34] <valexey> romiras: вообще, то что ты описываешь - это обычный TLV
[18:01:40] <valexey> как его не маскируй :-)
[18:01:54] <valexey> частным случаем TLV являются документы ББ :-)
[18:03:50] <valexey> ну и mkv тоже
[18:10:27] <romiras> TLV - протокол, что-ли?
[18:14:50] <romiras> А не ограничена ли матрёшка только мультимедиа?
[18:16:33] <valexey> romiras: Type Length Value
[18:30:18] <valexey> то есть тупо вначале скажем 4 байта типа записи, потом длина запси (4 байта) а потом уже тушка
[18:30:32] <valexey> если этот тип не понимаешь, можешь спокойно его игнорировать
[18:31:03] <valexey> mkv в принципе не ограничена мультимедией. просто обычно оно используется для мультимедии :-) равно как и SIP не ограничен VoIP'ом
[18:31:24] <valexey> там вообще про VoIP ни слова :-)
[18:31:31] <valexey> но применяется в основном только в VoIP'e
[18:35:00] <romiras> Было бы класно, если бы в ПО использовалось очень ограниченное кол-во форматов. Допустим, 3-5 форматов и уйма кодеков к ним.
[18:35:32] <romiras> А то поразвелось форматов. И используются убогие расширения файлов.
[18:36:30] <valexey> гм. а где расширения используются? у меня например не используются :-)
[18:36:43] <valexey> почти каждый формат бинарный вначале файла имеет сигнатуру
[18:36:56] <valexey> считай что это и есть его Тип. Длину файла ты знаешь
[18:37:10] <valexey> Таким образом дефакто мы и так имеем глобальный TLV
[18:37:57] <romiras> если автор формата хочет, то он добавляет сигнатуру. А так - было бы обязательно. Сигнатура кодека и всё. А имеешь ли кодек или нет - твоя проблема.
[18:38:30] <valexey> а где нет сигнатуры? она почти везде есть :-)
[18:38:59] <valexey> по крайней мере в тех форматах которые создают не маздаепоклонники ;-)
[18:40:20] <romiras> А как знать, что открывая файлс расширением TXT, он является текстовым, вообще? Может, там зашифровано всё.
[18:43:07] <romiras> А ещё как знать, что он в кодировке  UTF-8, а не UTF-16 или KOI8-U?
[19:03:52] <valexey> какая именно там кодировка - там выставляется вообще то. по стандарту
[19:04:03] <valexey> а при чем тут расширение вообще? кто на них смотрит? ;-)