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

» Вопросы по Embarcadero RAD Studio XE5-XE8,10.x(Seattle, Berl

Автор: ZloyBrawler
Дата сообщения: 25.06.2015 13:04

Цитата:
на винде долбаный директикс...

ну как БЭ на винде и то и другое
Автор: Sulphide
Дата сообщения: 25.06.2015 13:09

Цитата:
ну как БЭ на винде и то и другое

я имел ввиду использование оного макакой, а не самой виндой.
Автор: NeoAnomaly
Дата сообщения: 25.06.2015 13:39
SuPriTo, обсуждали на 137 странице, если кратко, то:

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



Цитата:
Выявил причину тормозов при переключении между вкладками юнитов в ХЕ8. Если в юните выделен хотя бы один символ, то переключение на него будет происходить с тормозами.
Автор: AlexCoRu
Дата сообщения: 25.06.2015 14:25
У меня на ХЕ81 не тормозит. Может потому, что отключил все лишние пакейжи XE8Distiller.
Автор: doxtur
Дата сообщения: 27.06.2015 02:11
ну что, XE81 - полет нормальный. Так как IOS32 отлаживать нормально у меня не получается (точку останова пробегает, на F8 не реагирует) - то прикрутил сам логгирование в файлик и разобрался в чем было дело, а если нужно закопаться в отладку - делаю это под Win32

у кого-нибудь отладка под iOS нормально пашет?
Автор: abyss79
Дата сообщения: 27.06.2015 17:53
Насколько понял, под мобильными платформами у дельфи проблемы есть.
А как обстоят дела с OS X? Насколько всё стабильно?
Необходимо написать прогу, которыя в основном с файлами будет работать и показывать результат.
Автор: De Niro
Дата сообщения: 27.06.2015 23:08
Даже не заметил, с какой версии изменили (сломали) логику работы ShowMessage()

Раньше (проверял в XE2) строку в окне сообщения можно было перенести вручную используя #13#10, или если строчка слишком длинная она автоматически переносилась при наличии в ней пробелов. Если же строка без пробелов, то окно сообщения масштабировалось в ширину, под длинну этой строки.
вот так выглядит в XE2:


Теперь же (проверял в XE7 и XE8), окно сообщения фиксированное по ширине. и если в строке нет #13#10 или пробелов, то строка просто обрезается.
вот так выглядит в XE8:
Автор: Sulphide
Дата сообщения: 27.06.2015 23:26

Цитата:
Насколько понял, под мобильными платформами у дельфи проблемы есть.
А как обстоят дела с OS X? Насколько всё стабильно?
Необходимо написать прогу, которыя в основном с файлами будет работать и показывать результат.

Писал для OSX всеперевариваемый видеоплеер и гляделку картинок (специализированный для планетария) под OpenGL. Работает стабильно, если не учитывать некоторые нюансы, касаемые не то чтобы нелюбви, а полной ненависти FMX к OpenGL, хотя под всеми платформами, кроме винды использует для себя как раз OpenGL. Поэтому программка, которая будет работать с файлами и показывать результат, думаю заработает без проблем. Хотя в том же плеере столкнулся с проблемами при проверке файла на существование (FileExists) под OSX через раз выдавало ошибку, хотя под виндой работало без проблем. Но опять же это было в XE7 вроде даже без апдейта. Заказчик решил переехать на винду, а я соответственно на VCL и переписал плеер. Больше проблем не знаю
Автор: kaz_av
Дата сообщения: 28.06.2015 12:43
De Niro

Цитата:
изменили (сломали) логику работы ShowMessage()


Цитата:
проверял в XE7 и XE8

Скорее, привели к системному поведение диалоговых окон. Проверил XE7 на XP - длинная строка отображается, как и прежде.
Автор: De Niro
Дата сообщения: 28.06.2015 13:49
kaz_av

Действительно на XP длинная строка отображается. Проверил XE8 на XP.
в том же приложении на Win 7 x64 окно диалога фиксировано по ширине.
Неудобно это. Обычно если я что то вывожу в сообщение, то хочу это видеть целиком, а не обрезанный кусок.
Автор: kaz_av
Дата сообщения: 28.06.2015 15:06
De Niro

Цитата:
Неудобно это. Обычно если я что то вывожу в сообщение, то хочу это видеть целиком, а не обрезанный кусок.

Это не к дельфям претензии. Такое поведение определяется системой.
Автор: Eternal_Shield
Дата сообщения: 28.06.2015 21:49

Цитата:
Обычно если я что то вывожу в сообщение, то хочу это видеть целиком, а не обрезанный кусок.

Обычно не выводят текст без разделителей (пробел и тд), поэтому ваше негодование, как минимум, не ясно.
Автор: De Niro
Дата сообщения: 29.06.2015 00:00
Eternal_Shield
Я обычно не вывожу текст без разделителей (пробел и тд), поэтому только сейчас заметил изменение в поведении этого диалога. Иногда удобно ShowMessage'ем побыстрому проверить написанный алгоритм, вывести туда пару контрольных переменных. А тут вывел длинную строку, и удивился что оно теперь подругому работает.
Конечно это не проблема, всегда можно под отладчиком глянуть что да как.
Автор: doxtur
Дата сообщения: 29.06.2015 02:32
De Niro

заведите себе простейший лог в файл, оно и удобнее - копи-паст из него, не то что ShowMessage, CodeSite еще есть

более того, под iOS только так приходится отлаживать мне

System.SysUtils.DeleteFile(local_path + 'program.log'); // очищаем лог при запуске, чтобы не рос

я лог вообще пишу в 3 места (понятно что через TextFile работать некрасиво, но все же):

procedure Log(S:String);
var
LogFile : TextFile;
begin
S := TimeToStr(Now) + ': ' + S;
frmSettings.MemoLog.Lines.Add(S);
AssignFile(logFile, local_path + 'program.log');
if FileExists(local_path + 'program.log') then
Append(logFile)
else
Rewrite(logFile);
WriteLn(LogFile, S);
CloseFile(logFile);
{$IFDEF MSWINDOWS}
CodeSite.Send(S);
{$ENDIF}
end;

Автор: De Niro
Дата сообщения: 29.06.2015 03:14
doxtur
Спасибо. Так и сделаю.
Автор: SolidSnakeRU
Дата сообщения: 30.06.2015 23:04
doxtur
А если 2 потока захотят одновременно в файл записать?
Я делал специальный класс для хранения записей лога, правда это было в виндовом приложении.
Запись лога происходит через метод, внутри которого реализована блокировка через TMultiReadExclusiveWriteSynchronizer.
Запись в файл - нечто иное как блокировка объекта и обход коллекции и формирование лога нужного формата. Можно еще запоминать сколько записей скинули в файл чтобы только добавлять новые в конец. А писать файл удобно через класс TStringStream (если не ошибаюсь с названием).
Автор: dred2k
Дата сообщения: 01.07.2015 00:33
SolidSnakeRU

Цитата:
TMultiReadExclusiveWriteSynchronizer

А зачем это применять, если в лог только пишут ?
Критической секции - за глаза... Причем, возможно, будет даже быстрее.
Автор: AlekXL
Дата сообщения: 01.07.2015 07:20
к вопросу о XE8 UP1:
что там реально пофиксили из регрессий XE8, и какие серьезные проблемы остались?
Я , конечно, не о глюкодроме FMX, а о классике..
Автор: NeoAnomaly
Дата сообщения: 01.07.2015 07:55
Update 1 Fix List for RAD Studio XE8, Delphi XE8, and C++ Builder XE8

Тут заявлен некий Community toolbar, это что такое?
Автор: reenoip
Дата сообщения: 01.07.2015 09:42

Цитата:
Update 1 Fix List for RAD Studio XE8, Delphi XE8, and C++ Builder XE8

Тут заявлен некий Community toolbar, это что такое?

Видимо, это:

Автор: NeoAnomaly
Дата сообщения: 01.07.2015 13:36
reenoip, а что делают эти кнопки? Хотелось бы понять назначение этого тулбара(сам XE 8 не ставил).
Автор: Sulphide
Дата сообщения: 01.07.2015 15:30
xe8up1 - пустая форма с панелью на всю форму (alClient) - при уводе окна за край экрана и возвращении на экран, не прилетает событие OnPaint - это нормальное поведение или баг? просто такая же форма с кучей контролов получает это событие без проблем.
Автор: reenoip
Дата сообщения: 01.07.2015 18:14

Цитата:
reenoip, а что делают эти кнопки? Хотелось бы понять назначение этого тулбара(сам XE 8 не ставил).

Без понятия, у меня машина с IDE без доступа к сети. Но, судя по названию панели и иконкам, авторы IDE наконец-то поняли, что что-то идёт не так, и озаботились инструментами для оперативного фидбека. Т.е. чтобы программисты могли жаловаться и предлагать идеи в прямом эфире - это я так понимаю. Пусть меня поправят те, кто этой фичей реально пользуется.
Автор: kaz_av
Дата сообщения: 01.07.2015 18:42
NeoAnomaly

Цитата:
а что делают эти кнопки? Хотелось бы понять назначение этого тулбара(сам XE 8 не ставил).

Интеграция с community.embarcadero.com. Читать тут: http://docwiki.embarcadero.com/RADStudio/XE8/en/Embarcadero_Community_Toolbar
Автор: SolidSnakeRU
Дата сообщения: 01.07.2015 20:18
dred2k

Цитата:
А зачем это применять, если в лог только пишут ?

Потому что не только пишут)
У меня был вывод лога в интерфейс при необходимости, кроме того, чтобы при сохранении в файл не было проблем, в условиях работы с несколькими потоками, тоже нужна блокировка.
Быстродействие - там были какие-то заморочки с этим классом, вроде в новых XE исправлено.
У меня не было проблем с тормозами, не замерял разницу.
Автор: dred2k
Дата сообщения: 02.07.2015 07:06
SolidSnakeRU

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

Ну, это обычная схема. Причем, файл и интерфейс - два разных ресурса, в которые производится запись. Где тут чтение ?
У меня так: вызов LogWrite помещает новую запись в потокобезопасную очередь ("обложенную" критической секцией), выставляет эвент "есть запись" и радостно и быстро забывает об этом, не неся, заметь, никаких накладных расходов по времени выполнения (запись в файл, базу и прочее). Диспетчерская нитка лога просыпается по событию "есть запись" и начинает выбирать всю доступную очередь новых сообщений лога, распихивая их по всем зарегистрированным "лог-девайсам" - файлы, базы, интерфейсы... Потом опять засыпает до события о записи (или об остановке).

Цитата:
Быстродействие - там были какие-то заморочки с этим классом, вроде в новых XE исправлено.
У меня не было проблем с тормозами, не замерял разницу.

В большинстве случаев выигрыш от использования более быстрого синхро-объекта будет незаметен. Однако, применять специализированный суррогатный синхро-механизм вместо нативного объекта, да еще там, где это архитектурно не оправдано - "не есть гут", я считаю.


Добавлено:
Если хочется гарантированной записи в некий лог-ресурс, то у меня это указывается при создании этого ресурса (при старте лог-системы). Тогда LogWrite делает так: если есть такие ресурсы, то производим в них запись синхронно, "под сенью критической секции" опять же (LogWrite работает всегда "под критической секцией" - даже при помещении в очередь, для корректного выставления времени и айди сообщения), а для остальных - через очередь и нитку. Так что все, "что смогло" - в файл, к примеру, поступит, а в интерфейс уже, как бы, может и не дойти (последующий сбой приложения и все такое).
Но, как показала практика, это излишне. Очередь работает прекрасно, и этого достаточно.
Автор: Frodo_Torbins
Дата сообщения: 02.07.2015 13:41
Sulphide
Если включен Aero (в восьмерке он включен всегда) то перекрытие окна другими окнами, или его выход за границы экрана не затирает его содержимое. Ну а раз ничего не стерлось, то и обновлять нечего.
Автор: Sulphide
Дата сообщения: 02.07.2015 15:28

Цитата:
Если включен Aero (в восьмерке он включен всегда) то перекрытие окна другими окнами, или его выход за границы экрана не затирает его содержимое. Ну а раз ничего не стерлось, то и обновлять нечего.

Блин, круто, конечно а как обновлять то, что нарисовал opengl? как-то не хочется бесконечно прорисовывать, то что нужно... ладно если плеер играет видео, а если стоит на паузе или показывает jpg, png и прочие растровые форматы.. И опять же на другую форму, где есть контролы (кнопки, список воспроизведения) почему-то прилетает сообщение при перекрытии этого окна или увод за границу экрана. А так да все это под win8 и vcl. И потом хочется запустить фрапс или msi afterburner и таки увидеть реальный фпс, а не тот который даст зацикленный прорисовщик Напрашивается костыль в виде 4х кнопок 1х1 по углам формы))), которые заставят прилетать это сообщение.
Автор: Frodo_Torbins
Дата сообщения: 02.07.2015 15:35
Sulphide
Большинство игр как раз бесконечно прорисовывают. Или ставят ограничение на количество кадров в секунду и рисуют по таймеру. Что касается картинок, то если она не меняется, зачем ее перерисовывать?
Автор: Sulphide
Дата сообщения: 02.07.2015 15:38

Цитата:
Большинство игр как раз бесконечно прорисовывают. Или ставят ограничение на количество кадров в секунду и рисуют по таймеру. Что касается картинок, то если она не меняется, зачем ее перерисовывать?

То что нарисовал gl затирается, если поводить другим окном сверху или увести окно рисования за край экрана... Надо перерисовывать, а сообщения нет.

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129

Предыдущая тема: Отмена встречи в Outlook из Excel VBA


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