Пользователь пока ничего не рассказал о себе

Достижения

Все достижения (3)

Наибольший вклад в теги

Все теги (63)

Лучшие ответы пользователя

Все ответы (118)
  • Как исправить ошибку E2066?

    OCTAGRAM
    @OCTAGRAM
    TSet = (Sorted, Reversed, Random);

    Это объявление сделало Random константой с более высоким приоритетом видимости, чем System.Random.

    Варианты решения:

    В новых Delphi можно написать (в начале кода)

    {$SCOPEDENUMS ON}

    и заменить

    if ArrType = TSet.Sorted then
    // …
    else if ArrType = TSet.Reversed then


    Тогда TSet.Random не сможет пересекаться с System.Random

    Можно, наоборот, при использовании System.Random указывать полностью квалифицированный идентификатор:

    ArrI[i] := System.Random(Row);

    Либо можно просто переименовать TSet.Random во что-то, что не в точности Random
    Ответ написан
    Комментировать
  • RC4 почему не полный результат?

    OCTAGRAM
    @OCTAGRAM
    Вместо Chr, который возвращает не понятно, что, для аналогии нужен Char. Или это какая версия Delphi? В старых (2007 и старше) для аналогии это WideChar.

    Посмотрел, а на чём прерывается версия Delphi. В JavaScript это \u0000. Напрашивается мнение, что Delphi отработала как надо, а проблема в системе отображения, которая закодирована на устаревшем языке программирования с устаревшей системой кодирования длины строки встроенным в конец строки нулевым символом. Поменяйте тот кусок, где режется, и строка сохранится во всей полноте.
    Ответ написан
    6 комментариев
  • Почему в буфер вставляется только первый символ?

    OCTAGRAM
    @OCTAGRAM
    Описание CF_TEXT (1):

    Text format. Each line ends with a carriage return/linefeed (CR-LF) combination. A null character signals the end of the data. Use this format for ANSI text.


    В Юникодных версиях Delphi обычный тип string = UnicodeString. А PChar = PWideChar. В этом формате символы кодируются двухбайтовыми числами. Все платформы, поддерживаемые Delphi, little endian, и это значит, что если число состоит из двух байт, то сначала идёт младший, а потом старший. У латинских букв и простых символов пунктуации номера маленькие, в диапазоне 32-126, для них хватает 7 бит. Так что номер буквы h в двухбайтовом представлении состоит из одного младшего байта с номером буквы h и неиспользуемым нулевым старшим байтом. По формату CF_TEXT нулевой байт значит конец строки.

    В юникодных Delphi вам нужен формат CF_UNICODETEXT. А под память нужно выделять и копировать (2 * Length(Value) + 2) байт.
    Ответ написан
    1 комментарий
  • Какую платформу выбрать для десктопного приложения с учетом поддержки win XP,7,8,10?

    OCTAGRAM
    @OCTAGRAM
    Да, XP всё же желательно исключить. В Vista добавили мониторы Хоара на уровне API и сокеты IPv6 сдвоили с IPv4 по типу Linux. Гипотетически можно было бы переключать реализации мониторов между XP'шным, но вот почему-то не сделали так разработчики ни в коммерческих компиляторах, ни в open source порта pthreads единого не было. С IPv6 та же история, можно было бы гипотетически, готовясь открыть соединение, получив от DNS список адресов IPv6 и IPv4, перемешав их, не зная заранее, какой сработает, подготовить два сокета, IPv4 и IPv6, как это делал Firefox, но куча остального софта вместо этого использовала кмк грязный хак, который есть в Linux, а в Vista этот грязный хак воспроизвели, и все кинулись его использовать вместо того, чтоб писать как положено. Ничего не поделать, слишком много проблем совместимости с XP.

    Компьютеры, как можно понять, новизной не отличаются. Я на таких работал. С# и Java безальтернативно навязывают трассирующую сборку мусора, и это просто кошмар с ними работать. Программам с трассирующей сборкой мусора нужно для хорошей работы в 5 раз больше оперативной памяти, чем занято их объектами. Можно поискать график, на котором будет катастрофическая деградация производительности, когда памяти всего лишь в 2 раза больше, чем занято. Ещё когда таких программ становится несколько, они по очереди в своп ходят, вытесняя друг друга из памяти. А ещё какой-нибудь касперский содержимое загружаемого свопа неукоснительно проверяет во избежание. Как же я настрадался в техподдержке.

    С C++ есть все шансы развести глюкотрон. Python сочетает лучшее из двух миров: и тормоза, и глюкотрон. Но глюкотрон по другой причине, из-за динамической типизации так называемой.

    А Delphi вполне себе рабочий инструмент. Против глюков есть типизация и проверки диапазонов, по умолчанию выключенные, но ведь можно включить. Сборки мусора нет. Контейнеры на счётчиках ссылок можно взять в Spring4D.
    Ответ написан
    4 комментария
  • Виртуальная машина со статичным образом жесткого диска

    OCTAGRAM
    @OCTAGRAM
    По крайней мере, у VMWare Server есть такая штатная фича. VMWare Server бесплатен и вроде бы есть не менее бесплатный VMWare ESXi
    Ответ написан
    Комментировать

Лучшие вопросы пользователя

Все вопросы (3)