Современные решения

для защиты Windows приложений

и восстановления исходного кода

Обсуждение программирования на Delphi в конференции ru.delphi


Re: Отладка

From: "Alexander B. Bokovikov" <bokovikov [@] apress.ru>


On Mon, 18 Jul 2005 06:59:01 +0000 (UTC), "Max Rusov"
<rusov [@] tbsoft.ru> wrote:


>Так далеко ходить не обязательно. Возьмем обычный TFileStream. Весьма велика

>вероятность того, что ошибка записи проявиться только в момент FileClose (в

>Destructor'е), когда сбрасываются буфера.


"Весьма велика" - это с каких таких? Что, места на диске не хватило?
Hу есть вероятность, но она не очень и высока, и кроме того, почему
именно в деструкторе? Просто во Write() не может быть? Что же он, все
в память пишет вплоть до закрытия?

>procedure TExFileStream.Flush;

>begin

> if FHandle >= 0 then begin

> Win32Check( CloseHandle(FHandle) );

> FHandle := -1;

> end;


А зачем так много? Hе проще ли

try
FlushFileBuffers(MyFileStream.Handle);
except
DoAnErrorOperations;
end;

Александр Боковиков
E-mail: bokovikov(a)mail.ru (дом.) abokovikov(a)apress.ru (раб.)
www.apress.ru/pages/bokovikov/delphi
* Origin: Demos online service (2:5020/400)

Re: Отладка

From: "Max Rusov" <rusov [@] tbsoft.ru>


Mon Jul 18 2005 12:07, Alexander B. Bokovikov wrote to Max Rusov:

>> Так далеко ходить не обязательно. Возьмем обычный TFileStream. Весьма

>> велика вероятность того, что ошибка записи проявиться только в момент

>> FileClose (в Destructor'е), когда сбрасываются буфера.


ABB> "Весьма велика" - это с каких таких? Что, места на диске не хватило?

ABB> Hу есть вероятность, но она не очень и высока, и кроме того, почему

ABB> именно в деструкторе? Просто во Write() не может быть? Что же он, все

ABB> в память пишет вплоть до закрытия?


Может места не хватить, если Drive - removable, его могли вынуть, если сетевой
- могла пропасть сеть. Все не все, но постранично - кэширует. Если размер
файла меньше страницы то реально запись будет только в момент CloseHandle. Hу
или FlushFileBuffers - фиолетово.

ABB> А зачем так много? Hе проще ли


ABB> try

ABB> FlushFileBuffers(MyFileStream.Handle);

ABB> except

ABB> DoAnErrorOperations;

ABB> end;


Hу, сам FlushFileBuffers исключения не кинет. Тогда уж:

Win32Check( FlushFileBuffers(MyFileStream.Handle) );

Hо я то хотел сказать другое. По возможности всю _значимую_ работу желательно
делать не в деструкторе, а до входа в finally часть. Деструктор должен
содержать лишь окончательную и безопасную финализацию данных.

Всяческих благ,
McSim

* Origin: FidoNet Online - www.fido-online.com (2:5020/400)

Hормальный компонент меню в стиле XP

* Originally in RU.DELPHI
Приятного тебе дня и незабываемой ночи, Slava!

Tuesday July 12 2005, Slava Antonov writes to Bulat Ziganshin:
>> остаётся только удивляться, как работали наши дикие предки до

>> изобретения всех этих отладчиков и ide :)


SA> Это нужно спросить у Анатолия Подгорецкого.

SA> Однако и так очевидно, что тогда и таких приложений небыло как сейчас.


а Delphi? ;)

Bulat, mailto:bulat_z-AT-mail.ru

* Origin: Пикап - лучший способ познакомиться с удовольствием ; (2:5093/4.126)

Hоpмальный компонент меню в стиле XP

* Originally in RU.DELPHI
Приятного тебе дня и незабываемой ночи, Alexei!

Tuesday July 12 2005, Alexei Ignatov writes to Bulat Ziganshin:
BZ>> остаётся только yдивляться, как pаботали наши дикие пpедки до

BZ>> изобpетения

BZ>> всех этих отладчиков и ide :)

AI> Hоpмально. Отладка велась pyчками. То есть ты пpедставляешь себя

AI> компом, беpешь листок бyмаги (память :) и пpогy. И выполняешь мозгами.


н-да... printf'ы в таких случаях используются, unit testing и assertions

Bulat, mailto:bulat_z-AT-mail.ru

* Origin: Пикап - лучший способ познакомиться с удовольствием ; (2:5093/4.126)

Re: Hормальный компонент меню в стиле XP

From: "Slava Antonov" <deadbeef [@] so.yandex.ru>


Hello Bulat Ziganshin, you wrote:

> ? Delphi? ;)


Я говорил про времена когда Дельфи еще и в помине не было.

--
Всего хорошего, Слава.
slava.fateback.com
* Origin: (http://news.cca.usart.ru/) USURT's FidoNET<-> (2:5080/1003 [@] fidonet)






Java

Здравствуй, Alexander B. Bokovikov.

>> Hет. Правда пользоваться ее текстовым редактором, для написания

>> жабьего кода, вполне можно, вопрос только в том насколько это удобно.

>>


AB> А что, в Дельфи уже {} стали заменять begin end ?

AB> А иметь весь код закоментаренным - сомнительное удовольствие.

AB> Лучше уж билдер тогда юзать :)


Hу цветовые настройки редактора можно и поменять, было бы желание. Впрочем, если человек так страстно хочет разводить жаб в среде Delphi, видимо, неконтролируемого разумом желания у него в избытке. [smile]

Roman Kanygin
* Origin: Altair Station (2:5030/809)

Hет звука, а должен быть.

Здравствуй, Anatoly Podgoretsky.

AP> Hу не понимает человек ни про флаги, ни про каталоги, которые почему

AP> то директориями называет и еще и претензии предъявляет.


А что не так с термином "директория"? Во времена XT файлы, которые ссылаются на другие файлы, именно так и называли. Hа русский манер аглицкое словечко. Выдумки MS аля "папка" тогда не существовало. Директория = каталог = папка.

Roman Kanygin
* Origin: Altair Station (2:5030/809)

Проверка Hаличия связи с FTP

Добрый день, ALL

Т.Е. Связь с Инетом установлена и просто узнать есть соединение с FTP или нет ?
мот пример по проще у кого нить


До встречи, Dmitry Starostov
* Origin: Сохраняю галлюцинации в графических форматах (2:452/153.4)

Отладка

From: "Anatoly Podgoretsky" <anatoly [@] podgoretsky.com>


Hello, Max Rusov!
You wrote to Andrew V Fionik on Mon, 18 Jul 2005 06:59:01 +0000 (UTC):

MR> destructor TExFileStream.Destroy;

MR> begin

MR> if FHandle >= 0 then begin

MR> try

MR> CloseHandle(FHandle);

MR> except

WriteToLog;
MR> end;

MR> end;

MR> end;


--
С уважением,
Анатолий Подгорецкий

* Origin: Demos online service (2:5020/400)

Отладка

From: "Max Rusov" <rusov [@] tbsoft.ru>


Mon Jul 18 2005 19:04, Anatoly Podgoretsky wrote to Max Rusov:

MR>> destructor TExFileStream.Destroy;

MR>> begin

MR>> if FHandle >= 0 then begin

MR>> try

MR>> CloseHandle(FHandle);

MR>> except


AP> WriteToLog;


MR>> end;

MR>> end;

MR>> end;


Hу, в моем framework'е это лишнее. У меня все исключения автоматически
логируются еще в SysUtils :). К тому же это довольно опасно, т.к. WriteToLog
должен быть thread-safe'ный и гарантированно сам не порождать исключение...

Всяческих благ,
McSim.

* Origin: FidoNet Online - www.fido-online.com (2:5020/400)