Re: Количество параметров процедуры. | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
Если смотреть со стороны Си, то "структура" это просто непрерывный (как правило небольшой) кусок памяти, доступ к разным частям которой компилятор обеспечивает при помощи нотации str.SomeField. В фоксе класс (или объект Empty или объект полученный через scatter name) ну никак под это дело не подходит. Даже си-шарповский struct гораздо ближе к "старому доброму" сишному понятию структуры - хотя и не является ею (плюс "встроенная" возможность маршаллинга в уже самую настоящую "структуру" - т.е. банальный блок памяти - чтобы в те же АПИ функции передавать). В фоксе приходилось изгаляться по-всякому чтобы к этому приблизиться. Нет, оно, конечно, можно назвать empty/scatter-name объекты "структурой" и группируя в нём связанные логически свойства оперировать примерно так же как это в си делается - но ТОЛЬКО внутри самого фокса. И лично я всё равно не стал бы называть такие объекты "структурами". И уж точно не стал бы называть структурами классы, где всегда имеются методы - как минимум "встроенные". ------------------ WBR, Igor |
Re: Количество параметров процедуры. | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
Увы, там я не могу поддерживать разговор - слишком много инфошума ------------------ WBR, Igor |
Re: Количество параметров процедуры. | |
---|---|
Simple777 Сообщений: 33855 Дата регистрации: 05.11.2006 |
"Ну ты, есличо, заходи". (C)
|
Re: Количество параметров процедуры. | |
---|---|
_vit Сообщений: 5175 Дата регистрации: 29.07.2002 |
как то попадалось типа думали вводить понятие структуры в фокс. даже видел синтаксис что то типа:
но все равно она не была бы эквивалентной сишной ибо в фоксе переменная базового типа уже есть сишная структура. Было бы что-то типа структуры структур в сишном эквиваленте. |
Re: Количество параметров процедуры. | |
---|---|
lulgu Сообщений: 1838 Дата регистрации: 30.11.2016 |
Разнесло знатоков мамонтового наследия.
Извините, но у меня сложилось впечатление, что вы просто дружно не понимаете, о чем речь. ИК обычно в таких случаях начинает вбрасывать всякую фигню, вплоть до привычного ему хамства, не впервой. Даже Calvin Hsia безуспешно пытается вам обэяснить: Structures are useful programming constructs ... Для слишком умных, по-русски: Структура - это программная конструкция. Вы хоть бы попытались задуматься над смыслом этой фразы, а то все талдычите о своих проблемах с передачей параметров, все изголяетесь. Структура - это специальная конструкция, которая обрабатывается функцией, и функция возвращает это структуру, но уже с другими обработанными данными. Вы же дружно параметр от переменной не отличаете. _vit Прежде чем писать подобную бессмыслицу, загляните хотя бы в HELP. Исправлено 2 раз(а). Последнее : lulgu, 08.02.20 23:59 |
Re: Количество параметров процедуры. | |
---|---|
lulgu Сообщений: 1838 Дата регистрации: 30.11.2016 |
ИК
Чуть выше я выложил простую структуру для работы с ДатаВремя. Предъяви, пожалуйста, в своих кодах на ее примере хоть что-то из того, что ты тут поднаписал. |
Re: Количество параметров процедуры. | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
Не очень понятна мотивация для этого. Фокс гораздо более бизнес-дата-ориентированный язык нежели си/паскаль и даже современные шарп/ява. Кто стал бы пользоваться этими структурами и для каких целей? Для визуальных и стыковочных библиотек можно обойтись строкой-как-структурой и DECLARE DLL, для чуть более сложных случаев есть фокс-апи и можно на том же си всё сделать, организовав настоящий "фоксовый" интерфейс к этому делу. Поэтому ввод "родной" поддержки структур выглядел бы не оправданным. Уменьшить боль 0.001% разработчиков, при том что вполне хватало областей в бизнес-дата части которые нуждались в улучшении и/или переработке. Так что если и были такие планы, то стояли бы они в приоритетах команды где-то на предпоследнем месте Тем более что были решения-обёртки (например библиотека struct, ещё что-то попроще было для управления памятью, если в структуре нужны ссылки на другие структуры - не помню как называлось) хоть и костыльно, и довольно коряво, но решавшие 90% проблем для взаимодействия с внешними dll. А для внутренних нужд действительно вполне достаточно классов и empty/scatter name объектов, никаких преимуществ ввод структур не дал бы. ------------------ WBR, Igor |
Re: Количество параметров процедуры. | |
---|---|
lulgu Сообщений: 1838 Дата регистрации: 30.11.2016 |
Так и продолжает ИК хронически путать работу со структурами с передачей параметров, а классы с набором методов для работы со структурами как с конструкцией с собственно самими структурами.
Класс EMPTY не имеет методов, только свойства-параметры. Для работы со структурами нужны методы, т.е. класс CUSTOM. Исправлено 1 раз(а). Последнее : lulgu, 09.02.20 12:33 |
Re: Количество параметров процедуры. | |
---|---|
_vit Сообщений: 5175 Дата регистрации: 29.07.2002 |
Даже бизнес-дата-ориентированном ПО достаточно много сущностей которые характеризуются набором логически связанных данных например физ/юр. лицо, товар, денежная единица и т.д. манипулировать такими наборами было бы проще через объект который их связывает. А если бы еще был реализован автоматический маршалинг фоксовых структур в сишные и обратно то это бы шире раскрыло потенциал WINAPI для разработчиков на фоксе и не только повысило эффективность самих программ но и их разработки. |
Re: Количество параметров процедуры. | |
---|---|
of63 Сообщений: 25256 Откуда: Н.Новгород Дата регистрации: 13.02.2008 |
() Чтобы создавать структуры для WINAPI написал маленькую подпрограмку, которая из входных параметров конструирует Q-строку, ее и подаю на вход API. Есть похожая разбиралка входной Q-строки как структуры (структуру задаешь на псевдоязыке, типа формат полей при создании таблицы, но ее не доделал, т.к. не особо надо), возвращает массив с считанными данными... Чем не "маршаллинг" (преобразователь?)
|
Re: Количество параметров процедуры. | |
---|---|
lulgu Сообщений: 1838 Дата регистрации: 30.11.2016 |
Сам принцип верен, но вот реализация ....
Пора уже переходить на нормальные обозначения. И убери ты свой дурацкий "Самовывоз". Если есть данная функция сборки (DoMake), то должна быть парная ей функция разборки(DoSplit). Определение типов данных лучше вынести в отдельную процедуру (DoDataType). (например, знаковые и беззнаковые числа это разные типы). Преобразование значеий (bintoc-ы) лучше вынести в отдельную процедуру (DoDataUtil). Параметры все же лучше передавать через объект loEmpty. Исправлено 1 раз(а). Последнее : lulgu, 09.02.20 19:13 |
Re: Количество параметров процедуры. | |
---|---|
_vit Сообщений: 5175 Дата регистрации: 29.07.2002 |
Так-то да, только дороговато выходит на фоксе такой маршаллинг. Лучше было бы для этого FLL-ку сварганить. |
Re: Количество параметров процедуры. | |
---|---|
of63 Сообщений: 25256 Откуда: Н.Новгород Дата регистрации: 13.02.2008 |
> Параметры все же лучше передавать через объект loEmpty.
Лулгу... не хотел встревать в дискуссию, но, подумай сам: в структуре важен не только тип элементов, но и их порядок. В Empty-обьекте порядок теряется... ПС. С самовывозом без тебя разберусь ) |
Re: Количество параметров процедуры. | |
---|---|
lulgu Сообщений: 1838 Дата регистрации: 30.11.2016 |
Порядок (имена) определяется массивом, он сохраняется (для внутреннего пользования).
Его лучше создвать тоже в loEmpty. В свойствах Empty сохраняются значения (для внешнего пользования). |
Re: Количество параметров процедуры. | |
---|---|
Ydin Сообщений: 7648 Откуда: Киев Дата регистрации: 16.12.2005 |
Через loEmpty к порядку ( последовательности ) имен нет привязки. Как и в Collection.
|
Re: Количество параметров процедуры. | |
---|---|
lulgu Сообщений: 1838 Дата регистрации: 30.11.2016 |
От такого внимания таких крутых знатоков к своему коду как-бы Оффа снова не запил.
ЗЫ. Помогли бы лучше ИК написать свой пример. Исправлено 1 раз(а). Последнее : lulgu, 09.02.20 21:42 |
Re: Количество параметров процедуры. | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
Это и есть объект - от класса или от empty он сделан уже не так важно. Зачем ещё одну сущность вводить? Тем более что большинство разработчиков даже и с имеющимся функционалом туго справляются - от чего, собственно, и зародилась эта тема Ни разу не приходилось маршаллить во внешние АПИ бизнес-сущности. Даже 15-20 лет назад взаимодействие уже происходило если не через HTTP/XML, то через COM - а там сишные структуры не нужны вообще. ------------------ WBR, Igor |
Re: Количество параметров процедуры. | |
---|---|
Ydin Сообщений: 7648 Откуда: Киев Дата регистрации: 16.12.2005 |
А сам чего не поможешь? А о каком примере идет речь? С улицы прийти, чтоб нагадить? |
Re: Количество параметров процедуры. | |
---|---|
of63 Сообщений: 25256 Откуда: Н.Новгород Дата регистрации: 13.02.2008 |
> то через COM
Вопрос немного не по теме, а про передачу из фох в эксель обьекта массива массивов - ARRAY(ARRAY(),ARRAY()...). На форуме где-то пытались, давно, кончилось ничем... Вот реальный макрос в Excel, открывает файл CSV и читает из него строки. В реальном CSV первая колонка заполнена 20-значным числом (банковский № счета). Эксель бодро читает его как число, и изображает его в E-формe. Казалось бы "ерунда, поставь формат колонки целочисловой", да, поставил, эксель изобразил числом, но последние 4 цифры всегда 0, т.е. он потерял [в формате Double] точность! Тогда открываю этот файл как произвольный текстовый и говорю, что в первой колонке строка: m.oExcel.Workbooks.OpenText( Filename:= "...", Origin:= xlWindows (2), StartRow:=1, && CSV: 1е поле - 20-число - см. Array(1, 2) DataType:=xlDelimited (1), (=1) TextQualifier:= xlDoubleQuote (1), ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=True, Comma:=False, (Tab, Semicolon) Space:=False, Other:=False, [OtherChar], FieldInfo:=Array(Array(1, 2), Array(2, 1), Array(3, 1),...), (= 2-массив [колонка, Excel-формат данных в ней]) [TextVisualLayout, DecimalSeparator, ThousandsSeparator], TrailingMinusNumbers:=True, [Local] Так вот собственно проблема: в фоксе нет массива массивов. Что можно передать в параметр FieldInfo, чтобы эксель подумал, что это массив массивов? Или как бы узнать, как устроен преобразователь (маршаллинг?) фоксовых переменных в COM-интерфейс... Исправлено 3 раз(а). Последнее : of63, 10.02.20 08:27 |
Re: Количество параметров процедуры. | |
---|---|
Ydin Сообщений: 7648 Откуда: Киев Дата регистрации: 16.12.2005 |
Массив массивов!
Каждая строка имеет свое к-во эл-тов? Об этом речь, в принципе? Если да, то а в чем вопрос, вернее где? У себя, в самом Фоксе, так просто по-другому реализуется. Во вне или из вне? Мне не встречалось, хотя живу уже много. Исправлено 1 раз(а). Последнее : Ydin, 10.02.20 17:46 |
© 2000-2024 Fox Club  |