Вверх ↑
Этот топик читают: Гость
Главный модератор
Ответов: 2997
Рейтинг: 395
#16: 2007-01-10 08:29:47 ЛС | профиль | цитата
Стало яснее...спасибо.
карма: 6
Дорогу осилит идущий. Install/Update HiAsm.NET
0
Ответов: 2125
Рейтинг: 159
#17: 2007-01-10 14:04:56 ЛС | профиль | цитата
Dilma писал(а):
используя соответствующие кавычки:
"это строка"
'а это уже код'

О как! Может для кода какие-нибудь другие ограничители сделать, уж больно на строку смахивает, немудрено потом запутаться.

А для конкатенации строк в клиентском Java-скрипте третий тип строк сделаешь? Или простыми строками надо будет выкручиваться?

А будут ли вообще "клиентские" компоненты? Например нажатие кнопки это не всегда submit. Я веду к тому, что неплохо бы и клиентский Java-скрипт в виде компонентов собирать. Есть уже какие-то идеи?

А как насчёт клиент-серверного (типа ajax) взаимодействия? Или предполагается только submit?
карма: 1

0
Администрация
Ответов: 15294
Рейтинг: 1518
#18: 2007-01-11 06:16:33 ЛС | профиль | цитата
tsdima, широкий взгляд у вас батенька однако

tsdima писал(а):
Может для кода какие-нибудь другие ограничители сделать

не думаю, что будет лучше. Все таки для данного скрипта содержимое любых кавычек это в любом случае строка в самом широком смысле этого слова - т.е. набор любых символов. Тем более некорректное употребление этих ковычек НЕ ведет к генерации не верного кода.

tsdima писал(а):
А для конкатенации строк в клиентском Java-скрипте третий тип строк сделаешь?

Зачем же? Никто не мешает писать скажем вот так:

func doMessage
  print('alert(', "Hiasm message: " & Message, ');')
event(onMessage)
end

tsdima писал(а):
А будут ли вообще "клиентские" компоненты? Например нажатие кнопки это не всегда submit.

Почему бы и нет.

tsdima писал(а):
Я веду к тому, что неплохо бы и клиентский Java-скрипт в виде компонентов собирать. Есть уже какие-то идеи?

было бы по меньшей мере не разумно столько усилий вложить в php пакет и не прикрутить туда еще и java. Тем более на данный момент я не вижу никаких трудностей в этом. Как именно прикручивать события к стандартным ивентам(через св-ва или точки) это еще подумать надо, но суть от этого не изменится. Сам java код конечно же можно будет собирать все теми же двумя способами: комполненты либо Inline.

tsdima писал(а):
А как насчёт клиент-серверного (типа ajax) взаимодействия? Или предполагается только submit?

Аякс и прочие менее известные вещи это уже этап стоящий одним из самых последних в списке задач, поскольку эта функциональность не является базовой(т.е. без которой невозможно обойтись).
карма: 26
0
Главный модератор
Ответов: 2997
Рейтинг: 395
#19: 2007-01-11 08:24:13 ЛС | профиль | цитата
Есть ли для языка разработки пакета statement по типу Select, Switch, Case
Как правильно получать строку с верхней точки?

  print( strConn, ' = ', "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & DBname, ';' )
Этот код правильно работает при задании свойства DBname, но при задании его через верхнюю точку код:

$strconn4 = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=".$val0;
не получает строку с верхней точки. Echo($strconn4) возвращает только: DRIVER={Microsoft Access Driver (*.mdb)};DBQ= или DRIVER={Microsoft Access Driver (*.mdb)};DBQ=1

Схему выложить пока не могу, так как компонент ещё не закончен, а эти точки у него.
В ini файле это выглядит так:

[Property]
...
DBname=Имя Базы Данных|2|
...

[Methods]
...
*DBname=Имя Базы Данных|4|str
...
карма: 6
Дорогу осилит идущий. Install/Update HiAsm.NET
0
Ответов: 2125
Рейтинг: 159
#20: 2007-01-11 11:01:31 ЛС | профиль | цитата
Dilma писал(а):
Никто не мешает писать скажем вот так:

func doMessage
print('alert(', "Hiasm message: " & Message, ');')
event(onMessage)
end


Да? И что сгенерируется, если Message это данные сверху?
alert("Hiasm message: " . xxx);[/code]
:?: Или я неправ?

Если делать "клиентские" компоненты, то надо вводить и "клиентские" типы данных, потому как data_str для серверного скрипта и для клиентского скрипта - разные вещи. Таким образом, кроме data_str,data_int,data_real нужно вводить ещё и data_cli_str,data_cli_int,data_cli_real, чтобы кодогенератор имел возможность делать разный код для клиентских и серверных связей. А вот там, где будет несоответствие ожидаемого и имеющегося типа (клиентский или серверный) придётся подключать ajax :)
карма: 1

0
Администрация
Ответов: 15294
Рейтинг: 1518
#21: 2007-01-11 16:59:44 ЛС | профиль | цитата
Nic писал(а):
Есть ли для языка разработки пакета statement по типу Select, Switch, Case

пока нет. Будет примерно так:
switch(var)
case value1:
...
case value2:
...
defauult:
....
end

Nic писал(а):
Как правильно получать строку с верхней точки?

Чем это не верно

$strconn4 = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=".$val0;[/code]
?

[quote=tsdima]Да? И что сгенерируется, если Message это данные сверху?[/quote]
Сейчас такая конструкция конечно же сделает

alert("Hiasm message: " . xxx);[/code]

Разделять же компоненты на "клиентские" и "серверные" это опять таки же немного не верно. На стороне клиента может исполняться не только JavaScript, точно так же как на стороне сервена не обязан быть именно php. Поэтому вероятно более правильным решением будет указание где-то в компоненте, для какого языка он генерирует код. Поскольку на данный момент внутренний язык кодогенератора не заточен под php, то такое решение вполне приемлемо. Скажем пишем так:

setLanguage('java')[/code]
и далее кодогенератор для конкатенации строк использует "+", для переменных использует их имена(без знака "$"), и т.д. Либо тот же язык указывать в одной из секций INI файла.
карма: 26
0
Главный модератор
Ответов: 2997
Рейтинг: 395
#22: 2007-01-11 17:59:05 ЛС | профиль | цитата
Dilma писал(а):
Чем это не верно

На верхнюю точку DBname присоединён компонент Memory, содержащий путь к mdb файлу, например: cB est.mdb или c:\DB\test.mdb . Так вот, эта строка не доходит до переменной $strconn4. Проверяю так:

$strconn4 = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=".$val0;
Echo($strconn4);
В IE вижу только: DRIVER={Microsoft Access Driver (*.mdb)};DBQ=1
карма: 6
Дорогу осилит идущий. Install/Update HiAsm.NET
0
Ответов: 2125
Рейтинг: 159
#23: 2007-01-11 20:09:21 ЛС | профиль | цитата
Dilma писал(а):
Разделять же компоненты на "клиентские" и "серверные" это опять таки же немного не верно

Дык. Я не предлагаю разделять компоненты на "клиентские" и "серверные". Я предлагаю разделить код элемента на клиентский и серверный. Более того, допускаю, что реализация точки может быть как для клиентского, так и для серверного скрипта (возможно, даже две реализации одновременно), т.е. в зависимости от того, с какой точкой-событием есть связь (клиентской или серверной).
карма: 1

0
Главный модератор
Ответов: 2997
Рейтинг: 395
#24: 2007-01-11 22:45:52 ЛС | профиль | цитата
Вот такая схема на мой взгляд не работает:

Add(EntryPoint,15439365,21,105)
{
link(onStart,12308906:doStrCat,[])
}
Add(StrCat,12308906,91,105)
{
link(onStrCat,8156353:doEcho,[])
link(Str1,4383402:Value,[])
link(Str2,5294461:Value,[(104,97)(153,97)])
}
Add(Memory,4383402,91,56)
{
Default=String(String1)
}
Add(Memory,5294461,147,56)
{
Default=String(String2)
}
Add(Echo,8156353,154,105)
{
}
:roll:
карма: 6
Дорогу осилит идущий. Install/Update HiAsm.NET
0
Администрация
Ответов: 15294
Рейтинг: 1518
#25: 2007-01-12 05:24:06 ЛС | профиль | цитата
Nic, да все верно. Это не ошибка, просто пока у компонента метод Init не вызывается.

tsdima писал(а):
Я предлагаю разделить код элемента на клиентский и серверный. Более того, допускаю, что реализация точки может быть как для клиентского, так и для серверного скрипта (возможно, даже две реализации одновременно), т.е. в зависимости от того, с какой точкой-событием есть связь (клиентской или серверной).


Немного подумал - напрашивается примерно такая схема:

Add(MultiElementEx,14481033,399,287)
{
link(onClick,16548331:GetData,[])
}
BEGIN_SDK
Add(EditMultiEx,4781561,3,3)
{
WorkCount=#7:doPrint|
EventCount=#7:onPrint|
DataCount=#7:onClick|
}
END_SDK
Add(EventFromData,16548331,399,224)
{
link(onEvent,13298588:doMessage,[])
}
Add(Message,13298588,462,224)
{
}
Add(PointHint,437416,189,301)
{
Info=#23:Основное тело программы|
Width=162
Height=18
link(Event,14481033:doPrint,[(375,310)(375,293)])
}

предположим тут MultiElementEx это один из компонент-тегов с добавленным событием onClick в виде data-точки. EventFromData - это ключевой элемент, после которого идут компоненты так называемой клиентской части. Он умеет правильно вставлять код клиента в страницу и в качестве результата возвращает например имя ф-ции. Message - это один из элементов палитры для вывода сообщения.

Коды элементов в такой трактовке могут быть примерно такими:

MultiElementEx:
func doPrint
   print('echo ', "<a onclick='return " & onclick & "';>")
event(onPrint)
end

EventFromData
func GetData
  print("?>")
setLanguage("java")
print("<script>")
print("function func" & _id_ & "() {")
event(onEvent)
print("}")
print("</script>")
print("<?php")
setLanguage("php")
return("func" & _id_ & "()")
end

Message:
func doMessage
  if( langIs("java") )       // реализуем клиентский код элемента
print('alert(', Message, ');')
elseif( langIs("php") ) // реализуем серверный код элемента
print('echo ', Message, ';')
end
event(onMessage)
end
карма: 26
0
Ответов: 2125
Рейтинг: 159
#26: 2007-01-12 13:07:07 ЛС | профиль | цитата
Будет несколько непонятно для обычного Хиасм-пользователя, почему-это onClick сверху сидит. Вот если бы event-точки не "печатали код", а возвращали его в виде строки и типа языка (+признак клиент/сервер), как я предлагал однажды (event-точки возвращают операторы языка, data-точки - выражение), тогда можно было бы onClick event-точкой и для "клиентских" событий сделать.
карма: 1

0
Администрация
Ответов: 15294
Рейтинг: 1518
#27: 2007-01-12 16:25:53 ЛС | профиль | цитата
tsdima, название тут не имеет значение. Можно назвать и CodeForOnClick. Впрочем согласен с тем, что это некоторое отступление от правил. Однако возврат данных назад по основному потоку это еще большее отступление от правил, хотя и видно будет только для разработчика компонента)
карма: 26
0
Ответов: 2125
Рейтинг: 159
#28: 2007-01-12 18:59:17 ЛС | профиль | цитата
Это даже разработчику компонент не будет видно. Это будет видно только разработчику CodeGen.
карма: 1

0
Ответов: 9906
Рейтинг: 351
#29: 2007-01-12 19:07:51 ЛС | профиль | цитата
Беседуете? Ну-Ну
карма: 9

0
Администрация
Ответов: 15294
Рейтинг: 1518
#30: 2007-01-12 21:28:33 ЛС | профиль | цитата
tsdima писал(а):
Это даже разработчику компонент не будет видно. Это будет видно только разработчику CodeGen.

как же предпологается возвращать сгенерированный код, чтобы этого не видел разработчик?

Galkov писал(а):
Беседуете? Ну-Ну

ну так
карма: 26
0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)