Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Embarcadero RAD Studio

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294

Открыть новую тему     Написать ответ в эту тему

V1s1ter



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
         
Обсуждаем новые возможности и баги
 
Просьба писать про Embarcadero RAD Studio XE5, XE6, XE7, XE8, 10.x (Seattle, Berlin,Tokyo)
  По вопросам скачивания - Тема в Варезнике (lite-версии тут)
  Вопросы по неюникодным версиям Delphi — шестая бумага
  Бесплатные Компоненты и утилиты для Delphi/BCB/FreePascal/Lazarus
  Коммерческие компоненты и утилиты для Delphi/BCB
  Вопросы по компонентам для Delphi, C++ Builder разных версий
  Новые языковые возможности, начиная с Delphi 2005 по XE4 — здесь, и New!здесь еще
  Англоязычный официальный форум Embarcadero — здесь
  Embarcadero Quality Central, веб интерфейс — здесь, новый Quality Portal тут
  Программирование на Delphi — викиверситет
  Другие ресурсы
   Предыдущие бумаги
 
     Вопросы ..XE4       Вопросы ..XE3    Вопросы ..XE2      
  Вопросы ..2009-XE    Вопросы ..<2009 / ч.5    Вопросы ..<2009 / ч.4      
  Вопросы ..<2009 / ч.3    Вопросы ..Delphi 2 / ч.2    Вопросы ..Delphi  

  Выключение встроенного эксперта Castalia  для XE8 (иногда помогает при вылетах и тормозах)  
  Полезные плагины(эксперты)

Всего записей: 945 | Зарегистр. 06-02-2007 | Отправлено: 15:25 11-09-2013 | Исправлено: virussnu, 01:29 27-10-2018
Frodo_Torbins

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
AlexCoRu
Юниты system и sysinit для каждой версии делфи, и для каждого ее сервиспака, свои. Нельзя взять юниты пятилетней давности, и надеяться, что они заработают со свежими Делфями.
На счет отладочной информации я сильно сомневаюсь, у вас в батниках маловато запрещающих ключей для этого. А сам бинарник вы не выложили.
64-битный компилятор был бажный в релизе Сиэтла, нужно ставить сервиспак.

Всего записей: 2256 | Зарегистр. 24-05-2007 | Отправлено: 22:03 03-02-2016
AlexCoRu

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Нельзя взять юниты пятилетней давности, и надеяться, что они заработают со свежими Делфями.
system.pas и sysinit.pas - пустые. Дело в том, что RS10 не даёт скомпилировать sysinit.pas, поэтому речи о том, что "заработают, не заработают" нет. Но system.pas можно уменьшить.
У меня RS10 SP1. Определил так
Код:
type
  ATOM   = Word;
  BOOL   = LongBool;
  PBOOL  = ^BOOL;
  DWORD  = LongWord;
  PDWORD = ^DWORD;
  LCID   = DWORD;
  LONGLONG = Int64;
  UINT   = LongWord;
  ULONG  = Cardinal;
  ULONGLONG = UInt64;
  WCHAR  = WideChar;
{$IFDEF VER300}
  INT_PTR  = NativeInt;
  UINT_PTR = NativeUInt;
  HWND    = type UINT_PTR;
  HICON   = type UINT_PTR;
  HMENU   = type UINT_PTR;
  HBRUSH  = type UINT_PTR;
  WPARAM  = UINT_PTR;
  LPARAM  = INT_PTR;
  LRESULT = INT_PTR;
{$ELSE}
  INT_PTR  = Integer;
  UINT_PTR = Cardinal;
  HWND    = type LongWord;
  HICON   = type LongWord;
  HMENU   = type LongWord;
  HBRUSH  = type LongWord;
  WPARAM  = Longint;
  LPARAM  = Longint;
  LRESULT = Longint;
{$ENDIF}
  HCURSOR = HICON;
и х64 работает.

Всего записей: 868 | Зарегистр. 04-09-2003 | Отправлено: 09:31 04-02-2016 | Исправлено: AlexCoRu, 09:35 04-02-2016
protoror



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
AlexCoRu
возьму на заметку, спасибо

Всего записей: 492 | Зарегистр. 23-11-2009 | Отправлено: 09:56 04-02-2016
VadimLou



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Для сборки системных модулей нужен спец ключ "-y" для компилятора (см. source\rtl\RTL.Build.targets).
Я успешно пересобираю System,SysInit так:
dcc64.exe -q system -m -y -z -$D+,L+,O-,B-,C- ...
Для сборки других модулей этот ключ нужно убрать.

Всего записей: 686 | Зарегистр. 22-07-2004 | Отправлено: 20:02 04-02-2016 | Исправлено: VadimLou, 20:04 04-02-2016
AlexCoRu

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
А, понял. В D7 прокатывало dcc32.exe system.pas sysinit.pas, в RS10 уже не прокатывает, нужно по-отдельности dcc32.exe system.pas, dcc32.exe sysinit.pas.

Всего записей: 868 | Зарегистр. 04-09-2003 | Отправлено: 10:08 05-02-2016
VadimLou



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
-m поможет пересобрать и sysinit:
dcc32.exe system -y -m

Всего записей: 686 | Зарегистр. 22-07-2004 | Отправлено: 15:45 05-02-2016
AlexCoRu

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Alexey_Gawrilow, VadimLou большое спасибо за помощь. Пока работает так:  
Delphi 7 sysinit.pas, system.pas
Studio 10 sysinit.pas, system.pas
Дефайнами можно будет сделать по одному модулю для любой Делфи.
Работа с СОМ-объектами тоже поддерживается, т.е. CoCreateInstance создаёт объект и потом он автоматом освобождается.
И вот оно: как создать сом-объект средствами winapi?
Например, имеется интерфейс
Код:
 IFileSyncProviderCallback = interface(IUnknown)
  ['{73EA7945-1251-4466-A19C-DAEAF5EEBD05}']
    function OnChangeDetectionProgress(
      { [in] } pcszDirectoryPath: PWideChar): HRESULT; stdcall;
    function OnDetectFileSkipped(
      { [in] } pcszSourceFilePath: PWideChar;
      { [in] } dwReason: DWORD;
      { [in] } hrErrorCode: HRESULT): HRESULT; stdcall;
    function OnChangeDetectionCompleted(
      { [in] } llTotalFilesFound: LONGLONG;
      { [in] } llTotalDirectoriesFound: LONGLONG;
      { [in] } llTotalFileSize: LONGLONG): HRESULT; stdcall;
    function OnApplyingChange(
      { [in] } pcszNewDirectoryPath: PWideChar;
      { [in] } pcszCurrentDirectoryPath: PWideChar;
      { [in] } pNewFileInfo: PWin32FindDataW;
      { [in] } pCurrentFileInfo: PWin32FindDataW;
      { [in] } dwChangeType: DWORD;
      { [out] } out pfSkipChange: BOOL): HRESULT; stdcall;
    function OnFileCopyProgress(
      { [in] } pcszNewFilePath: PWideChar;
      { [in] } dwPercentCopied: DWORD): HRESULT; stdcall;
    function OnChangeApplied(
      { [in] } pcszNewFilePath: PWideChar;
      { [in] } pcszOldFilePath: PWideChar;
      { [in] } dwChangeType: DWORD): HRESULT; stdcall;
    function OnChangeSkipped(
      { [in] } pcszNewFilePath: PWideChar;
      { [in] } pcszCurrentFilePath: PWideChar;
      { [in] } dwChangeType: DWORD;
      { [in] } dwReason: DWORD;
      { [in] } hrErrorCode: HRESULT): HRESULT; stdcall;
  end;
Нужно создать объект и передать его в функцию Initialize объекта IFileSyncProvider
Код:
 IFileSyncProvider = interface(IKnowledgeSyncProvider)
  ['{73EA794F-1251-4466-A19C-DAEAF5BDBD04}']
    function Initialize(
      { [in] } const guidReplicaId: TGUID;
      { [in] } pcszReplicaRootPath: PWideChar;
      { [in] } pcszMetadataFilePath: PWideChar;
      { [in] } pcszTempDirectoryPath: PWideChar;
      { [in] } dwSyncFlags: DWORD;
      { [in] } pScopeFilter: IFileSyncScopeFilter;
      { [in] } pCallback: IFileSyncProviderCallback;
      { [in] } pcszPathToSaveConflictLoserFiles: PWideChar): HRESULT; stdcall;
    function DetectChanges: HRESULT; stdcall;
    function SetPreviewMode(
      { [in] } fPreviewMode: BOOL): HRESULT; stdcall;
    function CreateNewScopeFilter(
      { [out] } out ppScopeFilter: IFileSyncScopeFilter): HRESULT; stdcall;
  end;

Как "обычно" понятно TFileSyncProviderCallback = class(TInterfacedObject, IFileSyncProviderCallback), а как не имея TObject?
Понятна и логика этого: передать объекту IFileSyncProvider таблицу (список) обработчиков событий и объект (класс) здесь совсем не нужен, но макрософты решили так.

Всего записей: 868 | Зарегистр. 04-09-2003 | Отправлено: 16:23 06-02-2016 | Исправлено: AlexCoRu, 16:57 06-02-2016
funnyman

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
В Delphi 2007 использовал sptbx библиотеку для главного меню и тулбаров. Сейчас подумываю о переходе на более свежую версию делфей. Использовать родные дельфовые или есть что-нибудь другое?

Всего записей: 99 | Зарегистр. 08-01-2003 | Отправлено: 16:38 06-02-2016
Frodo_Torbins

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
funnyman
Если sptbx нужен был только для скинов, то скины теперь есть родные.
 
AlexCoRu
Вот пример: https://sergworks.wordpress.com/2012/04/01/interfaces-without-objects/ Можно еще в TVirtualInterface заглянуть.

Всего записей: 2256 | Зарегистр. 24-05-2007 | Отправлено: 18:30 06-02-2016
AlexCoRu

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Frodo_Torbins

Всего записей: 868 | Зарегистр. 04-09-2003 | Отправлено: 21:45 06-02-2016
Alexey_Gawrilow



Full Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
AlexCoRu
жму руку



Всего записей: 572 | Зарегистр. 08-09-2003 | Отправлено: 23:17 06-02-2016
funnyman

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Frodo_Torbins

Цитата:
Если sptbx нужен был только для скинов, то скины теперь есть родные.  

Ну собственно да, темы использовались. Надо будет присмотреться к скинам.

Всего записей: 99 | Зарегистр. 08-01-2003 | Отправлено: 23:56 06-02-2016
VadimLou



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
AlexCoRu

Цитата:
а как не имея TObject?  

Перестарался однако. TObject TInterfacedObject я бы вернул в system.

Всего записей: 686 | Зарегистр. 22-07-2004 | Отправлено: 02:13 07-02-2016
AlexCoRu

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
VadimLou, это ж сколько за собой потянет... Хотя, наверно, можно реализовать TInterfacedObject = object или TInterfacedObject = record, похоже RS10 object и record одно и то же. Но мне пока не надо.
Другая проблема нарисовалась. По ссылке, что дал Frodo_Torbins на Interfaces without objects, работает для RS10, для D7 не работает - не знает D7 про class function и static.
 

Всего записей: 868 | Зарегистр. 04-09-2003 | Отправлено: 12:41 07-02-2016
Alexey_Gawrilow



Full Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
AlexCoRu
VadimLou
Раз пошёл такой разговор
 

Цитата:
похоже RS10 object и record одно и то же

record в крайних версиях Delphi это фактически реанимация object'ного типа
в смысле
type TSomeObjType = object[(..)]..
вместо введенного именно Delphi(как Object Pascal)
type TSomeObjType = class[(..)]..
 
А основная причина такого расширения:
- другая работа с памятью, н-р запись передается по ссылке наоборот, по значению конечно ;
- перегрузка операторов.
 

Цитата:
Interfaces without objects

интерфейсы могут быть реализовыны и старыми добрыми записями и даже массивами.
 
в стандартных примерах Delphi есть пример реализации расширения оболочки(по моему, меню) безо всяких классов.
.\DelphiWin32\VCLWin32\ActiveX\ShellExt\PureContextMenu.pas  
 
можно вспомнить времена Delphi 2, когда интерфейсов еще не было, а программы с OLE2/COM уже были.
для dispinterface в язык даже ключевое слово automated ввели.
Так, automated, можно было пометить метод, доступный через dispatch
 
ещ ссылка, если интересно
http://www.deltics.co.nz/blog/?p=644
..
их много у меня, если что
 
напоминаю про Странника

Цитата:
Самые маленькие EXE, что я пробовал, только BlackBox и Странник генерировал.
Он раньше здесь жил  а теперь, через  веб архив вытаскивать надо.
 

Проблема не мэйнстриймовых средств в отсутсвии инфраструктуры.
В данном, случае, как понимаю, тебе она не нужна.

----------
C уважением, Алексей.
-----------------------------------------------
Хороших %s не бывает — бывает не худший вариант.

Всего записей: 572 | Зарегистр. 08-09-2003 | Отправлено: 17:10 07-02-2016 | Исправлено: Alexey_Gawrilow, 22:31 07-02-2016
VadimLou



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
AlexCoRu

Цитата:
не знает D7 про class function и static

"class function" - таки знает и даже с полиморфизмом (virtual, которого мне не хватает во всяких java и dotnet-ах ).
"static" - в D2007 активно заюзан (без него можно и обойтись)

Цитата:
это ж сколько за собой потянет

не так и много (для новых dcc tmonitor можно выбросить).
.

Всего записей: 686 | Зарегистр. 22-07-2004 | Отправлено: 18:24 07-02-2016
Alexey_Gawrilow



Full Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
VadimLou
class function BlaBla; static;
 
эквивалентно простому указателю на функцию.
 
static не передает Self
class привязывает метод к типу, а не к истансу.

Всего записей: 572 | Зарегистр. 08-09-2003 | Отправлено: 22:45 07-02-2016
VadimLou



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Но если так припёк static перепрыгивай c D7 на D2007 - тоже ансишный компилер.
Но всё равно не вижу смысла выбрасывать копеешную реализацию tobject/tintefacedobject из system.
Смотри, я взял твой вариант system для D7 и впихнул туда tobject/tinterfacedobject/ansistring. Итого exe 7kb для D7 или D2007.
Немного поправил exception-ы, а то при сбое оно у тебя зацикливалось. Так хоть "красиво" падает
Но вообще то exception-ы лучше полностью перенести. Оно думаю критично будет для интерфейсов, особенно через com/ole.
#

Всего записей: 686 | Зарегистр. 22-07-2004 | Отправлено: 23:44 07-02-2016 | Исправлено: VadimLou, 04:12 08-02-2016
AlexCoRu

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
В данном случае большой разницы между D7 и RS10 не вижу, разница в 32-разрядном приложении 400 байт, 64-разрядное плюс ещё 5К. Просто упёрся в Interfaces without objects без static. Не пойму как сделать, интересно ведь. Да и зачем этот прокси-код, сначала создаём структуру в которой где-то среди прочего таблица итерфейса, а потом её ищем. Можно ж сразу создать то что нужно. Если б мне нужен был TObject или приходилось бы создавать много интерфйсов, тогда - да. Но уменя всего один интерфейс и тот не очень нужен, только для лога, включается опционально.
Кстати, приложение использует Sync Framework, так 64-разрядное выполняет синхронизацию заметно дольше 32-разрядного. Может дело в Sync Framework, конечно.
Екценпшны оставлю. Памятью управляешь через Global, а не через Heap по привычке?
Цитата:
The global functions are slower than other memory management functions and do not provide as many features. Therefore, new applications should use the heap functions. However, the global functions are still used with DDE, the clipboard functions, and OLE data objects.

Всего записей: 868 | Зарегистр. 04-09-2003 | Отправлено: 11:07 09-02-2016 | Исправлено: AlexCoRu, 11:14 09-02-2016
AlekXL



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Alexey_Gawrilow
 

Цитата:
record в крайних версиях Delphi это фактически реанимация object'ного типа  

это не так. Нет в рекордах наследования и полиморфизма.  А в object нету обобщений. Так что record далеко не object.
-----
Speaking of that, друзья, предположим, у вас есть волшебная палочка, и вы можете заставить Абракадабру заставить реализовать любую фичу в студии(компиляторе, и т.д.), -- при условии, что такое требование реализуемо посредством имеющихся у компании ресурсов, и реализация займет не больше года...
 
Можно назвать не более трех фич, по убыванию приоритета. Итак, что бы попросили?  
 
 
 
Добавлено:
я бы попросил:
1. полноценный отладчик Android -- быстрый, bullet-proof robust, и желательно вообще без gdb
2. возможность полного отключения arc на мобильных платформах, либо включение его на десктопе
3. llvm backend for Delphi desktop compilers

Всего записей: 789 | Зарегистр. 24-04-2008 | Отправлено: 21:48 15-02-2016
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Embarcadero RAD Studio

Имя:
Пароль:
Сообщение

Для вставки имени, кликните на нем.

Опции сообщенияДобавить свою подпись
Подписаться на получение ответов по e-mail
Добавить тему в личные закладки
Разрешить смайлики?
Запретить коды


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.Board
© Ru.Board 2000-2020

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru