Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.133.119.66] |
|
Сообщ.
#1
,
|
|
|
Здравствуйте!
Помогите решить проблему! У меня Delpfi for PHP 2.0 в главном меню (MainMenu) вместо русских слов пишет коды каждого символа, и затем выдает эти коды на экран вместо строк меню. Как решить эту проблему? Буду благодарен любой помощи. |
Сообщ.
#2
,
|
|
|
хм, тут по другому звучит вопрос
Разработка сайта на Delphi (сообщение #2069546) |
Сообщ.
#3
,
|
|
|
без обид.
НО только кроме пространных рассуждений о Delphi for PHP 2.0 я к сожалению, не нашел ничего. А у меня конкретный вопрос и огромное желание найти человека, который реально программирует на Delphi for PHP 2.0, к нему я и обращаюсь и прошу поделиться опытом. Как заставить работать Delphi for PHP 2.0 с русским языком??? |
Сообщ.
#4
,
|
|
|
делов самом файле qx.js
он не способен глотать коды типа "&_#1088;&_#1091;&_#1089;&_#1082;&_#1080;&_#1077;" (подчеркивания вставил чтобы сайт видел коды а не символы) есть два выхода: 1) поковырять это скрипт и найти проблему 2) тыкать не коды а руские буквы. делфи походу тутже делает с руских такие коды. поэтому создавай менюшки динамически: 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); } } Добавлено можно еще третим способом обойтись: подправить модуль menus.inc.php так что он будет сам перекодировать эти коды в нормальные символы |
Сообщ.
#5
,
|
|
|
Спасибо за помощь.
а вообще-то третий вариант наиболее симпатичен, но как подправить ? |
Сообщ.
#6
,
|
|
|
куда всунуть нужный код знаю а вот как перекодировать из этого нормальный текст....
я уже давно не сидел в этой среде, поэтому то что помнил уже немного подзабыл. попытался найти но тчетно. попробуй погуглить насчет такого перекодировщика. (должна быть какаято стандартная функция, но если ее нет то факт должны быть примеры работа на php) |
Сообщ.
#7
,
|
|
|
ViktorXP!
Помоги, пожалуйста, решить эту проблему. Дело, как я понимаю, за малым осталось. Я честно говоря, не силен. Только учусь. Но очень надо разобраться... без твоей помощи никак! |
Сообщ.
#8
,
|
|
|
идеш в модуль menus.inc.php
создаеш функцию function GetRuss($s) { return html_entity_decode($s, ENT_QUOTES, 'Windows-1251'); } $Блабла=$ляля['Caption']; $Блабла=GetRuss($ляля['Caption']); |
Сообщ.
#9
,
|
|
|
ViktorXP!
Все хорошо, но html_entity_decode не работает. Подскажи, пожалуйста, в чем может причина? В PHP? и как исправить? |
Сообщ.
#10
,
|
|
|
странно. если у тебя "Делфи фор пхп 2.0" то должно 10% работать.
Цитата goodwin @ Все хорошо, но html_entity_decode не работает. в чем выражается? ругается на ошибки? или какие были символы такие и остались Добавлено запакуй и прикрепи файл menus.inc.php Добавлено хочу посмотреть как ты зделал |
Сообщ.
#11
,
|
|
|
Здравствуй,ViktorXP!
спасибо, что не бросайшь мою тему (м.б. она кому-нибудь ещё интересна) Теперь по существу: Работает функция. по крайней мере когда делаешь возврат из функции вроде: return "Привет"; то слово "Привет" появляется во всех строчках меню и подменю. но когда передаешь в качестве параметра настоящее значение item, появляется абракадабра в виде набора символов. исправленный файл прикрепляю(там действительно изменения в 3-х местах). напрашивается вывод, что функция декодирования не работает. почему, не могу понять. Надеюсь на твою помощь. Прикреплённый файлmenus.inc.rar (5.08 Кбайт, скачиваний: 196) |
Сообщ.
#12
,
|
|
|
совершенно нормально отработал.
а куда ты проэкт сохраняеш? случайно не в стандартную папку "Delphi for PHP Projects" просто некоторые скрипты по какойто причине отказываются работать если ложить туда. отчего зависит без понятия, но глюк проявляется рандомно. |
Сообщ.
#13
,
|
|
|
нет. В стандартной папке вообще ничего не работает.
Я сохраняю на другой диск, в специально созданную папку. |
Сообщ.
#14
,
|
|
|
какая у тебя винда и каким языком назван профиль? (рускими буквами или латиницей)
|
Сообщ.
#15
,
|
|
|
XP.латиница.
|
Сообщ.
#16
,
|
|
|
зайди
Главное меню->tools->options в ветках выбири PHP->Internal Webserver поставь птичку "Allow debug ...." поставь бряку на все выховы GetRuss в модуле menus.inc.php но также поставь бряку на какуюто команду в своем модуле например "global $application;" иначе все остальное будет игнорироватся запусти на выполнение. когда сработает бряка global $application; то нажми F9. когда сработает GetRuss то начинаем трасировать F7 зайдеш внутьрь и посмотриш какие значения находятся в параметре $s. должны быть наши коды. Добавлено и покажи скрин результата вывода хтмлки |
Сообщ.
#17
,
|
|
|
Работает. ViktorXP, Спасибо.
Подскажи, пожалуйста, есть ли уже какая-нибудь литература на русском по Delphi for PhP? |
Сообщ.
#18
,
|
|
|
пока я не видел.
|
Сообщ.
#19
,
|
|
|
ViktorXP!
Только что обнаружил, что меню не отображается в Mozilla Firefox. Подскажи, пожалуйста, в чём здесь может быть проблема? Она решаема? |
Сообщ.
#20
,
|
|
|
канешно решаемая. все решается переписыванием qx.js скрипта
если я не ошибась то в хелпе должно быть написано какие браузеры поддерживаются. ну по крайне мере в каждой папке с компонентом есть реадми где это зделано посути VCL это зборка сторонних компонентов которые постоянно обновляются. просто сходи на сайта разработчиков и пошаруди насчет обновлений, а потом прикрути это к VCL. |
Сообщ.
#21
,
|
|
|
странно, а ведь другие компаненты отображаются.
Я посмотрел файл menus.inc нет ничего о его работе в разных браузерах. А на сайте разработчиков выложена последняя версия библиотки vcl - она и стоит у меня. |
Сообщ.
#22
,
|
|
|
ну значит не судьба )))
Цитата goodwin @ странно, а ведь другие компаненты отображаются. ты когда нибудь хоть немного писал на JavaScript? если да то тогда ты должен понять в чем проблема ))) Цитата goodwin @ А на сайте разработчиков выложена последняя версия библиотки vcl читаеш не внимательно. Цитата ViktorXP @ посути VCL это зборка сторонних компонентов то что есть в этой зборке не всегда самое последнее. хотя именно этот скрипт походу ихний, так как у него нет реадми и других какихто доков с описанием. |
Сообщ.
#23
,
|
|
|
первая версия Delphi for php работает на Mozilla нормально,
поэтому я взял скрипт qx.js этой версии и поставил на вторую версию, результат - в браузере нет вывода MainMenu, остальные компаненты отображаются также без проблем. Следовательно, причина не в qx.js скрипте? |
Сообщ.
#24
,
|
|
|
Цитата goodwin @ вторую версию, результат - в браузере нет вывода MainMenu, остальные и в екслорере нет? посмотри исходники сгенерированых хтмлок. (для простоты изучения просто брось на форму только меню) згенерируй на первой и второй версии а потом сравни разницу того что он делает с меню. |
Сообщ.
#25
,
|
|
|
html-коды не совпадают. Более того в первой версии в начале файла есть ссылки на библиотеку vcl-bin, но такой нет вообще. На что идет ссылка и почему при этом нет
ошибок при исполнении кода, не могу понять? |
Сообщ.
#26
,
|
|
|
да, вот html-файлы разных версий.
Прикреплённый файл1_2.rar (2.23 Кбайт, скачиваний: 181) |
Сообщ.
#27
,
|
|
|
это константа. изза того что во второй версии эта константа не ставится проблемы появляются изза относительных путей. но если скрипты бросить на хостинг то все нормально отрабытывает (константа ставится как и положено). видать гдето внутри идет проверка на ОС и в зависимости от этого ставится. это не столь важно.
Цитата goodwin @ html-коды не совпадают. изучи использования скрипта в обеех и попробуй такое же зделать в во второй версии. но только во второй qx.js должен быть из первой версии. хотя геморойно будет. я бы не занималься этим. Добавлено вот существенные различия создания итемов v1 <!-- 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 <!-- 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); |