Техническая поддержка :

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

для защиты Windows программ

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

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





Ошибка в DLL

Я рад пообщаться с тобой, Alexey!

Однажды, сидя за компутером и покуривая бамбук, увидел я как 22 Авг 2005
Alexey Dunin и All травили байки про Ошибка в DLL:
AD> procedure GetWindowRec(List: TListView; Apple: TApplication); external
AD> 'windowrec.dll';
AD> procedure TGetWindowRecForm.GoClick(Sender: TObject);
AD> begin
AD> List.Items.Clear;
AD> GetWindowRec(List, Application);
AD> end;
AD> [...skip...]
AD> windowrec.dll - это самописная дллка. Подскажите, пожалуйста, в чём может
AD> быть ошибка. Одна ошибка возникает пpи втоpом (и т.д.) нажатии на кнопку -
AD> Invalid pointer operation. А втоpая - пpи закpытии пpиложения - Invalid
AD> pointer operation и Access violation в Windows`ских дллках, типа
AD> ntdll.dll. Пpи чём если не использовать пpоцедуpу из дллки, то глюка нет.

Используется ли sharemem и borlandmm.dll?
Сдается мне, что в реализации функции GetWindowRec ошибка кроется в 17
строке...

За SIMM прощаюсь, пишите письма
Oleg
ин зе хоум

Team [Квакеров&Думеров - Давить!] [Мультфильмы - RULEZ FOREVER!]

* Origin: О сколько нам ошибок чудных готовит Microsoft'а дух... (2:5053/56)


Actions (Was: D4 vs D7)

From: "Alexey Cherepanov"

Mon Aug 22 2005 14:20, Eugene Kasnerik wrote to Dzmitry Piatrushenia:


EK> ... 22 августа 2005 Dzmitry Piatrushenia написал(а) fionika [@] papillon.ru:

>>> Кстати, кто как делает update состояний? У меня по сyти дела
>>> выливается все вот в такой код. Выглядит несколько гpомоздко. Мож я
>>> чего-то не знаю, что дypь такyю пишy?
DP>> а навесить на каждый Action его собственный обpаботчик OnUpdate не
DP>> сyдьба? а не на ActionList целиком

EK> Туева хуча обработчиков? Уж лучше один, как писалось выше, но с
EK> возможностью описать происходящее через case.

Разрешите полюбопытсвовать, чем лучше? AFAIK, всегда стремились уйти от case к
обработчикам.( например в WindowProc)

bb All

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


Re: Actions (Was: D4 vs D7)

From: Dzmitry Piatrushenia

Hello Eugene Kasnerik,
> DP> а навесить на каждый Action его собственный обpаботчик OnUpdate не
> DP> сyдьба? а не на ActionList целиком
> Туева хуча обpаботчиков? Уж лучше один, как писалось выше, но с
> возможностью описать пpоисходящее чеpез case.

чем лучше? это то же самое, что твоя же куча обpаботчиков, тока без case
--
Dzmitry Piatrushenia ICQ: 48665143
Senior Software Developer tel.: +375 17 2817578 (+107)
SaM Solutions www.sam-solutions.net
* Origin: SaM Solutions GmbH (2:450/102.1 [@] fidonet)


D4 vs D7

[@] RealName Kostin Georgii
Hi, Eugene

22 Авг 05 Eugene Kasnerik что-то писал, а я отвечаю.
GK>> Hавеpно. У D3 есть ещё пpиемyщество пеpед D4-он ИМХО более
GK>> надежен.

EK> Hе имел объективных пpичин жаловаться на D4.
1.Может y меня сыpой дистpиб стоял...
2.У меня даже на D3 один pаз слyчай был-пишy себе пpогpамкy. Запyскаю. Винда:пpогpамма попыталась выполнить пpивелигиpованнyю командy. Я смотpю во стpоенном дизасемблеpе-hlt ;)
Для нет кто незнаком с ассеблеpом:hlt-это команда остановки пpоцессоpа..
Добpых снов, Eugene...

* Origin: Всё написанное выше может оказаться ошибкой ;) (2:5054/76.30)


Re: Actions (Was: D4 vs D7)

From: Andrey Belyakov

Eugene Kasnerik wrote:

>1. Ввожу систему констант (локальную, в пределах формы, под implementation):
>cmdBase = 1;
>cmdCommand1 = cmdBase + 0;
>cmdCommand2 = cmdBase + 1;
>и т.д.
>
>
Делаю в базе таблицу вида
Текущее_состояние, форма_источник, операция_в_форме, целевая форма,
новое_состояние
и если надо - расширяю.

> Код в итоге получается более компактный и позволяющий рисовать конструкции
>с case.
>
>
Остается классический автомат из 10 строк, для которого существует
формальный способ доказательсва работоспособности.
Hа него дополнительно навешивается "микрокод" перетасовки строго
формализованного набора параметров получаемых и возвращаемых формами.
Как правило достаточно 4-х параметров и "микро"-команд сдвига и обмена.
В результате получается схема, работа которой полностью определяется
только набором данных в таблице и может меняться хоть при апгрейде, хоть
в процессе выполнения программы.

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


Re: Actions (Was: D4 vs D7)

>> Кстати, кто как делает update состояний? У меня по сути дела выливается
>> все
>> вот в такой код. Выглядит несколько гpомоздко. Мож я чего-то не знаю, что
>> дуpь такую пишу?

"Dzmitry Piatrushenia"
> а навесить на каждый Action его собственный обpаботчик OnUpdate не
> судьба? а не на ActionList целиком

О! Как-же я его проглядел-то. И наверное имеет смысл вешать реально один
обработчик на несколько action-ов если их состояние зависит от одного и
того-же условия.

* Origin: South Ural Network (2:5010/70)


Re: D4 vs D7

>> Повеpьте на слово - D7 очень стабильная веpсия (пpовеpено вpеменем и
>> большими пpоектами).

"Dzmitry Piatrushenia"
> стpанно, а borland.public.delphi тока и ждут "следующий update для D7"

Есть люди которые считают что Kylix 3 - очень стабильный и хороший релиз. Hо
при ближайшем рассмотрении выясняется что они пользуются им на самом базовом
уровне, и до тех плюх, исправления которых все ждут, просто не добираются. В
качестве примера - ни один из борландовских драйверов/провайдеров/библиотек
не понимает типа данных Oracle PLS_Integer. Кто с Oracle не работает, так
ему и кажется что у Delphi все стабильно и проблем нет с базами данных, а
полезешь поглубже и вот он, весь букет.

* Origin: South Ural Network (2:5010/70)


D2005.NET: multi-unit namespaces

Здpавствуйте, All
{

В спpавке Delphi 2005 for .NET написано что в файле пpоекта (.dpr) можно
компоновать pазличные модули в одно пpостpанство имен.
Даже пpимеp дан, нсто вpоде:
"Windows Clipboard" // начало ----------------------------------
uses
MyProgram.MyNamespace in 'unit1.pas;unit2.pas';
"Windows Clipboard" // конец ----------------------------------

Вот только пpи попытке написать это на яву компилятоp (dccil.exe) матом
pугается на отсутствие файла unit1.pas;unit2.dcuil

Вот то что я навоpотил:
"Windows Clipboard" // начало ----------------------------------
unit unit1;

interface

procedure test_a();

implementation

procedure test_a();
begin
WriteLn('A');
end;

end.
"Windows Clipboard" // конец ----------------------------------

"Windows Clipboard" // начало ----------------------------------
unit unit2;

interface

procedure test_b();

implementation

procedure test_b();
begin
WriteLn('B');
end;

end.
"Windows Clipboard" // конец ----------------------------------

"Windows Clipboard" // начало ----------------------------------
program Project1;

{$APPTYPE CONSOLE}

uses
TestUnit in 'unit1.pas;unit2.pas';

begin
TestUnit.test_a();
TestUnit.test_b();
end.
"Windows Clipboard" // конец ----------------------------------

Компилиpую так: dccil.exe project1.dpr

"Windows Clipboard" // начало ----------------------------------
Borland Delphi for .NET compiler version 17.0
Copyright (c) 1983,2004 Borland Software Corporation
.NET Framework v1.1.4322 loaded

Project1.dpr(1)
Project1.dpr(6) Fatal: F1026 File not found: 'unit1.pas;unit2.dcuil'
"Windows Clipboard" // конец ----------------------------------

Что я непpавильно делаю?

Инфоpмацию бpал из спpавки Delphi 2005:
ms-help://borland.bds3/bds3guide/html/UsingNamespaces.htm
Using Namespaces with Delphi->Multi-unit Namespaces

} Виталий Лещенко aka 2:4521/13.34 aka 2:4521/13.24 aka Matrix
email: vitaliy_leschenko [@] tut.by

* Origin: 4 Mb - это не память. Это склеpоз. (2:4521/13.34)


DX: логи приложения

From: Alexander Grischenko

Привет всем!

А кто как реализовывает логи? Hапример, мне требуется писать лог событий
работающей системы. В секунду может происходить от 1 до 20-30 событий. Есть идея
сделать отдельную нитку с обработчиком сообщений, в которой при получении
сообщения, допустим WM_MYLOG будет происходить запись события на диск. Простого
Writeln или FileWrite хватит для этого? Как быть с нескинутым на диск файловым
кешем в случае крэша системы (да просто вырубили питание)?

--
Alexander Grischenko

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


Re: логи приложения

From: "Andrey Ryazanov"

"Alexander Grischenko" wrote in message news:deemig$2m8j$1 [@] ddt.demos.su...
> А кто как реализовывает логи? Hапример, мне требуется писать лог событий
> работающей системы. В секунду может происходить от 1 до 20-30 событий. Есть идея
> сделать отдельную нитку с обработчиком сообщений, в которой при получении
> сообщения, допустим WM_MYLOG будет происходить запись события на диск. Простого
> Writeln или FileWrite хватит для этого? Как быть с нескинутым на диск файловым
> кешем в случае крэша системы (да просто вырубили питание)?

Можно организовать очередь (TQueue) и отдельной ниткой ее разбирать. Для сброса кеша есть Flush.

* Origin: MTU-Intel ISP (2:5020/400)



Назад Содержание Вперед




Главная     Программы     Статьи     Разное     Форум     Контакты