вроде переустановил на дцатый раз - форматтер заработал. хз что надо инсталлеру этому.
» Вопросы по Delphi (версии 2009, 2010 Weaver, 2011 Fulcrum)
data man
версия 2.60. после компиляции простых примеров в тело компонента просто не реально вписать русский символ, что на 2009, что на 2010. ((
версия 2.60. после компиляции простых примеров в тело компонента просто не реально вписать русский символ, что на 2009, что на 2010. ((
spasius
Fix (ecSyntMemo.pas) с их форума:
Код:
procedure TCustomSyntaxMemo.KeyPress(var Key: Char);
var WC: ecChar;
begin
inherited;
{$IFDEF EC_UNICODE}
{$IFDEF EC_STRING_UNICODE}
WC := Key;
{$ELSE}
if (Key = #63) and (FUniChar <> #0) then WC := FUniChar
else WC := ecKeyChar(Key);
FUniChar := #0;
{$ENDIF}
{$ELSE}
WC := Key;
{$ENDIF}
....
Fix (ecSyntMemo.pas) с их форума:
Код:
procedure TCustomSyntaxMemo.KeyPress(var Key: Char);
var WC: ecChar;
begin
inherited;
{$IFDEF EC_UNICODE}
{$IFDEF EC_STRING_UNICODE}
WC := Key;
{$ELSE}
if (Key = #63) and (FUniChar <> #0) then WC := FUniChar
else WC := ecKeyChar(Key);
FUniChar := #0;
{$ENDIF}
{$ELSE}
WC := Key;
{$ENDIF}
....
data man
Спасибо, рулит. А то мне пришлось вообще эту процедуру урезать до WC := Key;
Предлагаю засунуть сей сабж в копилку с исправлениями ...
Спасибо, рулит. А то мне пришлось вообще эту процедуру урезать до WC := Key;
Предлагаю засунуть сей сабж в копилку с исправлениями ...
spasius
Цитата:
Проще смотреть форум производителя. Тем более что там есть и другие фиксы.
Цитата:
Предлагаю засунуть сей сабж в копилку с исправлениями ...
Проще смотреть форум производителя. Тем более что там есть и другие фиксы.
data man
Цитата:
За ссылки спасибо, посмотрю.
Хотя ИМНО это все равно обходной, а не стандартный путь. В этом случае и конструкция с case сгодится.
data man
andrewtishkin
И все таки мне не понятен один момент: То что CharInSet и Char in [] не работают с русскими буквами это проблема только у кириллицы или и у других национальных кодировок такая же проблема ?
Например работает ли CharInSet и Char in [] с немецкими, французкими, японскими кодировками (ведь D2010 именно на эти языки локализована) ?
Цитата:
WideCharSet
За ссылки спасибо, посмотрю.
Хотя ИМНО это все равно обходной, а не стандартный путь. В этом случае и конструкция с case сгодится.
data man
andrewtishkin
И все таки мне не понятен один момент: То что CharInSet и Char in [] не работают с русскими буквами это проблема только у кириллицы или и у других национальных кодировок такая же проблема ?
Например работает ли CharInSet и Char in [] с немецкими, французкими, японскими кодировками (ведь D2010 именно на эти языки локализована) ?
StalkerSoftware
Цитата:
Проблема есть у всех. Если не ошибаюсь, на их форуме вопрос задавал и поляк в том числе.
Да это и из кода функции понятно:
Код: function CharInSet(C: WideChar; const CharSet: TSysCharSet): Boolean;
begin
Result := (C < #$0100) and (AnsiChar(C) in CharSet);
end;
Цитата:
у других национальных кодировок такая же проблема ?
Проблема есть у всех. Если не ошибаюсь, на их форуме вопрос задавал и поляк в том числе.
Да это и из кода функции понятно:
Код: function CharInSet(C: WideChar; const CharSet: TSysCharSet): Boolean;
begin
Result := (C < #$0100) and (AnsiChar(C) in CharSet);
end;
Цитата:
{$WEAKLINKRTTI ON}
{$RTTI EXPLICIT METHODS([]) FIELDS([]) PROPERTIES([])}
Ого, респект за это! Позволяет на тестовом примере с одной формой экономить 50Кб
Было 798Кб, стало 753Кб.
xxx2008
А [more=остальное]
{$SetPEFlags IMAGE_FILE_RELOCS_STRIPPED or IMAGE_FILE_LINE_NUMS_STRIPPED or IMAGE_FILE_LOCAL_SYMS_STRIPPED or IMAGE_FILE_DEBUG_STRIPPED}
[/more] уже выкинуто, что и в версиях < D2010 выкидывалось?
А [more=остальное]
{$SetPEFlags IMAGE_FILE_RELOCS_STRIPPED or IMAGE_FILE_LINE_NUMS_STRIPPED or IMAGE_FILE_LOCAL_SYMS_STRIPPED or IMAGE_FILE_DEBUG_STRIPPED}
[/more] уже выкинуто, что и в версиях < D2010 выкидывалось?
Как то, не понял как, у IDE поменялись все хоткеи, видимо на какой то старый вариант.
Например Сохранить F2
Никак не могу найти где это вобще может настраиваться.
Например Сохранить F2
Никак не могу найти где это вобще может настраиваться.
Спасибо, вобще странно у меня там стояло default, при изменение на Visual Studio и затем обратно все стало нормально.
Народ, подскажите, где найти таблетку на Delphi 2010 Prism?
Boldog39
Здесь не варезник ! Ссылка в шапке.
Здесь не варезник ! Ссылка в шапке.
нашел еще один баг. попытался настроить внешний вид как у 7-ки, убрал галочку embedded designer. Перезапустил Студию и у всех компонентов VCL пропали значки, т.е. стали стандартные ...
andrewtishkin
Вижу не у одного меня в диалоге настройки чекбоксы обрезаются при высоких DPI.
Вижу не у одного меня в диалоге настройки чекбоксы обрезаются при высоких DPI.
Цитата:
Вижу не у одного меня в диалоге настройки чекбоксы обрезаются при высоких DPI.
И не только они... В свойствах проекта, например, где управление формами производится кнопки обрезаны слева и справа. С DPI накосячили
spasius, попробовал повторить - не получилось. Значки на месте
Опять какой-то "плавающий баг", imho, надо умудриться его поймать.
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.
ессно, у меня так
{$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.
Цитата:
Если делать как я, то можно в дебаге нормально отлаживать без необходимости постоянного изменения, а при релизе всё лишнее автоматом выкидывается.
Судя по этому
Цитата:
{$IFNDEF DEBUG}
Как раз при профиле Debug у вас все вырезается а при релизе ничего не делается.
Цитата:
Судя по этому
Цитата:
{$IFNDEF DEBUG}
Как раз при профиле Debug у вас все вырезается а при релизе ничего не делается.
С точнотью до наоборот {$IFNDEF DEBUG}. Внимательней на директиву посмотри
Точно, мозг не заметил букву N )
Никто не знает как избавиться от старого вида списка компонент, выключаю. его в настройках сохраняю рабочий стол, а он все равно при переключении вылазит
Никто не знает как избавиться от старого вида списка компонент, выключаю. его в настройках сохраняю рабочий стол, а он все равно при переключении вылазит
Имеем некий код:
Код:
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;
Код:
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;
psa1974
Цитата:
Не уверен, что имено ЭТОТ код работает.
Поскольку строкой x:=x+ 1; Вы присваиваете значение не переменной, а функции то есть Вы написали getval(x1, y1).x:=getval(x1, y1).x+1; А вот строка x1:=x+ 1; сработает ипод D2009 и D2010
Если конечно не задействовать какие то хитрые настройки компилятора.
Цитата:
В Дельфи 2009 такой код замечательно работает
Не уверен, что имено ЭТОТ код работает.
Поскольку строкой x:=x+ 1; Вы присваиваете значение не переменной, а функции то есть Вы написали getval(x1, y1).x:=getval(x1, y1).x+1; А вот строка x1:=x+ 1; сработает ипод D2009 и D2010
Если конечно не задействовать какие то хитрые настройки компилятора.
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... Так что - в Делфи 2009 работает, 100%. Безусловно приведенный пример не имеет смысла, он отражает лишь идею. И обратил внимание на это я не просто так и не сам это придумал - я начал портировать компонент TMPHexEditor http://www.mirkes.de/files/delphi/hexedit.zip на Дельфи 2010. Если не поленишься то глянь в файле mphexeditor.pas код для
Код: function TCustomMPHexEditor.ShowDragCell(const X, Y: integer): integer;
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;
Семен-семеныч... 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;
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;
В том то и дело, что У НИХ НЕ РАБОТАЕТ под Дельфи 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;
psa1974
http://qc.embarcadero.com
http://qc.embarcadero.com
psa1974
Точно на 2007 работает. Удивлен, с точки зрения реализации все нормально, а вот с точки зрения требований Паскаля описывать все переменные - удивлен.
Конечно с точки зрения реализации with должна создавать в памяти скрытую переменную, но разрешить туда писать... не ожидал.
Я никогда такими недокументированными возможностями не пользовался, или где-то документировано?
Точно на 2007 работает. Удивлен, с точки зрения реализации все нормально, а вот с точки зрения требований Паскаля описывать все переменные - удивлен.
Конечно с точки зрения реализации with должна создавать в памяти скрытую переменную, но разрешить туда писать... не ожидал.
Я никогда такими недокументированными возможностями не пользовался, или где-то документировано?
andrewtishkin
ага,спасибо, там уже в курсе:QC#77310
V1s1ter
Цитата:
область памяти выделяет не 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;
ага,спасибо, там уже в курсе: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;
Тут уже писали про уменьшение размера ехе дефайнами отключения нового RTTI...
Сделал так: сложил все используемые в проекте сорцы RTL/VCL в отдельную папку ивставил ее на первое место в Library Path (до $(BDS)\lib) - размер ехе волшебным образом уменьшился на 200К.
Есть мнение, что $(BDS)\lib скомпилена с дебажной инфой
Сделал так: сложил все используемые в проекте сорцы RTL/VCL в отдельную папку ивставил ее на первое место в Library Path (до $(BDS)\lib) - размер ехе волшебным образом уменьшился на 200К.
Есть мнение, что $(BDS)\lib скомпилена с дебажной инфой
Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
Предыдущая тема: Установка копоненты ZipTV
Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.