задача заключается в следующем. Нужно написать на дельфи обчающую программу языку программирования РНР.
самое тяжелое в этом проекте это составить конструктор РНР . Под конструктором понимается такое вот чудо. обьясню простолюдинским языком на форме имеются Listbox1 (в нем расположены операторы и функции языка РНР там к примеру <? ?> echo max () ... ) ,ListBox2 в котором будет генерироваться наш РНР код... из элементов содержимого Listbox1... ну и соответсвенно кнопки Вставить удалить и запуск РНР кода содержащейся в Listbox2 --------------- проблема собственно состоит в реализации, такого своеобразного интерпритартора кода РНР, чтобы программа на Delphi формировала выходные данные из скрипта РНР анализировала ошибки, конечно количество ошибок уменьшается при использовании такого вида постраения скрипта на РНР, но все таки.. ---------------- может кто то подскажет КРАСИВЫЕ алгоритмы реализации или у когонить есть примеры подобного типа... ---------------- конечно такой конструктор - интерпритатор могу я составить сам , просто хотелось что бы АЛГОРИТМ БЫЛ КРАСИВЫМ, а опыта в решении поставленной задачи мало я даже бы сказал нулевой так как не разу не приходилось реализовывать что либо подобного , т е у меня врядли получится красивое решение........ ну и самое главное от этого зависит мой экзамен |
можно ТЗ более внятное? простыми русскими словами. Дельфи тут, как видим, совсем мало при чем. Потому без употребления разных шаманских слов типа ListBox1 _________________ Ин дер гросен фамилие нихт клювен клац-клац |
andy ice писал(а): можно ТЗ более внятное? простыми русскими словами. Дельфи тут, как видим, совсем мало при чем. Потому без употребления разных шаманских слов типа ListBox1ну что же более понятней так более понятней !!! раскажу полностью но и немножко тогда придется повторится.... Цель создать проект на дельфи т е обучающую программу на дельфи языку РНР... при работе в программе не обходима регистрация , выбор сложности прохождения обучения к примеру (1 легко, 2 средне, и 3 ботаник), курс теории, состоящий из нескольких уроков, который так же в свою очередь зависит от выбранной сложности, и на конец то ПРАКТИКА ... в разделе практика так же в зависимости от выбранной сложности предоставляется список задача на РНР которые необходимо решить в программе. если пройдено 2 урока (а уроков всего 5 к примеру) то на 3 урок человек ни как не должен попасть а может тока на уже прошедшие уроки. так вот все зделано кроме как раздела практика. --------------------- а теперь без всех этих ListBox1 --------------------- 1) есть список в нем функций языка РНР есно max () print () die () и т.д. рядом с ним есть кнопочка ВСТАВИТЬ... по нажатию которой выделеный элемент из списка будет вставляться во второй список в котором будет генерироваться код РНР. 2) так вот проблема моя состоит в том что бы Дельфи понял как интерпритировать РНР код находящейся во втором списке. 3) к примеру в программе в уроке 1, при сложности 1 легкий уровень, поставлена задача. ЗАДАЧАВЫВЕСТИ СООБЩЕНИЕ HELLO WORD РЕШЕНИЕ <? echo "HELLO WORD"; ?> т е я привел самый простой пример решения. и выходными данными этого кода всем понятен но если решение будет таким <? $a=1; echo "HELLO WORD"; ?> собственно выходные данные такие же т е результатом того и этого кода будет надпись HELLO WORD. 3) ну а теперь наверное понятно что требуется зделать. зделать интерпритатор языка РНР (по ограниченному набору выбранных функций из предложенного списка )на дельфи который по коду РНР формировал текстовый файл с выходными данными(и конечно же анализировал ошибки) для отслеживания правильности решения поставленной задачки . |
с генерацией не всё ясно. как, по какому принципу генерируется код? менять его нельзя? давай более алгоритмически:
имеем список с фанками, нажатием куда-то заносится. а код-то как получается? пока получается еще один список с выбраными функциями. в таком случае вообще без разницы какой язык "тестируем". просто проверяем полученный список и если он соответсвует решению, то правильно. не соответствует - не правильно. или я всё таки чего-то не до понял ps: а писать свой интерпретатор ПХП, думается, не стоит. лучше уж прост сам ПХП натравливать на код и парсить его на предмет вывода. _________________ Ин дер гросен фамилие нихт клювен клац-клац |
как генерируется код это я сам зделаю, на это даже не стоит останавливать внимание...
анализировать список с правильным решением не удачно так как одну задачу можно решить по разному,это к примеру можно увидеть из моего прошлокого комента, можно коротко будет все правильно а можно глупо громадно но тоже будет правильно решение.... ------------------------------------ а вот насчет натравливания РНР на код это идея интересная и хитрая даже очень... но только как реализовать такое у меня вопросов уйма... ------------------------------------ Последний раз редактировалось: Мишаня_:-) (2005.05.22 18:15.02), всего редактировалось 1 раз |
я вот как вижу реализацию в общем виде....
есть код РНР .... Дельфи анализирует код и составляет текстовый фалй в который вносится выходные параметры... анализировав которые и будет выносится вердикт ПРАВИЛЬНО или НЕПРАВИЛЬНО решена задача. под выходными параметрами понимается в данном случае то , что бы мы видели в браузере при выполнении этот РНР скрипта. Последний раз редактировалось: Мишаня_:-) (2005.05.22 18:17.23), всего редактировалось 1 раз |
как натравить пхп на программу? смотри выполнение и перехват вывода консольных программ. или есть еще вариант, что пхп библиотекой (длл-шкой) подключать. _________________ Ин дер гросен фамилие нихт клювен клац-клац |
andy ice писал(а): как натравить пхп на программу? смотри выполнение и перехват вывода консольных программ. или есть еще вариант, что пхп библиотекой (длл-шкой) подключать.хорошая идея будем листать доки...но только после 25 мая... т к в этот знаминательный день ДЕНЬ МОЕГО РОЖДЕНИЯ у меня ЭКЗАМЕН по ТВ и МС ЛЮБЛЮ СВОЕГО ПРЕПОДОВАТЕЛЯ.....который преподнесет мне такой подарок аж с самого утра....ха ха.... так что мы сейчас по уши совсем других доках...... |
доки по тв и мс счас пока что на пол часика пождождут ПЕРЕРЫВ...
у меня несколько вопросиков... ------------------------- 1 мы этот проект будем показывать преподователю.... какой из этих двух вариантов натравливания РНР на код более ну не знаю как бы сказать более сложнее, ну не знаю там профессиональней ну какой из этив вариантов у преподователя при просмотре реализации вызовет положительные асоициации...посмотрит и скажет "МОЛОДЦЫ ДЕТИШКИ, Я СОВОБОЖДАЮ ВАС ОТ ЭКЗАМЕНА" 2) если мы будем использовать 1 вариант перехват через консоль то я как понял РНР должен будет установлен на машину и запущен в момент запуска нашего проекта.... 3) а при использовании второго варианта я кажется как понимаю если правильно конечно, это не обязательно те РНР не должен быть запущен и установлен т е РНР библиотеку внедряем в сам проект .. 4) ну и я более склоняюсь ко второму варианту так как мне кажется он более универсален ...ну если конечно же мои догадки все правильны ... |
не внедрен. так же таскать с проектом придется. если найдешь, как управлять dll-шкой, что и как вызывать - будет очень здорово (я, впрочем где-то видел такой вариант). консольку вызывать проще. _________________ Ин дер гросен фамилие нихт клювен клац-клац |
Все сегодня День Рождения экзамен здан на 3.... все моно с спокойной душой садиться за проект но тока с завтрашнего дня... сегодня упаду в синию яму... |
Мишаня_ писал(а): Все сегодня День Рождения экзамен здан на 3.... все моно с спокойной душой садиться за проект но тока с завтрашнего дня... сегодня упаду в синию яму...синяк!!!! одаренный _________________ Ищи баги в себе!!! |
php.exe можно запускать как отдельное консольное приложение, он может сгенерить хтмл-страничку...
остается вопрос: каким образом вы будите проверять правильность алгоритма??? |
мне другое интереснее - использование ListBox для вывода сгенерированного текста... |
VolF писал(а): остается вопрос: каким образом вы будите проверять правильность алгоритма???гы! вот какраз это мишаня и спрашивает! |
вот и ответ: или писать самому РНР или отдавть на парсинг реальному _________________ Ин дер гросен фамилие нихт клювен клац-клац |
и? так мы проверим только правильность синтаксиса в программе, но не правильность используемого алгоритма...
как я понял, существует некоторая ЗАДАЧА, решая которую, ученик вставляет в текстэдит (или куда-то там еще) операторы pHp. каким образом узнать, что они стоят в правильном порядке? причем судя повсему возможно несколько комбинаций... |
VolF писал(а): и? так мы проверим только правильность синтаксиса в программе, но не правильность используемого алгоритма...
как я понял, существует некоторая ЗАДАЧА, решая которую, ученик вставляет в текстэдит (или куда-то там еще) операторы pHp. каким образом узнать, что они стоят в правильном порядке? причем судя повсему возможно несколько комбинаций... типа писать мини php интерпритатор языка для ограниченрго набора .... |
VolF писал(а): и? так мы проверим только правильность синтаксиса в программе, но не правильность используемого алгоритма...
как я понял, существует некоторая ЗАДАЧА, решая которую, ученик вставляет в текстэдит (или куда-то там еще) операторы pHp. каким образом узнать, что они стоят в правильном порядке? причем судя повсему возможно несколько комбинаций... нам нужно написать интерпритатор который бы формировал выходные данные К ПРИМЕРУ в текстовый файл Напрмимер <? $a='MIXA'; echo "HELLO $a "; ?> То в файле бы находилось бы HELLO MIXA. а правильность алгоритма можно проверить многими способами.... на данный момент стоит главная задача с интерпритатором... Счас ПЫТАЕМСЯ ручками писать т к предложенные два варианта от a.i. с консольным перехватом и ДЛЛками то я от этого далек........... про DLL смотрел инфу работа понятна с ее статическими и динамическими вызовами но только как мне узнать что в DLL РНР находится как называются функции и процедуры используемые в этих DLL и что они делают и какие ресурсы используют если кто подскажет как это все узнать то будем еще пробовать с DLL... Ручками писать тяжко ...То что такие моменты появляются ..ЖУТЬ...к примеру, c чем сегодня столкнулись : ECHO (((5+5)+(4-6))+3-(34+67)); получается в нашем интерпритаторе надо реализовать что то подобное текстового калькулятора. Но это еще не все. То что переменные могут обьявляться в любом месте кода, Целочисленная переменной может потом присваиваться переменная со строковым значением.... но это не так проблематично я в принцепе выход нашел... но то что масивы в РНР еще могут быть и асоцированными это ваще кирдык ... кому интересно могу написать алгоритм... |
вы этак на паскале весь пхп перепишете. проще всё таки про консольный вывод подумать _________________ Ин дер гросен фамилие нихт клювен клац-клац |
andy ice писал(а): вы этак на паскале весь пхп перепишете. проще всё таки про консольный вывод подуматьтак получается что РНР должен быть установлен на нашем компьютере из - за этого теряется универсальность проекта..... А у меня вопрос РНР открытый ? если да то наверное где то в просторах инета должны быть доки по DLL РНР... |
www.php.net
устанваливать не обязательно, достаточно вместо со своим проектом таскать еще пару файлов _________________ Ин дер гросен фамилие нихт клювен клац-клац |
блин счас книжка толстая на коленях по DELPHI а по оглавлению там ваще ни че нет за программы стандартоного вывода... |
andy ice писал(а): www.php.net
устанваливать не обязательно, достаточно вместо со своим проектом таскать еще пару файлов а какие именно ??? и какой файл за что отвечает??? |
PHP4Delphi 5.0 это первая визуальная оболочка для разработки и работы с PHP объектами, используя Delphi. PHP4Delphi к тому же позволяет исполнять PHP скрипты внутри Delphi-программ непосредственно из файла или памяти. Имеется возможность читать и изменять PHP переменные и результирующие значения. PHP4Delphi позволяет внедрять PHP интерпретатор в Ваши Delphi приложения. Новое в версии 5.0: * PHP API и ZEND API преобразование с языка C в Delphi; * psvPHP компонент, работающий непосредственно в Delphi без дополнительных DLL; * phpLibrary компонент, который позволяет добавлять новые PHP функции в psvPHP компонент; * новая визуальная оболочка с расширенными возможностями.
Дата добавления: 04 февраля 2004 Раздел: Интерпретаторы Автор: Serhiy Perevoznyk _________________ Ин дер гросен фамилие нихт клювен клац-клац |
Ну что же, задача кажется с интерпритирование РНР кода решена...
Начал сам писать интерпритатор 5 часов мне ушла только что бы распределить переменные в запись по типу... А решение настолько просто, я в шоке... СОВСЕМ ЗАБЫЛ про такие приколюхи над файлами Решил таким образом... ------1.php------------ <? $a='Mixa'; echo "Hello $a \n"; echo strlen ($a); ?> потом это файл натравливаем на PHP.ехе таким вот образом . php.exe 1.php >1.txt и получаем файл ---------1.txt------------- Content-type: text/html X-Powered-By: PHP/4.3.6 Set-Cookie: PHPSESSID=3d4ef28161d006e8296c4532ba3c59ca; path=/ Expires: Thu, 19 Nov 1981 08:52:00 GMT Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0 Pragma: no-cache Hello Mixa 4 --------------------------- ну остально только ловкость рук и не какого ****.... к файлу РНР.ехе необходимо иметь файл рнр.ини,php4ts.dll и папку dlls но несколько dll моно удалить... к примерук для работы с SQL... --------------------------- |
после не удачной попытки здать численные методы (оценка 2)
продолжаем работаь с проектом...и останавливаемся на работе с консолем... кто нить может мне помочь в разборе этой не легкой функции...в ней столько параметров что кирдык сума сойти ... BOOL CreateProcess( LPCTSTR lpApplicationName, // pointer to name of executable module LPTSTR lpCommandLine, // pointer to command line string LPSECURITY_ATTRIBUTES lpProcessAttributes, // pointer to process security attributes LPSECURITY_ATTRIBUTES lpThreadAttributes, // pointer to thread security attributes BOOL bInheritHandles, // handle inheritance flag DWORD dwCreationFlags, // creation flags LPVOID lpEnvironment, // pointer to new environment block LPCTSTR lpCurrentDirectory, // pointer to current directory name LPSTARTUPINFO lpStartupInfo, // pointer to STARTUPINFO LPPROCESS_INFORMATION lpProcessInformation // pointer to PROCESS_INFORMATION ); |
<оффтопик>
Мишаня_ писал(а): после не удачной попытки здать численные методы (оценка 2)</оффтопик> |
VolF писал(а): <оффтопик>
Мишаня_ писал(а): после не удачной попытки здать численные методы (оценка 2)</оффтопик> Долженко И.В. |
ааа. МУтному сдавать - это ваще попенс. Он сам нифига не понимает, аж смешно над ним. Может в матане и смыслит, но не в численных методах и уж тем более не в ИТ. _________________ Ин дер гросен фамилие нихт клювен клац-клац |
|
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах Вы не можете вкладывать файлы Вы можете скачивать файлы |