На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! ПРАВИЛА РАЗДЕЛА
Прежде чем задать вопрос, зайдите в раздел FAQ, возможно там уже есть ответ на него.
Если вы хотите вставить код в сообщение, то пожалуйста выделяйте его тегом [code=dfp] ... [/сode].
Для этого используйте кнопку [code=dfp] в форме ответа или комбобокс, если нужно вставить код на языке, отличном от Delphi for PHP.
Модераторы: ViktorXP, vicis
  
> Кодировка в MainMenu
    Здравствуйте!

    Помогите решить проблему!
    У меня Delpfi for PHP 2.0 в главном меню (MainMenu) вместо русских слов пишет коды
    каждого символа, и затем выдает эти коды на экран вместо строк меню.

    Как решить эту проблему?

    Буду благодарен любой помощи.
      хм, тут по другому звучит вопрос ;)
      Разработка сайта на Delphi (сообщение #2069546)
        без обид.
        НО только кроме пространных рассуждений о Delphi for PHP 2.0 я к сожалению, не нашел ничего.
        А у меня конкретный вопрос и огромное желание найти человека, который реально программирует на Delphi for PHP 2.0, к нему я и обращаюсь и прошу поделиться опытом.
        Как заставить работать Delphi for PHP 2.0 с русским языком???
        Сообщение отредактировано: goodwin -
          делов самом файле qx.js
          он не способен глотать коды типа "&_#1088;&_#1091;&_#1089;&_#1082;&_#1080;&_#1077;" (подчеркивания вставил чтобы сайт видел коды а не символы)
          есть два выхода:
          1) поковырять это скрипт и найти проблему
          2) тыкать не коды а руские буквы. делфи походу тутже делает с руских такие коды. поэтому создавай менюшки динамически:
          ExpandedWrap disabled
            class Unit2 extends Page
            {
                   public $MainMenu1 = null;
                   function Unit2Create($sender, $params)
                   {
                      $it =  array();
                      $it['Caption'] = 'Текст88i';
                      $it['ImageIndex'] = '0';
                      $it['SelectedIndex'] = '0';
                      $it['StateIndex'] = '-1';
                      $it['Tag'] = '0';
                      $it['Items'] = array();
                      $this->MainMenu1->Items = array($it);
                   }
            }
          только если будеш сохранять файл в утф-8 формате то тогда помни что текст нужно перекодировать. ибо глотать не будет (ну разве что соответственно делфю настроить, но не факт что потом сервер будет нормально работать)

          Добавлено
          можно еще третим способом обойтись: подправить модуль menus.inc.php так что он будет сам перекодировать эти коды в нормальные символы
          Сообщение отредактировано: ViktorXP -
            Спасибо за помощь.
            а вообще-то третий вариант наиболее симпатичен, но как подправить ?
              куда всунуть нужный код знаю а вот как перекодировать из этого нормальный текст.... :unsure:
              я уже давно не сидел в этой среде, поэтому то что помнил уже немного подзабыл.

              попытался найти но тчетно. попробуй погуглить насчет такого перекодировщика. (должна быть какаято стандартная функция, но если ее нет то факт должны быть примеры работа на php)
                ViktorXP!
                Помоги, пожалуйста, решить эту проблему.
                Дело, как я понимаю, за малым осталось.
                Я честно говоря, не силен. Только учусь.
                Но очень надо разобраться... без твоей помощи никак!
                  идеш в модуль menus.inc.php
                  создаеш функцию
                  ExpandedWrap disabled
                    function GetRuss($s)
                    {
                      return html_entity_decode($s, ENT_QUOTES, 'Windows-1251');
                    }
                  и заменяеш все подобные записи
                  ExpandedWrap disabled
                    $Блабла=$ляля['Caption'];
                  на
                  ExpandedWrap disabled
                    $Блабла=GetRuss($ляля['Caption']);
                  там гдето мест три таких. запускаеш и наслаждаешся результатом )))
                  Сообщение отредактировано: ViktorXP -
                    ViktorXP!

                    Все хорошо, но html_entity_decode не работает.
                    Подскажи, пожалуйста, в чем может причина?
                    В PHP?

                    и как исправить?
                      странно. если у тебя "Делфи фор пхп 2.0" то должно 10% работать.
                      Цитата goodwin @
                      Все хорошо, но html_entity_decode не работает.

                      в чем выражается? ругается на ошибки? или какие были символы такие и остались

                      Добавлено
                      запакуй и прикрепи файл menus.inc.php

                      Добавлено
                      хочу посмотреть как ты зделал
                        Здравствуй,ViktorXP!

                        спасибо, что не бросайшь мою тему (м.б. она кому-нибудь ещё интересна)

                        Теперь по существу:
                        Работает функция. по крайней мере когда делаешь возврат
                        из функции вроде: return "Привет";
                        то слово "Привет" появляется во всех строчках меню и подменю.

                        но когда передаешь в качестве параметра настоящее значение item,
                        появляется абракадабра в виде набора символов.

                        исправленный файл прикрепляю(там действительно изменения в 3-х местах).

                        напрашивается вывод, что функция декодирования не работает.
                        почему, не могу понять.

                        Надеюсь на твою помощь.
                        Сообщение отредактировано: goodwin -

                        Прикреплённый файлПрикреплённый файлmenus.inc.rar (5.08 Кбайт, скачиваний: 196)
                          совершенно нормально отработал.

                          а куда ты проэкт сохраняеш? случайно не в стандартную папку "Delphi for PHP Projects"
                          просто некоторые скрипты по какойто причине отказываются работать если ложить туда. отчего зависит без понятия, но глюк проявляется рандомно.
                            нет. В стандартной папке вообще ничего не работает.
                            Я сохраняю на другой диск, в специально созданную папку.
                            Сообщение отредактировано: goodwin -
                              какая у тебя винда и каким языком назван профиль? (рускими буквами или латиницей)
                                XP.латиница.
                                  зайди
                                  Главное меню->tools->options
                                  в ветках выбири PHP->Internal Webserver
                                  поставь птичку "Allow debug ...."

                                  поставь бряку на все выховы GetRuss в модуле menus.inc.php

                                  но также поставь бряку на какуюто команду в своем модуле
                                  например "global $application;" иначе все остальное будет игнорироватся

                                  запусти на выполнение. когда сработает бряка global $application; то нажми F9. когда сработает GetRuss то начинаем трасировать F7 зайдеш внутьрь и посмотриш какие значения находятся в параметре $s. должны быть наши коды.

                                  Добавлено
                                  и покажи скрин результата вывода хтмлки
                                    Работает. ViktorXP, Спасибо.
                                    Подскажи, пожалуйста, есть ли уже какая-нибудь литература на русском по
                                    Delphi for PhP?
                                      пока я не видел.
                                        ViktorXP!

                                        Только что обнаружил, что меню не отображается в Mozilla Firefox.
                                        Подскажи, пожалуйста, в чём здесь может быть проблема?
                                        Она решаема?
                                          канешно решаемая. все решается переписыванием qx.js скрипта :D
                                          если я не ошибась то в хелпе должно быть написано какие браузеры поддерживаются. ну по крайне мере в каждой папке с компонентом есть реадми где это зделано
                                          посути VCL это зборка сторонних компонентов которые постоянно обновляются. просто сходи на сайта разработчиков и пошаруди насчет обновлений, а потом прикрути это к VCL.
                                            странно, а ведь другие компаненты отображаются.
                                            Я посмотрел файл menus.inc нет ничего о его работе в разных браузерах.
                                            А на сайте разработчиков выложена последняя версия библиотки vcl - она
                                            и стоит у меня.
                                              ну значит не судьба )))
                                              Цитата goodwin @
                                              странно, а ведь другие компаненты отображаются.

                                              ты когда нибудь хоть немного писал на JavaScript? если да то тогда ты должен понять в чем проблема )))
                                              Цитата goodwin @
                                              А на сайте разработчиков выложена последняя версия библиотки vcl

                                              читаеш не внимательно.
                                              Цитата ViktorXP @
                                              посути VCL это зборка сторонних компонентов

                                              то что есть в этой зборке не всегда самое последнее. хотя именно этот скрипт походу ихний, так как у него нет реадми и других какихто доков с описанием.
                                              Сообщение отредактировано: ViktorXP -
                                                первая версия Delphi for php работает на Mozilla нормально,
                                                поэтому я взял скрипт qx.js этой версии и поставил на
                                                вторую версию, результат - в браузере нет вывода MainMenu, остальные
                                                компаненты отображаются также без проблем.
                                                Следовательно, причина не в qx.js скрипте?
                                                  Цитата goodwin @
                                                  вторую версию, результат - в браузере нет вывода MainMenu, остальные

                                                  и в екслорере нет?
                                                  посмотри исходники сгенерированых хтмлок. (для простоты изучения просто брось на форму только меню)
                                                  згенерируй на первой и второй версии а потом сравни разницу того что он делает с меню.
                                                    html-коды не совпадают. Более того в первой версии в начале файла есть ссылки на библиотеку vcl-bin, но такой нет вообще. На что идет ссылка и почему при этом нет
                                                    ошибок при исполнении кода, не могу понять?
                                                      да, вот html-файлы разных версий.
                                                      Прикреплённый файлПрикреплённый файл1_2.rar (2.23 Кбайт, скачиваний: 181)
                                                        это константа. изза того что во второй версии эта константа не ставится проблемы появляются изза относительных путей. но если скрипты бросить на хостинг то все нормально отрабытывает (константа ставится как и положено). видать гдето внутри идет проверка на ОС и в зависимости от этого ставится. это не столь важно.

                                                        Цитата goodwin @
                                                        html-коды не совпадают.

                                                        изучи использования скрипта в обеех и попробуй такое же зделать в во второй версии. но только во второй qx.js должен быть из первой версии.

                                                        хотя геморойно будет. я бы не занималься этим.

                                                        Добавлено
                                                        вот существенные различия создания итемов
                                                        v1
                                                        ExpandedWrap disabled
                                                            <!-- Topbutton Start -->
                                                            var m0 = new qx.ui.menu.Menu;
                                                            d.add(m0);
                                                            var mb = new qx.ui.toolbar.MenuButton("������",m0);
                                                            MainMenu1.add(mb);
                                                            <!-- Topbutton End -->
                                                            d.add(inline_div);
                                                            inline_div.add(MainMenu1);

                                                        v2
                                                        ExpandedWrap disabled
                                                            <!-- Topbutton Start -->
                                                            var mb = new qx.ui.toolbar.MenuButton("Привет",null);
                                                            MainMenu1.add(mb);
                                                            <!-- Topbutton End -->
                                                            <!-- Topbutton Start -->
                                                            var mb = new qx.ui.toolbar.MenuButton("",null);
                                                            MainMenu1.add(mb);
                                                            <!-- Topbutton End -->
                                                            d.add(inline_div);
                                                            inline_div.add(MainMenu1);
                                                        0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                                        0 пользователей:


                                                        Рейтинг@Mail.ru
                                                        [ Script execution time: 0,0546 ]   [ 16 queries used ]   [ Generated: 18.04.24, 22:49 GMT ]