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

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

Модерирует : 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

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

valgreesh



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

Цитата:
Считаю, отказ от with - это намеренная диверсия, чтобы затруднить перенос кода и отсечь максимальное кол-во желающих портировать код.

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

Всего записей: 290 | Зарегистр. 30-11-2011 | Отправлено: 10:43 23-04-2013
deks



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
RuXandr
 
Ну.. Это особенность LLVM, которую ЭМРО не смогла победить. Странно, конечно, - ведь LLVM open sourced, следственно можно было поменять код. Типа, "если в нем есть вызов функции или есть try finally, то делать тот самый landing pad". но нужен был форк LLVM с этим дополнением, а это требует квалификации в LLVM, которой, видимо, не хватило - в результате им проще написать в readme чего то такое, чем фиксить нежелательное поведение! Пять минут позора, а x часов квалифицированного разработчика в кармане  
 
Да, ЭМРО я понимаю, но это не значит что одобряю) Мне в целом не очень нравится FMX-way: для себя я пока классифицировал его непригодным.
 

Всего записей: 857 | Зарегистр. 09-10-2003 | Отправлено: 13:24 23-04-2013
LadyOfWood

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

Цитата:
Вместо убиения старых версий дельфей они рискуют недополучить девелоперов на новых версиях.

Об этом они не думают, мне постоянные перетасовки в последних Delphi вообще не очень понятны, вроде и ничего плохого, но с другой стороны уже все привыкли как есть.

Всего записей: 620 | Зарегистр. 16-09-2003 | Отправлено: 16:34 23-04-2013
Arioch1



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

Цитата:
Ну.. Это особенность LLVM, которую ЭМРО не смогла победить.

не захотела
 

Цитата:
Странно, конечно, - ведь LLVM open sourced, следственно можно было поменять код. Типа, "если в нем есть вызов функции или есть try finally, то делать тот самый landing pad"

Этого могли другие не захотеть. Но есть же способ проще - на уровне DCC back-end - убирать внутренности try-finally в скрытые процедуры
 
Добавлено:
Кстати, вот я привык считать D5 и D7 звздным часом Дельфи... А вдеь там тоже быдлокода хватает.
 
uses FMTBcd;  
Writeln( _LongMultiply('000','123'));

Всего записей: 904 | Зарегистр. 03-03-2010 | Отправлено: 16:37 23-04-2013
LadyOfWood

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

Цитата:
D7 звздным часом Дельфи...

D7 был конечно хорош Но вот накой дальше они сделали  Delphi 8 это никому не известно.

Всего записей: 620 | Зарегистр. 16-09-2003 | Отправлено: 16:43 23-04-2013
delover

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

Цитата:
Но вот накой дальше они сделали  Delphi 8 это никому не известно.

Я например в своих исходниках поймал больше 10 багов Delphi8. Тогда я публиковался в централе. У .NET святая идея - компилятор, база и интерфейс - это система, процессор - ничто. Разработано красиво, реализовано сыро как MSDOS 3.5. Ну так то же самое время прошло. Интерфейс совместной жизни с дотнет - нот манагед, по этому вижул студия быстрая. В те времена MS ушла от общественности, сейчас похоже и Delphi уходит (я бы без вливаний тоже ушол).

Всего записей: 1395 | Зарегистр. 25-06-2007 | Отправлено: 19:33 23-04-2013
deks



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Arioch1
 
LLVM - это и есть back-end, он генерирует конечный код. Просто вместо фронт-энда в виде CLang к нему приделали парсер паскаля. Но вы правы, задачу можно решить разными путями - и патчем backend в LLVM, и генерацией лишнего кода в frontend.. Такая "особенность" нового компилятора  delphi - явный признак недоработанности продукта. Надеюсь, поправят!  
 
all
 
по поводу "with". Ну и хорошо, что начали убирать некоторые спорные фичи языка. Язык должен развиваться, и приходит время отказываться от багажа всяких "исторических" вещей. Вон - Windows тянула-тянула багаж, и дотянула до Windows8. В этом смысле я с Apple более солидарен - они довольно легко хоронят "устаревшие" технологии (carbon, rosetta, ...). По поводу "как это сделать" - я бы сделал refactoring на тему замены with на промежуточную переменную. У ЭМРО же есть парсер, компилятор - они все знают о коде! почему бы не предложить в IDE апгрейд такого кода?  
 
Аналогично со строками: нужна автоматизированная утилита для апгрейда 1-based string кода на 0-based immutable. Чтобы именно компилятор/парсер анализировал использование строк и доступ к ним. И предлагал или автоматический апгрейд, или указывал на "подозрительные" места!
 
Видимо, в ЭМРО лень делать такой сервис пользователям - и так руками перелопатят код!  
 

Всего записей: 857 | Зарегистр. 09-10-2003 | Отправлено: 21:47 23-04-2013
delover

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
deks
Я Вас тоже спрашиваю. Мне интересно все тупят? JCL делала последний коммит в SVN 28 янваля. Вы что считаете XE4 освещщена?
 

Цитата:
Видимо, в ЭМРО лень делать такой сервис пользователям - и так руками перелопатят код!  

Кому лень? Кто деньги зарабатывает, или Вам?

Всего записей: 1395 | Зарегистр. 25-06-2007 | Отправлено: 22:12 23-04-2013
Eternal_Shield

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

Цитата:
по поводу "with". Ну и хорошо, что начали убирать некоторые спорные фичи языка.

Ничего хорошего. Есть моменты, когда with ничем не заменить. Не буквально, разумеется. Имхо, это намеренное умерщвление языка.  

Всего записей: 766 | Зарегистр. 18-05-2009 | Отправлено: 22:25 23-04-2013
X11



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
жаль
with иной раз сильно сокращает код

----------
/не мы такие, жизнь такая/

Всего записей: 3253 | Зарегистр. 24-11-2005 | Отправлено: 22:51 23-04-2013
LadyOfWood

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

Цитата:
Разработано красиво, реализовано сыро как MSDOS 3.5.  

MS-DOS нигода не было версии 3.5 deks
deks
With все-таки часть языка и вот убирать все-таки очень спорно.

Всего записей: 620 | Зарегистр. 16-09-2003 | Отправлено: 23:10 23-04-2013
mcka

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Всем привет.
Пытаюсь реализовать в Delphi XE3  это.
Интерфейс IInitializeWithStream объявлен в модуле PropSys.  
Интерфейс IThumbnailProvider объявил сам:

Код:
{$EXTERNALSYM IThumbnailProvider}
  IThumbnailProvider = interface(IUnknown)
    ['{e357fccd-a995-4576-b01f-234630154e96}']
    function GetThumbnail(cx: uint; out hBitmap: hBitmap; out bitmapType: dword)
      : HRESULT; stdcall;
  end;

поправьте если не так. msdn IThumbnailProvider::GetThumbnail method .
 
"DCMThumbnail.dpr"
 
"DCMFileExtension.reg"
 
"Main.pas"
 
"install.bat"
 
1. Компиляция - ok, с варнингом:

Код:
[dcc32 Warning] Main.pas(30): W1010 Method 'Initialize' hides virtual method of base type 'TComObject'
 
2. DCMFileExtension.reg - ok
3. install.bat - ok
 
DebugString не вижу, что не так? поиск по инету с ключевым словом IThumbnailProvider  результата не дал ((. Помогите!

Всего записей: 65 | Зарегистр. 04-09-2007 | Отправлено: 10:28 24-04-2013 | Исправлено: mcka, 10:37 24-04-2013
Eternal_Shield

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

Цитата:
1. Компиляция - ok, с варнингом:

ключевое слово reintroduce сделает своё дело Подробнее...
 
Ошибок не вижу. Объявление интерфейса "портировано" верно.
 

Цитата:
DebugString не вижу, что не так?

Каким образом проверяете работоспособность своей DLLки? Где Вы ожидаете результаты OutputDebugString увидеть? В IDE? Если да, то сначала надо к соотв. процессу приаттачиться, а потом уже ждать вывода. Либо сразу в файл писать. Если приаттачиться к процессу не удаётся или сам процесс найти сложно.

Всего записей: 766 | Зарегистр. 18-05-2009 | Отправлено: 11:43 24-04-2013
mcka

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Eternal_Shield естественно не из среды, использую DebugView v4.81
Данный варнинг не влиял на конечный результат.
Изменения реестра тоже можно перенести в метод:

Код:
procedure UpdateRegistry(Register: Boolean); override;

но это потом, я сейчас не могу понять почему не работает данный код?
 
Спасибо за поддержку.

Всего записей: 65 | Зарегистр. 04-09-2007 | Отправлено: 13:54 24-04-2013 | Исправлено: mcka, 14:09 24-04-2013
Arioch1



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

Цитата:
 JCL делала последний коммит в SVN 28 янваля

SVN's dead, baby
 
а у Git'a геморрой с CR/LF vs LF на концах
https://github.com/project-jedi/jcl/commits/master
 
А в общем, кому нужен XE4 если XE5 будет через несколько месяцев ?
 
 
Добавлено:
mcka
 
Это не BPL, это DLL. Убери зверский код из main.pas initialization.
 
Сделай просто lazy init переменную, которая будет вызываться из других функций и при первом вызове действительно создаст что надо.
 
http://www.transl-gunsmoker.ru/2009/01/dllmain.html
http://www.transl-gunsmoker.ru/2009/01/dllmain_7983.html
 
Добавлено:

Цитата:
утилита для апгрейда 1-based string кода на 0-based immutable.

 
Не надо, надо делать паскалевскую обёртку строки, поверх иммутабельной LLVMной (если такая вообще существует. LLVM вроде как языками заведует, а не библиотеками)
 
GDI Font иммутабельный - но VCL TFont вполне мутирует.
Аналогично TWinControl.ReCreateWnd.
и т.д.
 

Цитата:
По поводу "как это сделать" - я бы сделал refactoring на тему замены with на промежуточную переменную

 
Угу, а потом Дельфи сломалась!!! ничего не работает!!11111

Цитата:
form8.ADOQuery2.Active:=false;
form8.ADOQuery2.SQL.Clear;
form8.ADOQuery2.SQL.Add('SELECT min(data)');
form8.ADOQuery2.SQL.Add('FROM Table_1');
form8.ADOQuery1.Active:=true;
edit1.Text:=adoquery2.FieldByName('data').AsString;

 
А временные переменные, особенно автоматические, имеенно так и будут называться, i1, i2, i3...
 
Если уж неймётся - то надо расширять with и вводить type inference

Цитата:
with const A1 := ADOQuery1, A2 := ADOQuery2 do begin
...
end;

Расширил же Вирт is/as и не заморачивался с пуризмом
 
И то же самое наконец сделать с юнитами, чтобы они семантически как можно меньше отличались от классов. Заодно облегчится проблема глобальных переменных - они хотя бы перестанут засорять пространство имён.

Всего записей: 904 | Зарегистр. 03-03-2010 | Отправлено: 13:58 24-04-2013 | Исправлено: Arioch1, 14:10 24-04-2013
Eternal_Shield

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

Цитата:
естественно не из среды, использую DebugView v4.81

Конкретнее можно? Вы загружаете DLLку в DebugView или открываете тот процесс, который загружает Вашу DLL? Если первое, то ничего и не должно происходить, если второе, то тут, конечно, надо копать что к чему.
 

Всего записей: 766 | Зарегистр. 18-05-2009 | Отправлено: 14:40 24-04-2013
mcka

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Eternal_Shield  
я запускаю debugview, вижу что он подключился, он отображает все сообщения даже kernel, затем я регистрирую в системе свою dll с помощью  
Regsvr32.exe DCMThumbnail.dll - ок
затем загружаю explorer открываю папку где лежат файлы *.dcm в результате я не вижу что система подключила мою ддл. т.е. GetThumbnail method должен вызваться (должны посыпаться debugstring) системой для получения изображения(Thumbnail) моих dcm-файлов
 
как в этой статье c xyz-файломи
   
 
Добавлено:
Eternal_Shield ПРОГРЕСС!  
в метод GetThumbnail добавил  

Код:
 
  s := TStringList.Create;
  s.Add('TDCMThumbnail.GetThumbnail');
  s.SaveToFile('d:\11111111.txt');
  s.Free;
 

 
и файл создался, моя ошибка в том, что я был уверен, что debugstring должны были быть, все работало, код правильный, а я голову ломал.

Всего записей: 65 | Зарегистр. 04-09-2007 | Отправлено: 15:23 24-04-2013 | Исправлено: mcka, 15:50 24-04-2013
Arioch1



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
опробуй в конец outputdebugstring добавить #13#10

Всего записей: 904 | Зарегистр. 03-03-2010 | Отправлено: 16:28 24-04-2013
Eternal_Shield

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

Цитата:
и файл создался, моя ошибка в том, что я был уверен, что debugstring должны были быть, все работало, код правильный, а я голову ломал.

Ну и слава богу, что само всё разрешилось, а то я уже собирался прийти домой и разобраться в чём там проблема, т.к. на работе никак

Всего записей: 766 | Зарегистр. 18-05-2009 | Отправлено: 18:43 24-04-2013 | Исправлено: Eternal_Shield, 18:43 24-04-2013
mcka

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Eternal_Shield Еще раз спасибо!

Всего записей: 65 | Зарегистр. 04-09-2007 | Отправлено: 14:31 25-04-2013
Открыть новую тему     Написать ответ в эту тему

Страницы: 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

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


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

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru