Вверх ↑
Этот топик читают: Гость
Ответов: 1429
Рейтинг: 50
#1: 2011-03-17 14:21:32 ЛС | профиль | цитата
FTCG МатПарсер:
ftmathparse.rar

Благодарность: Netspirit,Assasin,Ivann

Внимание! - Перезалил новую версию, где нет ограничений на количество верхних точек.
Исправлена ошибка: Несоблюдение очереди после хаба.
--------------------------------------------------------------------------------------------------------------------



Добавлена новая версия, со скрытой точкой "doRandomize".
Переустанавливает генератор случайных чисел Delphi, для использования его внутри формул.
ftmathparse + randomize.rar

Добавлено свойство Find_InCode. Выводит комментарий в Delphi коде, в том месте, где стоит текущий экземпляр матпарсера. Перед его формулой. Удобно, при отладке, момогает мгновенно найти нужную строку. После отладки, свойство можно очистить.
+ randomize + comments in code.rar
карма: 0

2
файлы: 1ftmathparse.rar [2.6KB] [429]
Голосовали:vovs, Konst
Разработчик
Ответов: 4698
Рейтинг: 426
#2: 2011-03-17 15:02:20 ЛС | профиль | цитата

карма: 10
0
Ответов: 1429
Рейтинг: 50
#3: 2011-03-17 15:22:43 ЛС | профиль | цитата
Assasin писал(а):
функция point(pname)

я не нахожу такую в хелпе, поэтому непойму как ей воспользоваться.

Assasin писал(а):

id = i
id = id+1

Пришлось так сделать, потому, что в нужный момент, надо подхватить значение i, но увеличивать его отдельно, в другой переменной. Как иначе сделать я не знаю.
Assasin писал(а):
к од какой-то безобразный

Я музыкант а не программист, если выровняю, наверное, он еще безобразнее будет
------------ Дoбавленo в 15.22:
Сначала я делал просто замену в строке формулы, всех % на точки X. Потом печатал это в код Delphi. Но кодогенератору это, сильно, не понравилось, поэтому пришлось ограничить количество точке кейзами.
карма: 0

0
Разработчик
Ответов: 4698
Рейтинг: 426
#4: 2011-03-17 15:28:23 ЛС | профиль | цитата
login писал(а):
Пришлось так сделать, потому, что в нужный момент, надо подхватить значение i, но увеличивать его отдельно, в другой переменной. Как иначе сделать я не знаю.

Что то я не понял, вот так что ли нельзя записать?
#hws
id = i + 1
От этого значение переменной i не изменится.
login писал(а):
я не нахожу такую в хелпе, поэтому непойму как ей воспользоваться.

Да че ей пользоваться, одно удовольствие, вон открой hiStringBuilder.hws там она используется, а если вкратце:
#hws
v = point('X1') //читает данные с точки X1
pname = '29'
dt = point('X' + pname) //читает с X29
карма: 10
0
Ответов: 1429
Рейтинг: 50
#5: 2011-03-17 16:15:34 ЛС | профиль | цитата
Assasin писал(а):
id = i + 1
- Я не подумал об этом

Сделал, но point() не работает, не видит данные:

code_22989.txt
карма: 0

0
файлы: 1code_22989.txt [378B] [444]
Разработчик
Ответов: 4698
Рейтинг: 426
#6: 2011-03-17 18:53:07 ЛС | профиль | цитата
login писал(а):
Сделал, но point() не работает, не видит данные:

Дебаг - основное средство проверки, посмотри, чему равно 'X' + ind с помощью trace(), trace показывает, что все значения делаются как X'1', X'2'... вместо X1, X2,... это свойство кодогенератора, он автоматически приводит к типу строка на целевом языке, чтобы этого избежать, применяй code(ind)
------------ Дoбавленo в 18.52:
И опять же, просмотри эту проблему:
Add(FTCG_Tools,5039548,217,105)
{
}
BEGIN_SDK
Add(EditMultiEx,11372400,21,21)
{
WorkCount=#6:doData|
Width=349
Height=214
link(doData,4815401:doCalc,[(67,27)(67,132)])
}
Add(FT_Memory,4409165,98,63)
{
Default=Integer(6)
}
Add(FTMathParse,4815401,98,126)
{
DataCount=11
MathStr="exp(exp(%1/%2)*%11/(%2/%11))"
ResultType=1
link(onResult,9008319:doValue,[])
link(X1,4409165:Value,[])
link(X2,13600669:Value,[(111,110)(153,110)])
link(X11,5273271:Value,[(174,110)(202,110)])
}
Add(FT_Memory,13600669,147,63)
{
Default=Integer(45)
}
Add(FT_Memory,9008319,196,126)
{
Default=Real(0)
link(onData,5750475:doMessage,[])
}
Add(FT_Message,5750475,252,126)
{
}
Add(FT_Memory,5273271,196,63)
{
Default=Integer(3)
}
END_SDK
Как видишь, точки Xn, n > 9 он не читает, и я уже говорил почему:
Assasin писал(а):

#hws
a = copy(MathStr, i, 1)

карма: 10
1
Голосовали:login
Ответов: 1429
Рейтинг: 50
#7: 2011-03-17 23:46:28 ЛС | профиль | цитата
Assasin, code(ind) - Заработало!

Assasin писал(а):
a = copy(MathStr, i, 1)
- я эту проблему сразу понял, я просто не могу придумать каким путем ее обходить. Если по два символа копировать, то прийдется пользователя заставить писать всё через пробелы.
карма: 0

0
Ответов: 5446
Рейтинг: 323
#8: 2011-03-18 00:21:24 ЛС | профиль | цитата
login, делай как Dilma - копируй по одному символу до первой не-цифры.
карма: 1

1
Голосовали:login
Ответов: 3349
Рейтинг: 233
#9: 2011-03-18 20:39:59 ЛС | профиль | цитата
iarspider, Ну зачем? Максимальное количество точек - 99, копировать первый символ, и если второй символ принадлежит цифрам то и его копировать.
карма: 1

0
Ответов: 1429
Рейтинг: 50
#10: 2012-01-31 11:04:44 ЛС | профиль | цитата
Добавлена новая версия, со скрытой точкой "doRandomize".
Переустанавливает генератор случайных чисел Delphi, для использования его внутри формул.
карма: 0

0
Ответов: 1429
Рейтинг: 50
#11: 2012-02-14 03:35:55 ЛС | профиль | цитата
Добавлено свойство Find_InCode. Выводит комментарий в Delphi коде, в том месте, где стоит текущий экземпляр матпарсера. Перед его формулой. Удобно, при отладке, момогает мгновенно найти нужную строку. После отладки, свойство можно очистить.
+ randomize + comments in code.rar
карма: 0

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