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

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Вопросы по Delphi (версии 2009, 2010 Weaver, 2011 Fulcrum)

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

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

data man



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Обсуждаем новые возможности и баги
Просьба писать только про Delphi 2009 и выше - по остальным версиям есть соответствующая тема.
Вопросы вареза здесь не обсуждаются !!!
См. также:
Известные важные баги Delphi 2010:

Описание________________________________________________ Исправлено Решение/Альтернатива_____________________
  1. Внимание !  Деинсталляция D2010 нарушает работу D2007 и D2009 !  
При деинсталляции удаляются CC3280MT.DLL и CC3290MT.DLL из Windows\System32,   необходимые для работы D2007 и D2009 соответственно.
Сделайте резервные копии
  2. Code Formatter не работает, если не инсталлирован пакет моделирования.   В нем также присутствует множество багов. Используйте с осторожностью.   1.   JEDI CodeFormat 2.44 SVN Snapshot (~750Kb)   Требуются JCL и JVCL  
2.GExperts with Formatter
  3. Не работает F1 в Object Inspector Update 2   IDEFixPack 2.9 от Andreas Hausladen
(dev. snapshots)
  4. Если IDE начинает падать с сообщением "Out of resources", возможно, что поврежден .res файл проекта. Удалить его, запустить IDE, открыть проект - новый .res файл будет создан автоматически.
  5. В редакторе не работает Class Completion, если в декларируемом классе есть поля с шаблонами. Перед декларированием поля добавить public или private и т.д.
  6. TTrayIcon.ShowBalloonHint() не работает на ОС ниже Vista [QC 77561] Update 2 * Установить Update 2   * ИЛИ почитать о причинах и решении проблемы на форуме embarcadero и в QC   * ИЛИ воспользоваться альтернативой, например Cooltray 4.4.0
  ...      


Всего записей: 1696 | Зарегистр. 13-10-2005 | Отправлено: 14:28 26-08-2009 | Исправлено: data man, 18:27 06-08-2010
andrewtishkin



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

Цитата:
Никак не могу найти где это вобще может настраиваться.

Нашёл чисто интуитивно, с ходу, за считанные секунды

(там у скриншота на всякий случай добавил текстовое описание, хотя и так всё понятно)

Всего записей: 781 | Зарегистр. 28-08-2008 | Отправлено: 01:15 18-09-2009
Alexos



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Спасибо, вобще странно у меня там стояло default, при изменение на Visual Studio и затем обратно все стало нормально.

Всего записей: 43 | Зарегистр. 03-12-2006 | Отправлено: 01:35 18-09-2009
Boldog39

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Народ, подскажите, где найти таблетку на Delphi 2010 Prism?

Всего записей: 3 | Зарегистр. 18-09-2009 | Отправлено: 10:37 18-09-2009
data man



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Boldog39
Здесь не варезник ! Ссылка в шапке.

----------
Любой достаточно развитый тролль неотличим от подлинно помешанного на какой-либо идее.
Кекс. Антибиотики. Ламбада.

Всего записей: 1696 | Зарегистр. 13-10-2005 | Отправлено: 11:03 18-09-2009
spasius



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
нашел еще один баг. попытался настроить внешний вид как у 7-ки, убрал галочку embedded designer. Перезапустил Студию и у всех компонентов VCL пропали значки, т.е. стали стандартные ...

Всего записей: 695 | Зарегистр. 16-03-2009 | Отправлено: 12:18 18-09-2009
Frodo_Torbins

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
andrewtishkin
Вижу не у одного меня в диалоге настройки чекбоксы обрезаются при высоких DPI.

Всего записей: 2318 | Зарегистр. 24-05-2007 | Отправлено: 18:28 18-09-2009
andrewtishkin



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

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

И не только они... В свойствах проекта, например, где управление формами производится кнопки обрезаны слева и справа. С DPI накосячили
 
spasius, попробовал повторить - не получилось. Значки на месте
Опять какой-то "плавающий баг", imho, надо умудриться его поймать.

Всего записей: 781 | Зарегистр. 28-08-2008 | Отправлено: 21:36 18-09-2009 | Исправлено: andrewtishkin, 21:37 18-09-2009
xxx2008

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
andrewtishkin
ессно, у меня так
 
{$IFNDEF DEBUG}
{$SetPEFlags IMAGE_FILE_RELOCS_STRIPPED}
{$SetPEFlags IMAGE_FILE_DEBUG_STRIPPED}
{$SetPEFlags IMAGE_FILE_LINE_NUMS_STRIPPED}
{$SetPEFlags IMAGE_FILE_LOCAL_SYMS_STRIPPED}
{$SetPEFlags IMAGE_FILE_AGGRESIVE_WS_TRIM}
{$SetPEFlags IMAGE_FILE_REMOVABLE_RUN_FROM_SWAP}
{$SetPEFlags IMAGE_FILE_NET_RUN_FROM_SWAP}
{$SetPEFlags IMAGE_FILE_EXECUTABLE_IMAGE}
{$ENDIF}
 
Если делать как я, то можно в дебаге нормально отлаживать без необходимости постоянного изменения, а при релизе всё лишнее автоматом выкидывается. Да и кстати в 2009 был трабл если указывать директивы через or в несколько строк, то затем ошибки при компиляции (если они есть) на неверных строках будет показывать, поэтому сделал каждую новую строчку через SetPEFlags.

Всего записей: 81 | Зарегистр. 31-12-2007 | Отправлено: 11:26 19-09-2009 | Исправлено: xxx2008, 11:27 19-09-2009
Alexos



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

Цитата:
Если делать как я, то можно в дебаге нормально отлаживать без необходимости постоянного изменения, а при релизе всё лишнее автоматом выкидывается.

 
Судя по этому

Цитата:
{$IFNDEF DEBUG}

 
Как раз при профиле Debug у вас все вырезается а при релизе ничего не делается.

Всего записей: 43 | Зарегистр. 03-12-2006 | Отправлено: 13:47 19-09-2009
funnyman

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

Цитата:
Судя по этому
 
Цитата:
{$IFNDEF DEBUG}
 
 
Как раз при профиле Debug у вас все вырезается а при релизе ничего не делается.
 

С точнотью до наоборот {$IFNDEF DEBUG}. Внимательней на директиву посмотри

Всего записей: 106 | Зарегистр. 08-01-2003 | Отправлено: 19:20 19-09-2009
Alexos



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Точно, мозг не заметил букву N )
 
Никто не знает как избавиться от старого вида списка компонент, выключаю. его в настройках сохраняю рабочий стол, а он все равно при переключении вылазит

Всего записей: 43 | Зарегистр. 03-12-2006 | Отправлено: 19:39 19-09-2009
psa1974



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

Код:
 
procedure TForm1.Button1Click(Sender: TObject);
var x1,y1: Integer;
 
  function getval(x, y: Integer):TPoint;
  begin
    Result.x:= x;
    Result.y:= y;
  end;
 
begin
  x1:= 0;
  y1:= 0;
  with getval(x1, y1) do
  begin
    x:=x+ 1;
    y:= 2;
    ShowMessage(IntToStr(x)+':'+ IntToStr(y));
  end;
end;

 
В Дельфи 2009 такой код замечательно работает: вылазит мессага "1:2".
В Дельфи 2010 тупо пишет: "DCC Error: E2064 Left side cannot be assigned to"
Почему, собственно? (нет, я конечно понимаю, что можно объявить переменную типа TPoint, в нее запихнуть результат вызова getval(x1, y1) и с дальше с ней работать, но, чего вдруг такой геморрой?!)

Всего записей: 438 | Зарегистр. 08-11-2005 | Отправлено: 15:05 20-09-2009 | Исправлено: psa1974, 15:11 20-09-2009
V1s1ter



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

Цитата:
В Дельфи 2009 такой код замечательно работает

Не уверен, что имено ЭТОТ код работает.
Поскольку строкой x:=x+ 1; Вы присваиваете значение не переменной, а функции то есть Вы написали getval(x1, y1).x:=getval(x1, y1).x+1; А вот строка x1:=x+ 1; сработает ипод D2009 и D2010
Если конечно не задействовать какие то хитрые настройки компилятора.

Всего записей: 948 | Зарегистр. 06-02-2007 | Отправлено: 19:01 20-09-2009 | Исправлено: V1s1ter, 19:03 20-09-2009
psa1974



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

Цитата:
Не уверен, что имено ЭТОТ код работает.

А пробовал? Я ж прежде чем написать, прогнал этот код в Делфи 2009 и попытался в Делфи 2010... Так что - в Делфи 2009 работает, 100%. Безусловно приведенный пример не имеет смысла, он отражает лишь идею. И обратил внимание на это я не просто так и не сам это придумал - я начал портировать компонент TMPHexEditor http://www.mirkes.de/files/delphi/hexedit.zip на Дельфи 2010. Если не поленишься то глянь в файле mphexeditor.pas код  для  

Код:
function TCustomMPHexEditor.ShowDragCell(const X, Y: integer): integer;
 
Под # я привел выдержки из этого файла касательно указанной функции...
 
Во всех предыдущих Делфях указанный код работает (на Дельфи 2009 давно портировал и имею рабочий вариант). Кроме  Дельфи 2010. Компилятор Дельфи 2010 первый раз матерится на строке № 5806:

Код:
X := GRID_FIXED;

Вот так то. Да, кстати, настройки компиляторов - по дефолту, за исключением группы runtime errors - здесь у меня по жизни все включено во всех версиях Дельфей.
Как по мне, так обращение к результату ф-ции, для которой применен оператор with ничем не отличается от обращения к элементам некоего класса по Self внутри метода, написанного для него.

Всего записей: 438 | Зарегистр. 08-11-2005 | Отправлено: 02:08 21-09-2009 | Исправлено: psa1974, 02:29 21-09-2009
V1s1ter



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
psa1974
Семен-семеныч... Copyrigth Брилиантовая рука
В приведенном Вами примере и во втором случае есть принципиальная разница.
В Вашем примере по одной переменной X и Y, а их случае по две: первая пара как параметры самой проседуры и вторая пата как результат работы with
Замените в Вашем примере строку var x1,y1: Integer;  на var x,y: Integer; и получите то что и у них.
Вот фрагмент их кода  

Код:
 
function TCustomMPHexEditor.ShowDragCell(const X, Y: integer): integer;
begin
  with MouseCoord(X, Y) do       здесь X, Y входные параметры ShowDragCell
  begin
    LIntMouseX := X;              здесь X от MouseCoord  
    LIntMouseY := Y;              здесь Y от MouseCoord
    if X < GRID_FIXED then    здесь X от MouseCoord
      X := GRID_FIXED;          здесь X входной параметр ShowDragCell
    if Y >= RowCount then      здесь Y от MouseCoord
      Y := RowCount - 1;          здесь Y входной параметр ShowDragCell
    if Y < GRID_FIXED then     здесь Y от MouseCoord
      Y := GRID_FIXED;          здесь Y входной параметр ShowDragCell
    LIntDragPos := GetPosAtCursor(X, Y)     здесь X, Y от MouseCoord
  end;
 

У меня нет делфи 2010 чтобы поробовать, но пока остаюсь на своем

Цитата:
Не уверен, что имено ЭТОТ код работает

 
 

Всего записей: 948 | Зарегистр. 06-02-2007 | Отправлено: 02:54 21-09-2009
psa1974



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
V1s1ter
В том то и дело, что У НИХ НЕ РАБОТАЕТ под Дельфи 2010! Я просто в своем примере сделал разные переменные, чтобы убрать путанницу

Код:
 
function TCustomMPHexEditor.ShowDragCell(const X, Y: integer): integer;  
begin  
  with MouseCoord(X, Y) do       здесь X, Y входные параметры ShowDragCell  
  begin  
    LIntMouseX := X;              здесь X от MouseCoord  
    LIntMouseY := Y;              здесь Y от MouseCoord  
    if X < GRID_FIXED then    здесь X от MouseCoord  
      X := GRID_FIXED;          здесь X входной параметр ShowDragCell, входной параметр объявлен как константа, однако в Дельфи 2009 этот код работает, что  говорит о том, что Х здесь - от MouseCoord!
    if Y >= RowCount then      здесь Y от MouseCoord  
      Y := RowCount - 1;          здесь Y входной параметр ShowDragCell аналогично
    if Y < GRID_FIXED then     здесь Y от MouseCoord  
      Y := GRID_FIXED;          зздесь Y входной параметр ShowDragCell аналогично
    LIntDragPos := GetPosAtCursor(X, Y)     здесь X, Y от MouseCoord  
  end;
 


Цитата:
Замените в Вашем примере строку var x1,y1: Integer;  на var x,y: Integer; и получите то что и у них.

Думаете не пробовал? В Дельфи 2010 не катит! Чтоб уже совсем все точно было, вот код,который работает в Дельфи 2009 и не работает в Дельфи 2010:

Код:
 
procedure TForm8.Button1Click(Sender: TObject);
const
  x = 0; y = 0;
 
  function getval(x, y: Integer):TPoint;
  begin
    Result.x:= x;
    Result.y:= y;
  end;
 
begin
  with getval(x, y) do
  begin
    x:=x+ 1;
    y:= 2;
    ShowMessage(IntToStr(x)+':'+ IntToStr(y));
  end;
end;
 

Всего записей: 438 | Зарегистр. 08-11-2005 | Отправлено: 03:28 21-09-2009 | Исправлено: psa1974, 03:50 21-09-2009
andrewtishkin



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
psa1974
http://qc.embarcadero.com

Всего записей: 781 | Зарегистр. 28-08-2008 | Отправлено: 04:15 21-09-2009
V1s1ter



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
psa1974
Точно на 2007 работает. Удивлен, с точки зрения реализации все нормально, а вот с точки зрения требований Паскаля описывать все переменные - удивлен.
Конечно с точки зрения реализации with должна создавать в памяти скрытую переменную, но разрешить туда писать... не ожидал.
Я никогда такими недокументированными возможностями не пользовался, или где-то документировано?

Всего записей: 948 | Зарегистр. 06-02-2007 | Отправлено: 04:30 21-09-2009
psa1974



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
andrewtishkin
ага,спасибо, там уже в курсе:QC#77310
 
V1s1ter

Цитата:
Конечно с точки зрения реализации with должна создавать в памяти скрытую переменную, но разрешить туда писать...  

область памяти выделяет не with, а ф-ция, для которой with прописан, а with просто обеспечивает доступ к полям этой области памяти.

Цитата:
Я никогда такими недокументированными возможностями не пользовался, или где-то документировано?

Ну почему же? Нормальный подход.  А такой конструкцией никогда не пользовались?:

Код:
procedure TForm2.Button2Click(Sender: TObject);
begin
  with TStringList.Create do
  try
    Add('Ага, работает ');
    Strings[0]:= Strings[0]+ ' Сто пудов!';
    ShowMessage(Strings[0]);
  finally
    Free;
  end;
end;

То же самое - в памяти создается объект без явного указания переменной этого типа. У меня такое использование - сплошь и рядом... Но это уже оффтоп, прошу не бить Вопрос закрыт, поскольку, как выяснилось, найденная мной проблема не фича, а баг. И кстати, проблема присутствует только при обращении внутри with к полям записи. Обращение к методам и свойствам класса - без проблем.

Всего записей: 438 | Зарегистр. 08-11-2005 | Отправлено: 04:59 21-09-2009 | Исправлено: psa1974, 05:24 21-09-2009
0D0A

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Тут уже писали про уменьшение размера ехе дефайнами отключения нового RTTI...  
 
Сделал так: сложил все используемые в проекте сорцы RTL/VCL в отдельную папку ивставил ее на первое место в Library Path (до $(BDS)\lib) - размер ехе волшебным образом уменьшился на 200К.
 
Есть мнение, что $(BDS)\lib скомпилена с дебажной инфой

Всего записей: 158 | Зарегистр. 21-09-2009 | Отправлено: 21:37 23-09-2009
Открыть новую тему     Написать ответ в эту тему

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

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Вопросы по Delphi (версии 2009, 2010 Weaver, 2011 Fulcrum)


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

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

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru