Конференция "Журнал" » APC: Ошибка в коде (?) или снова про MultiByteToWideChar
 
  • Anatoly Podgoretsky © (13.11.06 09:57) [40]
    > Gero  (13.11.2006 09:19:37)  [37]

    Ну я не про потом.
    Да ладно, шучу я :-)
  • Gero © (13.11.06 10:37) [41]
    > [40] Anatoly Podgoretsky ©   (13.11.06 09:57)

    А, я сразу не понял о чем речь ;)
  • guav © (13.11.06 13:50) [42]
    > [38] Anatoly Podgoretsky ©   (13.11.06 09:21)

    Ну так на места, в которых уже всё понятно, можно переписывать, причём по возможности до написания нового кода.


    > старое описание то есть и оно валидное, компилятор тут
    > не помогает.

    Для старого описания есть такая штука
    //

    или директива
    depercated




    > Документация - ожидалось, что в RFC все описано, оказалось
    > что нет

    Бывает.
    Не на всё есть хелп и МСДН, кое-что и выдумывать приходится :-(


    > [33] Ketmar ©   (13.11.06 01:55)


    > [35] Gero ©   (13.11.06 02:14)

    Никого я не обвиняю (было бы в чём), но реальность суровая...
    В код других клиентов не вникал, теперь боюсь.

    зы: завёл тему про копирование в борландовских ньюзгрупах, посмотрим насколько китайцы дружные ;-)
  • Anatoly Podgoretsky © (13.11.06 14:53) [43]
    > guav  (13.11.2006 13:50:42)  [42]

    > Не на всё есть хелп и МСДН, кое-что и выдумывать приходится

    Статус все таки разные, пока я искал я обратил внимание, что кроме меня еще множество народу ищет и в ответ что несуразное, например обращаться в Беркли, мол там есть один человек, который это знает. А ведь это одна их базовых команд и без ее формата реализовать сервер невозможно.
    Но что хорошо, что есть альтернатива - гнусный XHDR, по крайней мере ОЕ если определяет, что XOVER не поддержан, то переходит на него. Но я например неуверен, что многие другие клиенты смогут работать если XOVER не будет поддержан.

    > Для старого описания есть такая штука // или директива depercated

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

    := XXX1.YYY

    XXX1 валиден, а нужен XXX2 - очень легко нарваться, если не изменил, и программа будет работать, поскольку и XXX1 и XXX2 валидны в месте применения, в одном блоке, но будет непонятно, почему иногда результаты не те, это китайское противодействие. Конечно пример простой, но понятно о чем речь. Если куски копирования маленькие, то конечно не ошибешься, а если сотни строк, то элементарно. Но китайские метод дает хорошие характеристики по скорости, в ущерб надежности. Поэтому последнее время приучаю себя не копировать, пусть дольше, но надежнее. В данном сервере я допустил несколько ляпов подобного рода, но во время обнаружил, в итоге вместо экономии была потеря времени и нервов.

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

    Кстати Д2006 очень плохо относится к китайскому методу, при копировании блока свойств и связаных объявлений обработчиков - она просто довольно быстро зависает, при том намертво, так что приходится снимать из процессов. И то с трудом. В рефакторинге я не нашел функции по полю создать одноименное свойство и Get/Set методы
  • Anatoly Podgoretsky © (13.11.06 15:08) [44]
    К вопросу об клиентском скрипте, вот данное сообщение было перемещено в 13:16 а оповещение поступило только сейчас, вместе с ним перемещалось еще одно сообщение, оповещения пока нет


    --= Eagle =-- © (13.11.2006 13:16) [D7, Win2k, WinXP]
    »» Перемещено в конференцию "WinAPI"
  • Anatoly Podgoretsky © (13.11.06 15:11) [45]
    Вот наконей поступило, но как удаленое, о чем ввиде ошибки сообщил OE
  • Anatoly Podgoretsky © (13.11.06 15:16) [46]
    > Anatoly Podgoretsky  (13.11.2006 15:08:44)  [44]

    Вот спустя 5 минут пришло и второе оповещение, хотя разница в секунды и кроме того скрипт выдал в рассылке список уже давно удаленые (перемещеные) сообщения и как прикажешь с подобным жить?

    --
  • Anatoly Podgoretsky © (13.11.06 15:22) [47]
    Вот теперь еще раз выдал, уже повторно.
  • guav © (15.11.06 01:36) [48]
    > if MultiByteToWideChar(cp_utf8, 0, PChar(S), -1, PWideChar(WS)
    > , Length(WS) + 1) = 0 then begin


    cbMultiByte
    [in] Specifies the size in bytes of the string pointed to by the lpMultiByteStr parameter, or it can be -1 if the string is null terminated. Note that if cbMultiByte is 0, the function fails.



    Т.е. -1 не обязательно, можно смело передавать Length, которая в байтах тоже.
  • Другой © (15.11.06 05:54) [49]
    Gero ©   (13.11.06 02:14) [35]
    Я уже молчу про DMClient, который начал писать один человек, не собираясь никому показывать ни исходный код, ни саму программу, а теперь дописывает другой.


    Ничего я не дописывал! :)

    Anatoly Podgoretsky ©   (13.11.06 09:21) [38]
    Документация - ожидалось, что в RFC все описано, оказалось что нет, один формат XOVER столько пришлось перешерстить Интернета


    Анатолий, я тоже искал, а как оказолось это банальный STAT :)
  • Другой © (15.11.06 05:54) [50]
    оказолось это банальный STAT :)

    Имею ввиду, формат
  • Anatoly Podgoretsky © (15.11.06 09:16) [51]
    > guav  (15.11.2006 01:36:48)  [48]

    Ну и какой Length ты передашь для utf-8
  • Anatoly Podgoretsky © (15.11.06 09:20) [52]
    > Другой  (15.11.2006 05:54:49)  [49]

    Даже если бы это было и так, то в rfc нет никакого намека на это, но на самом деле ничего даже близкого к STAT нет и не пахнет
  • Anatoly Podgoretsky © (15.11.06 09:20) [53]
    > Другой  (15.11.2006 05:54:50)  [50]

    И я это же имею в виду.
  • guav © (15.11.06 10:19) [54]
    > [51] Anatoly Podgoretsky ©   (15.11.06 09:16)
    > Ну и какой Length ты передашь для utf-8

    Тот что возращаеся Length(). Он в байтах.
  • Anatoly Podgoretsky © (15.11.06 10:47) [55]
    > guav  (15.11.2006 10:19:54)  [54]

    То есть то что я говорил про двойной вызов функции, а данное предложение я понял как про одинарный вызов функии.
    Пусть прояснится, что он имел в виду.
  • Anatoly Podgoretsky © (15.11.06 19:12) [56]
    > Anatoly Podgoretsky  (15.11.2006 10:47:55)  [55]

    moder=app
    action=close
  • Anatoly Podgoretsky © (15.11.06 19:17) [57]
    moder=app
    action=move 6
  • Наиль © (20.04.07 09:23) [58]
    > Кстати Д2006 очень плохо относится к китайскому методу,
    > при копировании блока свойств и связаных объявлений обработчиков
    > - она просто довольно быстро зависает, при том намертво,
    > так что приходится снимать из процессов. И то с трудом.

    Такое бывает, если установлен Punto Switcher, до v2.8 включительно,
    с включеной фунцией "сохранение буфера обмена в дневнике".
    Лично я пользуюсь этой функцией, для восстановления кода (текста),
    который долго набирал, но не сумел сохранить.
    Или в случае неудачной отправки сообщения из клиента.
  • VpNS (30.09.09 06:27) [59]
    Дату поста вижу, но всяк случай напишу если у кого нить подобные грабли будут))))

    вместо MultiByteToWideChar юзайте
    StringToWideChar

    или так

    function StringToWChar(const S: string): PWideChar;
    var
     Buffer: array[0..127] of WideChar;
    begin
     result:=StringToWideChar(S, Buffer, SizeOf(Buffer) div 2);
    end;
 
Конференция "Журнал" » APC: Ошибка в коде (?) или снова про MultiByteToWideChar
Есть новые Нет новых   [118622   +8][b:0][p:0.001]