Навигация
Поддержать материально
Steam Greenlight

Логотипы
Медальки
Гость
Имя

Пароль



Вы не зарегистрированны?
Нажмите здесь для регистрации.

Забыли пароль?
Запросите новый здесь.
Темы форума
187 - Bullet Heaven
Вчера, 20:39
 Mefistofel
187 - ?
21.11.2024
 Dan
Galactic Showdown -…
21.10.2024
 KregHek
Новый IGDC
5.08.2024
 rimush
186 - Strategy!
15.07.2024
 VoroneTZ
WoL
3.07.2024
 Darthman
Привет выжившие
21.05.2024
 GeePee
185 - RPG
9.02.2024
 Vaskrol
В каком банке открыт…
24.01.2024
 Darthman
185 - ?
30.12.2023
 Mefistofel
Сейчас на сайте
Гостей: 21
На сайте нет зарегистрированных пользователей

Пользователей: 1,790
новичок: Durved
Обсуждение «Delphi XE5 дважды запускает проект.»
Shirson
Avatar пользователя

Опубликовано 09.08.2014 02:52 (10 лет назад)    #
Коллеги, есть странная проблема.
В рамках работы над одним проектом, поставил Delphi XE5.
Создал первичный пустой проект, запускаю.
Среда компилит проект и запускает его. Сама при этом виснет и не реагирует ни на что.
Как только закрываешь запусщеный проект, она запускает его снова, уже в нормальном виде, в дебагерном режиме.
Что это за чудо такое? Складывается ощущение, что сначала сред просто запускает ранее откомпиленый экзешник и ждёт когда его закроют.
Кто-нибудь с этим сталкивался? Как это вылечить?

Второй вопрос - на Delphi XE5 не ставится CnPack. Инсталяция проходит, но самой делфе ничего не появляется.
Bullet Heaven:Не участвую.
Shirson
Avatar пользователя

Опубликовано 09.08.2014 03:54 (10 лет назад)    #
UPD: Это стало происходить со всеми установленными версиями Делфи (6, XE4, XE5)
Bullet Heaven:Не участвую.
Shirson
Avatar пользователя

Опубликовано 09.08.2014 04:42 (10 лет назад)    #
UPD2: Разобрался. Ректальной чуйкой понял, что дело нечисто (когда откомпиленная программа, уже из эксплорера, запустилась дважды сама из себя) и выклюичл аваст. Всё заработало.
Походу, аваст меня окончательно достал.
Bullet Heaven:Не участвую.
Mefistofel
Инженер‑космогоник
Avatar пользователя

Опубликовано 09.08.2014 15:37 (10 лет назад)    #
Меня очень похоже радовал Comodo.
Bullet Heaven:Не участвую.
Darthman
Древний организм
Avatar пользователя

Опубликовано 10.08.2014 20:22 (10 лет назад)    #
Shirson просто ты любитель извращений (аваст, делфи6, цнпак)...
Bullet Heaven:Не участвую.
Shirson
Avatar пользователя

Опубликовано 10.08.2014 21:55 (10 лет назад)    #
Ну, я уже на DelphiXE перешёл.
А что посоветуешь в плане замены бесплатного аваста?
Bullet Heaven:Не участвую.
Ignis
Копробарон
Avatar пользователя

Опубликовано 10.08.2014 22:30 (10 лет назад)    #
Я все дырки закрыл и без антивиря спокойно живу .__.
Bullet Heaven:Не участвую.
Zer0
Avatar пользователя

Опубликовано 11.08.2014 01:35 (10 лет назад)    #
На виртуалке внутри виртуалки?
Bullet Heaven:Не участвую.
Darthman
Древний организм
Avatar пользователя

Опубликовано 11.08.2014 04:17 (10 лет назад)    #
Shirson у меня на ноуте стоит касперский (и то только потому, что батя пользуется второй копией, так что он есть потому что есть), На настольнике стоит последняя адекватная винда обновленная и её ничто не трогает.
Bullet Heaven:Не участвую.
DRON
Avatar пользователя

Опубликовано 11.08.2014 10:31 (10 лет назад)    #
У меня там где винда, а это только игровой ком дома. Стоит мелкомягкий антивирь дефолтовый на семерке. Проблем, вроде, с ним не было.
Bullet Heaven:Не участвую.
MysticCoder
Avatar пользователя

Опубликовано 19.08.2014 07:49 (10 лет назад)    #
Столкнулся со странным поведением функции SetRoundMode... Иногда она не отрабатывает... Втыкнул в нее ассёрт на соответствие GetRoundMode = запрошенному на установку, периодически срабатывает, в зависимости от атмосферных бурь на юпитере. Это просто какой то бред... Функции RoundUp, RoundDown каждый раз устанавливают свой RoundMode. И если я округляю переменную real = 5 я ожидаю получить что угодно, кроме 4, который дает не поменянный RoundMode = rmDown. А этих RoundUp и RoundDown в коде может быть много. Используется Delphi 6, тестилось в Win8 x64, Win7 x32. Есть какие то мысли по этому поводу?
Bullet Heaven:Не участвую.
Shirson
Avatar пользователя

Опубликовано 19.08.2014 15:04 (10 лет назад)    #
http://stackoverflow.com/questions/565797/setroundmodermup-and-rounding-round-values-like-10-results
-in-10-0001-how-c

редакция от Shirson, 19.08.2014 15:05

Bullet Heaven:Не участвую.
MysticCoder
Avatar пользователя

Опубликовано 19.08.2014 16:32 (10 лет назад)    #
2Shirson:
натыкался на эту ссылку, там речь насколько я понял, про другое.
В моем случае, SetRoundMode который устанавливает какой то флаг у FPU, не всегда его корректно устанавливает. Т.е. в большинстве случаев после SetRoundMode(rmDown), он нормально установится, но иногда он просто не устанавливает. Т.е. банально кусок кода:
var
Five : real;
RoundedFive : real;
.....
Five := 5;
x := RoundDown(SomeNumber);
RoundedFive := Round(Five);


выполненный много раз, в конце концов может выдасть в RoundedFive не 5, а 4, потому что RoundDown вызовет SetRoundMode(rmDown), потом Round(), потом попытается восстановить SetRoundMode(PreviousRoundMode), который отработает вхолостую, не поменяв RoundMode, который так и останется равным rmDown.
Bullet Heaven:Не участвую.
Shirson
Avatar пользователя

Опубликовано 19.08.2014 17:33 (10 лет назад)    #
Берёшь цикл из 1 000 000 итераций и делаешь вышеописанное. Все промахи и несработки считаешь. Если несработки есть - можно писать багрепорт. Если несработок нет, то проблема где-то у тебя в программе, где нерегестрируемо ставится другой режим округления.
Bullet Heaven:Не участвую.
MysticCoder
Avatar пользователя

Опубликовано 19.08.2014 18:37 (10 лет назад)    #
цикл из 1 000 000 операций ничего не даст. несработка зависит от погоды на юпитере.
нерегистрируемо ставиться другой режим округления тоже не может.
сделал свою SetRoundMode, которая ставит и сразу проверяет на заявленный, смогла ли поставить. иногда получается что не смогла. Причина скорее всего внешняя. Типа запросили открыть файл - файл занят.
багрепорт тоже не поможет. кому его писать? делфи 6 давно уже никто не поддерживает. да и проблема не в делфях, а в том что этот флаг не ставится иногда. в плюсах у установки флага скорее всего точно такая же реализация.
грешил на потоки, но у каждого потока свое окружение и свой флаг.
Bullet Heaven:Не участвую.
Darthman
Древний организм
Avatar пользователя

Опубликовано 20.08.2014 06:39 (10 лет назад)    #
Не надо использовать real, он давно запрещен в делфи, еще лет 10 назад был.
Bullet Heaven:Не участвую.
MysticCoder
Avatar пользователя

Опубликовано 28.08.2014 15:22 (10 лет назад)    #
Обнаружил прикольную штуку в старых дельфах.. При вызове AssignFile с длиной имени файла > 260 происходит переполнение буфера... проверено в 6 и XE5.
p.s. можно использовать в своих коварных целях:)
Bullet Heaven:Не участвую.
Daemon
Avatar пользователя

Опубликовано 28.08.2014 16:28 (10 лет назад)    #
Может, больше 255? Версия винды, на которой проверялось?
Bullet Heaven:Не участвую.
MysticCoder
Avatar пользователя

Опубликовано 28.08.2014 17:05 (10 лет назад)    #
Daemon написал:
Может, больше 255? Версия винды, на которой проверялось?

нет, если заглянешь в исходники system.pas, то увидишь:
{ Typed-file and untyped-file record }

TFileRec = packed record (* must match the size the compiler generates: 332 bytes *)
Handle: Integer;
Mode: Word;
Flags: Word;
case Byte of
0: (RecSize: Cardinal); // files of record
1: (BufSize: Cardinal; // text files
BufPos: Cardinal;
BufEnd: Cardinal;
BufPtr: PChar;
OpenFunc: Pointer;
InOutFunc: Pointer;
FlushFunc: Pointer;
CloseFunc: Pointer;
UserData: array[1..32] of Byte;
Name: array[0..259] of Char; );
end;

{ Text file record structure used for Text files }
PTextBuf = ^TTextBuf;
TTextBuf = array[0..127] of Char;
TTextRec = packed record (* must match the size the compiler generates: 460 bytes *)
Handle: Integer; (* must overlay with TFileRec *)
Mode: Word;
Flags: Word;
BufSize: Cardinal;
BufPos: Cardinal;
BufEnd: Cardinal;
BufPtr: PChar;
OpenFunc: Pointer;
InOutFunc: Pointer;
FlushFunc: Pointer;
CloseFunc: Pointer;
UserData: array[1..32] of Byte;
Name: array[0..259] of Char;
Buffer: TTextBuf;
end;


тип File на самом деле является одной из этих записей. смотрим далее:
function _Assign(var t: TTextRec; const s: String): Integer;
begin
FillChar(t, sizeof(TFileRec), 0);
t.BufPtr := @t.Buffer;
t.Mode := fmClosed;
t.Flags := tfCRLF * Byte(DefaultTextLineBreakStyle);
t.BufSize := sizeof(t.Buffer);
t.OpenFunc := @TextOpen;
Move(S[1], t.Name, Length(s));
t.Name[Length(s)] := #0;
Result := 0;
end;


Здесь видно, что S копируется в t.Name полностью. Т.е. если длина строки > 260, то затрет дальше за пределами t.Name.
Проверялось на Win8 и 7.

редакция от MysticCoder, 28.08.2014 17:09

Bullet Heaven:Не участвую.
Перейти на форум:
Конкурсы
Открытые конкурсы:
Bullet Heaven

Старт: 23 ноября 2024г.
Финиш: 4 декабря 2024г.

Участники: 4
Недавние конкурсы:
 186 - Strategy
 185 - RPG XII
 184 - Arcade II
 183 - Novel
 182 - RPG XI
 Все конкурсы
Случайная игра
Мини-чат
Вам необходимо залогиниться.

Архив чата

26,205,217 уникальных посетителей

Создано на базе русской версии PHP-Fusion copyright © 2003-2006 by Nick Jones.
Released as free software under the terms of the GNU/GPL license.