Страница 14 из 14

Глупые вопросы

Добавлено: 23 Октябрь 2022, 6:25
ShilakAV
Вообще-то мне нужно запустить сроку с символом | в функции run. А message мне нужно для контроля. Думал, что если решу проблему с message, то автоматически это решится и в run. Тогда тот же вопрос, но для run. Мне надо запустить команду вида: run('1234 | program.exe -parametr')

Глупые вопросы

Добавлено: 23 Октябрь 2022, 6:33
Игорь Столяров
ShilakAV писал(а): 23 Октябрь 2022, 6:25 что если решу проблему с message, то автоматически это решится и в run
С Message() нет никакой проблемы и я не уверен что она есть в Run() ...
Но если возникают какие-то вопросы - используйте прямой запуск через WinAPI: ShellExecute() - на форуме полно примеров.

Код: Выделить всё

Run73                PROCEDURE  (P1,P2) 

  !Module('Windows')  В Global Map
  !  ShellExecute(ushort,*CSTRING,*CSTRING,*CSTRING,*CSTRING,SIGNED),ushort,PASCAL,RAW,NAME('ShellExecuteA')
  !end  
  
loc_W                &WINDOW
loc_lpOperation      CSTRING('open')
loc_lpFileName       CSTRING(255)
loc_lpParameters     CSTRING(255)
loc_lpDirectory      CSTRING(255)
Loc:RetHandle        USHORT

  CODE
  loc_lpFileName    = Clip(Left(P1))
  loc_lpParameters  = Clip(Left(P2))  ! Параметры
  !loc_W            &= SYSTEM{Prop:Target}
  loc_W            &= NULL
  loc_lpDirectory   = Clip(System{Prop:DataPath})
  Loc:RetHandle     = ShellExecute(loc_W{Prop:Handle},loc_lpOperation,loc_lpFileName,loc_lpParameters,loc_lpDirectory,1)

Глупые вопросы

Добавлено: 23 Октябрь 2022, 6:44
ShilakAV
Благодарю, буду пробовать

Глупые вопросы

Добавлено: 23 Октябрь 2022, 10:44
Губин Игорь
Игорь Столяров писал(а): 23 Октябрь 2022, 6:07 Если Вы решительно настроены сделать это против ветра - можно использовать аналог из WinAPI ...
Если программа работает не под AnyScreen, то работа через API, вместо встроенного Message, настоятельно рекомендуется. К сожалению, во встроенном очень много глюков.

Глупые вопросы

Добавлено: 02 Декабрь 2022, 10:36
Игорь Столяров
Привет всем !

Продолжу тему ...
Если посмотреть CLW файл Multi DLL проекта - то туда шарашится всё что надо и не надо. :(
Например точно могу сказать, что я не юзаю "JSON.INC" и в штатных классах он тоже не используется.

Код: Выделить всё

   PROGRAM
   INCLUDE('cwHH.INC'),ONCE
   INCLUDE('ABASCII.INC'),ONCE
   INCLUDE('ABBREAK.INC'),ONCE
   INCLUDE('ABBROWSE.INC'),ONCE
   INCLUDE('ABCPTHD.INC'),ONCE
   INCLUDE('ABDROPS.INC'),ONCE
   INCLUDE('ABEIP.INC'),ONCE
   INCLUDE('ABERROR.INC'),ONCE
   INCLUDE('ABFILE.INC'),ONCE
   INCLUDE('ABFUZZY.INC'),ONCE
   INCLUDE('ABGRID.INC'),ONCE
   INCLUDE('ABPOPUP.INC'),ONCE
   INCLUDE('ABPRHTML.INC'),ONCE
   INCLUDE('ABPRNAME.INC'),ONCE
   INCLUDE('ABPRPDF.INC'),ONCE
   INCLUDE('ABPRTARY.INC'),ONCE
   INCLUDE('ABQEIP.INC'),ONCE
   INCLUDE('ABQUERY.INC'),ONCE
   INCLUDE('ABREPORT.INC'),ONCE
   INCLUDE('ABRESIZE.INC'),ONCE
   INCLUDE('ABTOOLBA.INC'),ONCE
   INCLUDE('ABTBLSYN.INC'),ONCE
   INCLUDE('ABUTIL.INC'),ONCE
   INCLUDE('ABVCRFRM.INC'),ONCE
   INCLUDE('ABWINDOW.INC'),ONCE
   INCLUDE('ABWMFPAR.INC'),ONCE
   INCLUDE('CWSYNCHC.INC'),ONCE
   INCLUDE('CLARUNEXT.INC'),ONCE
   INCLUDE('EFOCUS.INC'),ONCE
   INCLUDE('ERRORS.CLW'),ONCE
   INCLUDE('JSON.INC'),ONCE
   INCLUDE('KEYCODES.CLW'),ONCE
   INCLUDE('QPROCESS.INC'),ONCE
   INCLUDE('TRIGGER.INC'),ONCE
   INCLUDE('WINEXT.INC'),ONCE
   INCLUDE('ABPRI2PDF.INC'),ONCE
   INCLUDE('ABPRTARG.INC'),ONCE
   INCLUDE('ABPRTEXT.INC'),ONCE
   INCLUDE('ABPRXML.INC'),ONCE
   INCLUDE('ABRPATMG.INC'),ONCE
   INCLUDE('ABRPPSEL.INC'),ONCE
   INCLUDE('ABRULE.INC'),ONCE
   INCLUDE('CFILTBASE.INC'),ONCE
   INCLUDE('CFILTERLIST.INC'),ONCE
   INCLUDE('MDISYNC.INC'),ONCE
   INCLUDE('RTFCTL.INC'),ONCE
   INCLUDE('SVGRAPH.INC'),ONCE
   INCLUDE('SVGRAPHB.INC'),ONCE
И если собрать то же самое, как проект Single EXE - то такого беспредела уже нет.
Где вообще может быть этот список включаемого в проект штатного кода ? В шаблонах не нашёл ... :(

Глупые вопросы

Добавлено: 02 Декабрь 2022, 10:52
Admin
Что то похожее из ABC Free использовали что бы исключить ненужное. Не уверен что этот шаблон.

Код: Выделить всё

#EXTENSION(ClassExcludeABCClasses,'Class:  Exclude global classes generation in DLLs'),APPLICATION,MULTI 
А включаются по моему все инклюды с !ABCIncludeFile в начале.
Что бы ты любой класс в дальнейшем мог использовать у себя в DLL без перекомпиляции основной.
Думаю так.

Глупые вопросы

Добавлено: 02 Декабрь 2022, 12:22
Игорь Столяров
Admin писал(а): 02 Декабрь 2022, 10:52 А включаются по моему все инклюды с !ABCIncludeFile в начале
К сожалению, не помогло. :nono:

Глупые вопросы

Добавлено: 02 Декабрь 2022, 15:16
Admin
Игорь Столяров писал(а): 02 Декабрь 2022, 12:22 К сожалению, не помогло.
Я же говорю. За шаблон не уверен. Но вроде он.
Там важное сообщение есть:
WARNING: If you have generated this application, you must regenerate the ABC File Classes before, pressing "Edit as a marked list" or you will lose your current settings

Глупые вопросы

Добавлено: 17 Октябрь 2023, 13:56
Игорь Столяров
Всё-таки основной косяк синтаксиса Clarion - это отсутствие логического типа с контролем булевых операций. :(
Пол-дня искал в чужом "кирпичиком" коде проблему, и судя по всему это тупо малозаметная описка.

Код: Выделить всё

  If ~TheFlag = 0
     ...
  end