Посмотрел трассу общения с Титовым, вот его ответ.
Вроде как все понятно.
[Forward note from Александр Титов -- 12.08.11 15:36:08]
Можно через строковую переменную, можно через межпотоковое взаимодействие:
Пример:
//Вызываем форму
RunGrayFromBlue(1,'sclad\frmExportTmc', cc, GetVirtualMashine() )
VMSHAREDDATALOCK() //блокируем область межпотокового взаимодействия
TRY
s:=VMSHAREDDATAGET(0, "ExportImportTmc") //читаем из области ID="ExportImportTmc"
END
IF VALTYPE(s)=="C"
aa:= s2a(s) //преобразование в массив
ELSE
aa:={}
ENDIF
VMSHAREDDATAFREE(0, "ExportImportTmc") //освобождаем область
VMSHAREDDATAUNLOCK() //разблокировка
........
А в самой форме записываем в область
METHOD btnOK_Click() CLASS frmExportTmc
LOCAL a,s
a:={::lblPath:Text,SaveRazd(ALLTRIM(::bLabelEdit1:text)),::cmbExportType:ItemIndex,::bLabelCombo1:ItemIndex,::bLabelCombo2:ItemIndex}
a2s(a,@s) //массив в строку
VMSHAREDDATALOCK()
VMSHAREDDATASET(0, "ExportImportTmc",s) //пишем
VMSHAREDDATAUNLOCK()
::Close()
ENDIF
RETURN .T.
функция RUNFORM работает напрямую только в "серых" окнах, в "синих" окнах форму надо запускать через функцию
RunGrayFromBlue
Пример можно посмотреть у нас в аптеке:
C:\Program Files\BEST\BEST5_34\Server\DATA\Pro\PLUGINS\EXTENSNS\Apteka
например плагин a021.prg
Похоже это ситемная ошибка разрработчиков, когда промежуточные значения не округляются.
категорически не согласен. Если вам нужны какие-либо промежуточные округления, то вы должны сами это делать. Все промежуточные вычисления должны делаться с максимальной или, хотя бы не ниже чем точность в базе. В противном случае получим неустранимые разницы в отчетах, на это уже напарывались не раз и не два.
Засухин Александр, Краснодар, Виктория-Юг
Есть функция:
ROUNDTO(<число>,<точность>)
Округляет арифметически число с плавающей точкой с точностью до <Точность> знаков после запятой или десятичных разрядов при отрицательном значении параметра <Точность>.
Используйте ее и все получится.
Еще на округление влияет свойство DisplayFormat
если там стоит два десятичных знака, то и будет круглить с точностью до двух десятичных знаков.
Во втором случае Вы поставили точное сравнение ==, оно и сработало
В первом случае сравнение, которое выполняет ascan для символьных строк зависит от установки
SET EXACT, видимо в Вашем случае он имеет значение OFF.
Алексей Новиков пишет:
Пример, который был приведён, является программой на harbour и должен
запускаться как спецфункция из БЭСТ.
Это пример не из harbour, это пример из VFP(хотя для harbour тоже подойдет). Кто не знает, есть такое понятие источник данных, у него есть метод Openarea, вот там и пишите вывод в текстовый файл. Судя по всему автор темы с VFP дружит. В чем проблема?
Serg St пишет:
когда открываю класс и выбираю Include, он там уже введен, т.е. нажимаю OK, он пересохранен.., но получается, что нужна ещё и компиляция этого класса, т.е. как делается перекомпиляция?
Надо просто перевыбрать(не согласиться с тем что там введено, а именно перевыбрать Include файл), а затем сохранить(нажать на дискету) источник и все.