Конференция "Прочее" » Д2009
 
  • Anatoly Podgoretsky © (09.09.08 13:21) [200]

    > pasha_golub ©   (09.09.08 09:03) [193]

    PChar generic тип, значит нужно использовать фундаментальный PAnsiChar
  • Anatoly Podgoretsky © (09.09.08 13:25) [201]

    > Вообщем, как-то я не могу сложить разум в кучу по этому
    > поводу. Опять же сколько надо терминирующих нулей вопрос.
    >  Ранее один впулил и доволен. Теперича, я так понимаю, два
    > надобно?

    Неправильно понимаешь, и раньше и сейчас ровно один символ NUL - ты оперируешь не той сущностью, забудь про байты и нули, думай в символах.
    Если нужно ввести один символ nul то указывай #0 и все, остальное дело компилятора и системы.

    Это не ясно зачем?
    Уточни вопрос.


    > var S: string; //UNT16
    > begin
    > ..
    >  i := return_int(PAnsiChar(UnicodeToUTF8(S));
    > ...
    > end;

    Может это поможет - UTF8 = AnsiChar
  • pasha_golub © (09.09.08 17:18) [202]

    > Может это поможет - UTF8 = AnsiChar

    Это как это?

    У меня есть String. Она UTF16. В функцию я могу передать UTF8.
  • jack128_ (09.09.08 17:24) [203]

    > Опять же сколько надо терминирующих нулей вопрос. Ранее
    > один впулил и доволен.

    вообще то сколько нужно терминирующих нулей в функцию передать -функция и опрделеяет. Дельфя тут как бы не причем ;-)
  • Anatoly Podgoretsky © (09.09.08 18:47) [204]
    Естественно я опечатался, имелось в виду AnsiString , а не AnsiChar

    Из Д7

    > type UTF8String = type string;
    >
    > C++ syntax:
    >
    > typedef AnsiString UTF8String;

    Определение в C++ правильное, для Дельфи в 2009 оно поправлено до AnsiString

    UTF8 это транспортная кодировка, что бы Юникод можно было передавать по каналам связи, которые де факто ASCII и реагируют на управляющие символы, не все символы воспринимаются как символы, например #0 и #1A

    Один символ Юникода может быть закодирован от 1 до 6 символов UTF8
  • wl © (09.09.08 18:52) [205]
    разве до 6? мне казалось что до 3-х.
  • Anatoly Podgoretsky © (09.09.08 19:06) [206]
    > wl  (09.09.2008 18:52:25)  [205]

    Не будем устраивать торг. Желающие могут посмотреть точные данные в rfc или в какой либо педии.
  • pasha_golub © (09.09.08 19:47) [207]

    > Anatoly Podgoretsky ©   (09.09.08 18:47) [204]


    > для Дельфи в 2009 оно поправлено до AnsiString

    Это хорошо. А каким образом мне string переделать в UTF8string? Простым присваиванием?
  • Anatoly Podgoretsky © (09.09.08 20:50) [208]
    > pasha_golub  (09.09.2008 19:47:27)  [207]

    Если ты хочешь переделать Юникод в UTF8 то в Дельф много функций, не считая функций из АПИ, которых одна, вокруг которой и паразитирует Дельфи.
    Попробуй например UnicodeToUtf8
  • speller (10.09.08 06:53) [209]

    > Простым присваиванием?

    Именно. Компилятор сам переводит из одной кодировки в другую без явного использования функций перекодировки. Где-то в блогах разработчиков было написано, вроде даже в этой ветке была ссылка.
  • Romkin © (10.09.08 11:17) [210]
    Если кто-то не в курсе еще, выложили триал Delphi 2009.
    http://cc.codegear.com/Free.aspx?id=25876
  • Eraser © (20.09.08 01:51) [211]

    > DVM ©   (31.08.08 22:17) [149]
    > Наше проблему, дело оказалось не в WideStringПеределал так:
    > function InetAddr(const AHost: AnsiString): DWORD;var  PHost:
    >  PAnsiChar;  HostEnt: PHostEnt;begin  if AHost = '' then
    >    result := INADDR_NONE  else    begin      PHost := PAnsiChar(AHost);
    >       Result := inet_addr(PHost);      if Result = INADDR_NONE
    > then        begin          HostEnt := GetHostByName(PHost);
    >           if HostEnt <> nil then            Result := DWORD(pointer(HostEnt^.
    > h_addr^)^);        end;    end;end;

    тоже сейчас столкнулся с этой проблемой.
    по-моему проще привести тип прям в условии

     // Преобразуем IP в числовой вид.
     iIP := inet_addr(PAnsiChar(AnsiString(sIP)));
     if iIP = Integer(INADDR_NONE) then
     begin
       // Недопустимое значение, отклоняем.
       Exit;
     end;

  • SpellCaster (26.09.08 11:11) [212]
    Забавная фича ))

    procedure TForm1.FormCreate(Sender: TObject);
     procedure Процедурко;
     begin
       ShowMessage('Превед');
     end;

    begin
     Процедурко;
    end;

  • blackman © (26.09.08 11:31) [213]
    Anatoly Podgoretsky ©   (23.08.08 21:25)  
    Дождались
    Покупать что ли будешь?
    Денег выделили?
    Или просто так радуешься? За других счастливчиков...
  • Anatoly Podgoretsky © (26.09.08 12:11) [214]
    > blackman  (26.09.2008 11:31:33)  [213]

    За державу
  • blackman © (26.09.08 12:23) [215]
    Anatoly Podgoretsky ©   (26.09.08 12:11) [214]
    За которую ? Тут много разных ...
    Или за тех кто за морем? :)

    Вообще-то, мне лично и D6-7 хватает.
    Не нужны эти новые примочки для лишних заморочек усталого старческого сознания  :)
  • Anatoly Podgoretsky © (26.09.08 12:59) [216]
    > blackman  (26.09.2008 12:23:35)  [215]

    За королевство Дельфи.

    Ну а мне не хватает, по крайней мере с 1996 года, и остро с 2001 с переходом на Юникод ОСи
  • Eraser © (26.09.08 14:55) [217]
    > [215] blackman ©   (26.09.08 12:23)

    дженерики и юникод - вещи отличные.
    жаль что дженерики это не шаблоны, говорят на производительность влияет. но в большенстве моих задач такой потерей можно пренебречь.
  • blackman © (26.09.08 15:23) [218]
    Anatoly Podgoretsky ©   (26.09.08 12:59) [216]
    и остро с 2001 с переходом на Юникод ОСи
    Для и зачем перешел? Не понял...
  • Palladin © (26.09.08 15:29) [219]

    > blackman ©   (26.09.08 15:23) [218]

    "ОСи" - это не "толпа больших полосатых мухи", а "Операционной Системы"


    > Для и зачем перешел?

    У самого то мыслей не возникает?
Есть новые Нет новых   [134442   +15][b:0.001][p:0.001]