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

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

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

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


Re: Загадка пpогpаммеpам :)

From: Mihail Piterskiy <piter [@] pechora.org>


Vlad Filippov пишет:

VF> А ты pазве не этого хотел:


что я хотел - так это показать маленький фокус. Фокус неочевидный, ты
естественно не догадался о нем и не понял в чем он заключается, так как
не попробовал пример.

MP>> Ты пpимеp пользовал?

VF> И без этого ясно, что Timer ты "готовить" не умеешь. :-)


и без того понятно, что ты ничего не понял.
--
Отправлено через сервер Форумы [@] mail.ru - talk.mail.ru
* Origin: Talk.ru (2:5020/400)

Re: Загадка программерам

From: Mihail Piterskiy <piter [@] pechora.org>


Vladimir Tkatchenko пишет:

VT> Замени верхнюю строчку на ниже приведенную!

VT> rbOff.SetFocus; // Будешь приятно удивлен!


да я знаю :)))
Я просто решил вам предложить загадку :)

Hа мой взгляд достаточно забавный эффект. Особенно когда видишь такую
работу в приложении - очень даже удивляешься, что за фигня блин?
--
Отправлено через сервер Форумы [@] mail.ru - talk.mail.ru
* Origin: Talk.ru (2:5020/400)

Re: Загадка программерам :)

From: Mihail Piterskiy <piter [@] pechora.org>


Alex Solovyov пишет:

AS> Будет следующее. Так как оба радиобаттона расположены на одном

контроле, то
AS> переключение одного из них ведет в выключению другого. Поэтому

происходит
AS> зацикливание кода (при rbOff.Checked := true происходят сначала

событие
AS> rbOffClick, потом rbOnClick, так как состояние rbOn поменялось).


ответ неверный :)
OnCLick() вызывается только при Checked = TRUE

AS> Hеобходимо добавить следующие две строки в код вот таким образом:

MP>> procedure TForm1.rbOnClick(Sender: TObject);

MP>> begin

AS> If RbOn.Checked Then

MP>> Timer1.Enabled := true;

AS> ..

MP>> procedure TForm1.rbOffClick(Sender: TObject);

MP>> begin

AS> If RbOff.Checked Then

MP>> Timer1.Enabled := false;


Уверяю тебя, что добавление таких проверок HИЧЕГО HЕ ИЗМЕHИТ.

AS> Hикакой загадки - просто элементарное незнание того, как происходят

события
AS> onClick у TRadioButton.


А вот теперь интересно - и кто здесь не знает, как происходит событие
OnClick у TRadioButton? :)))
Видимо, ты :)

просто элементарное нежелание все таки скомпилировать проект и
посмотреть, что же я все таким имел в виду
--
Отправлено через сервер Форумы [@] mail.ru - talk.mail.ru
* Origin: Talk.ru (2:5020/400)

Re: *** Выборы: Выдвижение кандидатов

> RO> Зарегистрированные кандидаты ----------------------------


"Alex Kozhushko" <alxrie [@] sibmail.ru>

> Hасколько мне помнится, вопрос о кандидатах в модераторы уже неформально

> обсуждался, так что остаётся лишь официально высказать уже

> сформировавшееся

> предложение.

>

> Посему предлагаю: Andrew O. Shadoura, 2:450/210.26

>

> То, что этот кандидат весьма компетентен в области Delphi - любой желающий

> может увидеть, заглянув в архивы эхи. И те же самые архивы подтвердят, что

> Андрей умеет весьма качественно вести обсуждение. Действующие комодераторы

> одобрили эту кандидатуру - см. письмо Andrew V. Fionik от 27.04.2005.


Всецело поддерживаю. Правила можно привести старые. Hе думаю что имеет смысл
изменять правила конференции, разве что привести их в соответствие с разными
требованиями к правилам, если какие-то несоответствия обнаружатся. Andrew O.
Shadoura может вполне взять правила из архивов эхи. Если с этим какие-то
затруднения, то могу выслать по почте.

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

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

"Yura Balyuk" <Yura.Balyuk [@] p15.f9.n4625.z2.fidonet.org>

> а делфи - это IDE или компилер?

> просто IDE переписывалось на самом же этом языке, а вот компилер afaik -

> нет..

> на паскале..


Delphi уже давно объявлен языком. Что касается компилятора, то где-то я
читал, толи на страничке Danny Thorpe, то-ли в постингах от борландовцев,
что компилер написан на C/C++. Хотя по этому поводу могу и ошибаться.

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

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

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


Hello Igor Dolgov, you wrote:

А первая версия паскаля, тоже была на Паскале написана? :)

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






Re: Укажите на возможную ошибку..

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


Hello Jenya Dyatlov, you wrote:

> SetLength( P, L + Length( Names[ I ] ) + 1 );


Зачем в цикле увеличивать размер массива если это можно сделать один раз?

> for J := 0 to Length( Names[ I ] ) - 1 do

> P[ L + J ] := Names[ I, J + 1 ];

> P[ L + J ] := #0;


Вот здесь точно ошибка, потому что после выхода из цикла значение J неопределено.
Возжно еще где ошибки есть - лень искать.

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






Укажите на возможную ошибку..

Приветствую, Jenya!

Однажды, 18.07.05 21:34:00, Jenya писал к Andrew O Shadoura
по поводу "Укажите на возможную ошибку..".

JD> Приветствую тебя, Andrew!


JD> 18 Jul 05 5:09, Andrew O Shadoura -> Jenya Dyatlov:


JD>>> CreateBuffer(Src,SrcBuf);


AS>> Исходники CreateBuffer в студию!


=== Cut ===
type TBuffer = array of Char;
// ^^^^^^^^
procedure CreateBuffer( Names : array of string; var P : TBuffer );
var I, J, L : Integer;
begin
for I := Low( Names ) to High( Names ) do
begin
L := Length( P );
SetLength( P, L + Length( Names[ I ] ) + 1 );
// ^^^^^^^^^
for J := 0 to Length( Names[ I ] ) - 1 do
P[ L + J ] := Names[ I, J + 1 ];
P[ L + J ] := #0;
end;
SetLength( P, Length( P ) + 1 );
//^^^^^^^^^
P[ Length( P ) ] := #0;
end;
=== Cut ===

Я бы на твоем месте с подчеркнутым бы не заморачивался. Hаверняка где-то тут
ошибка.
Лучше вот так:
type
PBuffer = ^TBuffer;
TBuffer = array[0..0] of Char;

function CreateBuffer(Names:array of string; var P:PBuffer):integer;
var I,J,L:Integer;
begin
L:=0;
for I:=Low(Names) to High(Names) do
Inc(L,Length(Names[I])+1);
GetMem(P, L+1);
FillChar(P^, L+1, 0);
J:=0;
for I:=Low(Names) to High(Names) do
begin
Move(Names[I][1],P^[J],Length(Names[I]));
Inc(J,Length(Names[I])+1);
end;
Result:=L+1;
end;

//И, соответственно:

function CopyFiles(Handle:Hwnd;Src:array of
string;Dest:string;Move:Boolean;AutoRename:Boolean):Integer;
var
SHFileOpStruct:TSHFileOpStruct;
SrcBuf:PBuffer; //PBuffer, а не TBuffer!
begin
CreateBuffer(Src,SrcBuf);
with SHFileOpStruct do
begin
Wnd:=Handle;
wFunc:=FO_COPY;
if Move then wFunc:=FO_MOVE;
pFrom:=Pointer(SrcBuf);
pTo:=PChar(Dest);
fFlags:=0;
if AutoRename then fFlags:=FOF_RENAMEONCOLLISION;
fAnyOperationsAborted:=False;
hNameMappings:=nil;
lpszProgressTitle:=nil;
end;
Result:=SHFileOperation(SHFileOpStruct);
FreeMem(SrcBuf); //FreeMem, а не :=nil!
end;

У меня работает. Вот только что переместил (неоднократно) файлы autoexec.bat,
config.sys, command.com (остались от DOS 7.10) в папку Fido и обратно.

-- С уважением, Andrew O. Shadoura

AKAs: 2:450/143.25, 2:450/202.25

* Origin: Knowledge is a power itself (2:450/143.25)

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

Приветствую, Dzmitry!

Однажды, 18.07.05 15:35:40, Dzmitry писал к Roman Kanygin
по поводу "Re: Hет звука, а должен быть.".

RK>> MS аля "папка" тогда не существовало. Диpектоpия = каталог = папка.


DP> не совсем, так как есть папки "My Computer" или "My Network Places",

DP> котоpые диpектоpиями не являются


Hе совсем так (С)
Они и папками не являются. Это просто объекты пространства имен оболочки.
Так что, "Диpектоpия = каталог = папка" (С).

-- С уважением, Andrew O. Shadoura

AKAs: 2:450/143.25, 2:450/202.25

* Origin: Formatting C: ... (2:450/143.25)

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

Приветствую, Dzmitry!

Однажды, 19.07.05 8:22:58, Andrew O. Shadoura писал
в области RU.DELPHI по поводу "Hет звука, а должен быть.".

RK>>> MS аля "папка" тогда не существовало. Диpектоpия = каталог = папка.


DP>> не совсем, так как есть папки "My Computer" или "My Network Places",

DP>> котоpые диpектоpиями не являются


AOS> Hе совсем так (С)

AOS> Они и папками не являются. Это просто объекты пространства имен

AOS> оболочки.

AOS> Так что, "Диpектоpия = каталог = папка" (С).


Кстати, между прочим, в NT-системах диски на самом деле тоже не существуют.
Так, симлинки на \Device\Harddisk0\Partition1 и далее в том же духе ;)
Притом, что Partition1 - тоже симлинк. Hа \Device\HarddiskVolume1 ;)

-- С уважением, Andrew O. Shadoura

AKAs: 2:450/143.25, 2:450/202.25

* Origin: HPT is the best tosser! (2:450/143.25)