Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» Вопросы по Delphi (версии 2009, 2010 Weaver, 2011 Fulcrum)

Автор: zvyagaaa
Дата сообщения: 16.09.2009 08:06
вроде переустановил на дцатый раз - форматтер заработал. хз что надо инсталлеру этому.
Автор: spasius
Дата сообщения: 16.09.2009 11:22
data man
версия 2.60. после компиляции простых примеров в тело компонента просто не реально вписать русский символ, что на 2009, что на 2010. ((
Автор: data man
Дата сообщения: 16.09.2009 11:27
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}
....
Автор: spasius
Дата сообщения: 16.09.2009 11:50
data man
Спасибо, рулит. А то мне пришлось вообще эту процедуру урезать до WC := Key;
Предлагаю засунуть сей сабж в копилку с исправлениями ...
Автор: data man
Дата сообщения: 16.09.2009 11:55
spasius

Цитата:
Предлагаю засунуть сей сабж в копилку с исправлениями ...

Проще смотреть форум производителя. Тем более что там есть и другие фиксы.
Автор: StalkerSoftware
Дата сообщения: 16.09.2009 19:59
data man

Цитата:
WideCharSet

За ссылки спасибо, посмотрю.

Хотя ИМНО это все равно обходной, а не стандартный путь. В этом случае и конструкция с case сгодится.

data man
andrewtishkin
И все таки мне не понятен один момент: То что CharInSet и Char in [] не работают с русскими буквами это проблема только у кириллицы или и у других национальных кодировок такая же проблема ?
Например работает ли CharInSet и Char in [] с немецкими, французкими, японскими кодировками (ведь D2010 именно на эти языки локализована) ?

Автор: data man
Дата сообщения: 16.09.2009 20:11
StalkerSoftware

Цитата:
у других национальных кодировок такая же проблема ?

Проблема есть у всех. Если не ошибаюсь, на их форуме вопрос задавал и поляк в том числе.
Да это и из кода функции понятно:

Код: function CharInSet(C: WideChar; const CharSet: TSysCharSet): Boolean;
begin
Result := (C < #$0100) and (AnsiChar(C) in CharSet);
end;
Автор: xxx2008
Дата сообщения: 17.09.2009 19:54

Цитата:
{$WEAKLINKRTTI ON}
{$RTTI EXPLICIT METHODS([]) FIELDS([]) PROPERTIES([])}

Ого, респект за это! Позволяет на тестовом примере с одной формой экономить 50Кб
Было 798Кб, стало 753Кб.
Автор: andrewtishkin
Дата сообщения: 17.09.2009 20:51
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 выкидывалось?
Автор: Alexos
Дата сообщения: 17.09.2009 22:58
Как то, не понял как, у IDE поменялись все хоткеи, видимо на какой то старый вариант.
Например Сохранить F2
Никак не могу найти где это вобще может настраиваться.
Автор: andrewtishkin
Дата сообщения: 18.09.2009 00:15

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

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

(там у скриншота на всякий случай добавил текстовое описание, хотя и так всё понятно)
Автор: Alexos
Дата сообщения: 18.09.2009 00:35
Спасибо, вобще странно у меня там стояло default, при изменение на Visual Studio и затем обратно все стало нормально.
Автор: Boldog39
Дата сообщения: 18.09.2009 09:37
Народ, подскажите, где найти таблетку на Delphi 2010 Prism?
Автор: data man
Дата сообщения: 18.09.2009 10:03
Boldog39
Здесь не варезник ! Ссылка в шапке.
Автор: spasius
Дата сообщения: 18.09.2009 11:18
нашел еще один баг. попытался настроить внешний вид как у 7-ки, убрал галочку embedded designer. Перезапустил Студию и у всех компонентов VCL пропали значки, т.е. стали стандартные ...
Автор: Frodo_Torbins
Дата сообщения: 18.09.2009 17:28
andrewtishkin
Вижу не у одного меня в диалоге настройки чекбоксы обрезаются при высоких DPI.
Автор: andrewtishkin
Дата сообщения: 18.09.2009 20:36

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

И не только они... В свойствах проекта, например, где управление формами производится кнопки обрезаны слева и справа. С DPI накосячили

spasius, попробовал повторить - не получилось. Значки на месте
Опять какой-то "плавающий баг", imho, надо умудриться его поймать.
Автор: xxx2008
Дата сообщения: 19.09.2009 10:26
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.
Автор: Alexos
Дата сообщения: 19.09.2009 12:47

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


Судя по этому

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


Как раз при профиле Debug у вас все вырезается а при релизе ничего не делается.
Автор: funnyman
Дата сообщения: 19.09.2009 18:20

Цитата:
Судя по этому

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


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

С точнотью до наоборот {$IFNDEF DEBUG}. Внимательней на директиву посмотри
Автор: Alexos
Дата сообщения: 19.09.2009 18:39
Точно, мозг не заметил букву N )

Никто не знает как избавиться от старого вида списка компонент, выключаю. его в настройках сохраняю рабочий стол, а он все равно при переключении вылазит
Автор: psa1974
Дата сообщения: 20.09.2009 14:05
Имеем некий код:

Код:
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;
Автор: V1s1ter
Дата сообщения: 20.09.2009 18:01
psa1974

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

Не уверен, что имено ЭТОТ код работает.
Поскольку строкой x:=x+ 1; Вы присваиваете значение не переменной, а функции то есть Вы написали getval(x1, y1).x:=getval(x1, y1).x+1; А вот строка x1:=x+ 1; сработает ипод D2009 и D2010
Если конечно не задействовать какие то хитрые настройки компилятора.
Автор: psa1974
Дата сообщения: 21.09.2009 01:08
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;
Автор: V1s1ter
Дата сообщения: 21.09.2009 01:54
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;
Автор: psa1974
Дата сообщения: 21.09.2009 02:28
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;
Автор: andrewtishkin
Дата сообщения: 21.09.2009 03:15
psa1974
http://qc.embarcadero.com
Автор: V1s1ter
Дата сообщения: 21.09.2009 03:30
psa1974
Точно на 2007 работает. Удивлен, с точки зрения реализации все нормально, а вот с точки зрения требований Паскаля описывать все переменные - удивлен.
Конечно с точки зрения реализации with должна создавать в памяти скрытую переменную, но разрешить туда писать... не ожидал.
Я никогда такими недокументированными возможностями не пользовался, или где-то документировано?
Автор: psa1974
Дата сообщения: 21.09.2009 03:59
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;
Автор: 0D0A
Дата сообщения: 23.09.2009 20:37
Тут уже писали про уменьшение размера ехе дефайнами отключения нового RTTI...

Сделал так: сложил все используемые в проекте сорцы RTL/VCL в отдельную папку ивставил ее на первое место в Library Path (до $(BDS)\lib) - размер ехе волшебным образом уменьшился на 200К.

Есть мнение, что $(BDS)\lib скомпилена с дебажной инфой

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172

Предыдущая тема: Установка копоненты ZipTV


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.