All streams
Search
Write a publication
Pull to refresh
32
0
Алексей @pieceofsummer

User

Send message
Вообще неправильный подход затачивать софт под compatibility layer, а не наоборот. Но, как видится, костылей в этом топике не признают, поэтому мы сейчас нахватаемся минусов :)
У меня на днях после установки клиентских компонентов оракла половина студии вдруг стала русской. Локализатор, мать его… :(
if (GetWineAvail())
{
  ShowMessage("костыли вы мои, костыли...");
}
else
{
  ShowMessage("ну слава яйцам, пронесло!");
}
Помимо табов, очень не хватает списка сохраненных соединений в джамплисте.
SID системы всегда равен S-1-5-18.
Советую взглянуть на список известных SID-ов тут: support.microsoft.com/kb/243330
А у меня есть в семерке. Но читать константу откуда-то — это все равно не круто.
Не вижу помех забить эту константу в батник при записи пути в реестр.
Хотя, если честно, не вижу смысла узнавать SID системы — он ведь является константой :)
Ну раз уж извращаться, так хоть по-человечески:

for /d %i in (%systemroot%\system32\appmgmt\S-*) do echo %~ni
интересно стало: а COM только после повышения привилегий? Или просто так?
Тогда будет реклама в 64-битном IE? =)

Когда в свое время интересовался вопросом, то IE был единственным 64-битным браузером. Сейчас есть другие?
Причем, случай с кейсом будет достаточно редок.
Buffer.BlockCopy не умеет приводить типы, так что для перевода из байтов в чары от него пользы мало.

А в Silverlight unsafe-инструкции запрещены, насколько я помню.
Вероятно, потому, что боксирует байты, приводит к IConvertible и переводит в чары :)
Для 1251 примерно такой изврат выходит, дальше думать лениво :)
    public static string GetString(byte[] bytes, int offset, int length)
    {
      if (bytes == null)
        throw new ArgumentNullException("bytes");
      if (offset < 0 || offset >= bytes.Length)
        throw new ArgumentException("offset");
      if (length < 0 || offset + length > bytes.Length)
        throw new ArgumentException("length");

      var sb = new char[length];
      length += offset;
      
      for (var i = offset; i < length; i++)
      {
        byte b = bytes[i];
        if (b < 128)
        {
          sb[i] = (char)b;
        }
        else if (b >= 192)
        {
          sb[i] = (char)(848 + b);
        }
        else
        {
          switch (b)
          {
            case 128: sb[i] = '\u0402'; break;
            case 129: sb[i] = '\u0403'; break;
            case 130: sb[i] = '\u201A'; break;
            case 131: sb[i] = '\u0453'; break;
            case 132: sb[i] = '\u201E'; break;
            case 133: sb[i] = '\u2026'; break;
            case 134: sb[i] = '\u2020'; break;
            case 135: sb[i] = '\u2021'; break;
            case 136: sb[i] = '\u20AC'; break;
            case 137: sb[i] = '\u2030'; break;
            case 138: sb[i] = '\u0409'; break;
            case 139: sb[i] = '\u2039'; break;
            case 140: sb[i] = '\u040A'; break;
            case 141: sb[i] = '\u040C'; break;
            case 142: sb[i] = '\u040B'; break;
            case 143: sb[i] = '\u040F'; break;
            case 144: sb[i] = '\u0452'; break;
            case 145: sb[i] = '\u2018'; break;
            case 146: sb[i] = '\u2019'; break;
            case 147: sb[i] = '\u201C'; break;
            case 148: sb[i] = '\u201D'; break;
            case 149: sb[i] = '\u2022'; break;
            case 150: sb[i] = '\u2013'; break;
            case 151: sb[i] = '\u2014'; break;
            case 152: sb[i] = '\u0098'; break;
            case 153: sb[i] = '\u2122'; break;
            case 154: sb[i] = '\u0459'; break;
            case 155: sb[i] = '\u203A'; break;
            case 156: sb[i] = '\u045A'; break;
            case 157: sb[i] = '\u045C'; break;
            case 158: sb[i] = '\u045B'; break;
            case 159: sb[i] = '\u045F'; break;
            case 160: sb[i] = '\u00A0'; break;
            case 161: sb[i] = '\u040E'; break;
            case 162: sb[i] = '\u045E'; break;
            case 163: sb[i] = '\u0408'; break;
            case 164: sb[i] = '\u00A4'; break;
            case 165: sb[i] = '\u0490'; break;
            case 166: sb[i] = '\u00A6'; break;
            case 167: sb[i] = '\u00A7'; break;
            case 168: sb[i] = '\u0401'; break;
            case 169: sb[i] = '\u00A9'; break;
            case 170: sb[i] = '\u0404'; break;
            case 171: sb[i] = '\u00AB'; break;
            case 172: sb[i] = '\u00AC'; break;
            case 173: sb[i] = '\u00AD'; break;
            case 174: sb[i] = '\u00AE'; break;
            case 175: sb[i] = '\u0407'; break;
            case 176: sb[i] = '\u00B0'; break;
            case 177: sb[i] = '\u00B1'; break;
            case 178: sb[i] = '\u0406'; break;
            case 179: sb[i] = '\u0456'; break;
            case 180: sb[i] = '\u0491'; break;
            case 181: sb[i] = '\u00B5'; break;
            case 182: sb[i] = '\u00B6'; break;
            case 183: sb[i] = '\u00B7'; break;
            case 184: sb[i] = '\u0451'; break;
            case 185: sb[i] = '\u2116'; break;
            case 186: sb[i] = '\u0454'; break;
            case 187: sb[i] = '\u00BB'; break;
            case 188: sb[i] = '\u0458'; break;
            case 189: sb[i] = '\u0405'; break;
            case 190: sb[i] = '\u0455'; break;
            case 191: sb[i] = '\u0457'; break;
          }
        }
      }

      return new string(sb);
    }


* This source code was highlighted with Source Code Highlighter.
Для latin1 еще можно попробовать
var chars = new char[bytes.Length];
Array.Copy(bytes, chars, bytes.Length);
return new string(chars);
Для latin1 вроде можно же просто sb[i] = (char) bytes[i+offset] написать.
Для cp1251 символы до 128 тоже прямое соответствие имеют, для остальных нужно прописывать коды символов.
Нет, у меня винда :) Но, конечно же, можем поспорить ;)
После этого флеш зохавает не только весь проц, но еще и всю видюху.
Ок, на слот update() таблицы приходит сигнал. Это означает, что таблица поменялась. Соответственно, ей нужно со всех связанных визуальных элементов собрать данные. Даже если она знает, от какого визуального элемента пришел сигнал, то все равно нужно реализовывать логику переноса значения из этого элемента в соответствующее поле той записи, которая в настоящий момент ассоциирована с текстовым полем.

Пример посмотрел. Из чего-то, напоминающего биндинг, там только
color: fieldText.state == "editing" ? "#505050" : "#AAAAAA"
, остальное же — обычный код обработки событий, причем, как я понимаю, соответствие там одностороннее, в обратную сторону такая штука работать не будет.
Ок, а как выглядит слот update() у таблицы? Мы сами его пишем, или стандартный?
Если стандартный, то он учитывает, что значение поля может отображаться в нескольких визуальных полях и что нужно обновить остальные, кроме пославшего changed?
И раз это слот таблицы, то он что, опрашивает изменения для всех записей? Не приведет ли это к потере производительности?

И как в этом сценарии добавляется, например, валидация ввода? Или преобразование форматов/типов?

Не холивара ради, мне просто любопытно :)

Information

Rating
Does not participate
Location
Москва и Московская обл., Россия
Date of birth
Registered
Activity