Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.11.21;
Скачать: CL | DM;

Вниз

Application.ProssesMessage в KOL?   Найти похожие ветки 

 
Delphi5.01 ©   (2004-04-14 20:57) [0]

Доброе время суток!
Что является аналогом Application.ProssesMessage в KOL?
Спасибо


 
Gandalf ©   (2004-04-14 21:08) [1]

Applet.Оноже...


 
miek ©   (2004-04-14 22:10) [2]

Form.ProcessMessage
Form.ProcessMessages
Form.ProcessPaintMessages


 
Delphi5.01 ©   (2004-04-15 07:13) [3]

Spasibo ...

Spasibo
Spasibo
Spasibo

:-)))


 
Deimos ©   (2004-04-15 22:55) [4]

Кстати..при использовании с Прогресс баром  Form.ProcessMessage не работает :((


 
Gandalf ©   (2004-04-16 10:26) [5]

Поробуй ему Invalidate, Update.


 
mdw ©   (2004-04-16 10:57) [6]

>Кстати..при использовании с Прогресс баром  Form.ProcessMessage не работает :((
А почему Form.ProcessMessage? а не Applet?


 
Deimos ©   (2004-04-16 19:33) [7]

applet.ProcessMessage тоже не работает..


 
SPeller ©   (2004-04-17 03:10) [8]

ProcessMessages !
ProcessMessage всего-лишь одно сообщение обрабатывает :)


 
4kusNick ©   (2004-04-17 19:26) [9]

Или ProcessMessagesEx


 
Deimos ©   (2004-04-18 20:53) [10]

по барабану...  ProcessMessages тоже не работает...


 
SPeller ©   (2004-04-19 12:37) [11]


> по барабану...  ProcessMessages тоже не работает...

Ты уверен?


 
Deimos ©   (2004-04-19 18:10) [12]

да.. по крайней мере у меня точно не работает.. :))) линейка статуса появляется только по окончании процесса, сразу заполненная
правда, лишь в том случае если начало индикации привязано к событию
визуализации формы. (onShow)
Между прочим я уже поднимал эту тему, но мне никто так ничего вразумительного не ответил.


 
Max Kozlov   (2004-04-20 09:44) [13]

как уже писал Gandalf
"Поробуй ему Invalidate, Update."
сразу после ProcessMessages


 
SPeller ©   (2004-04-20 12:01) [14]

Привели код своего прогресса.


 
Deimos ©   (2004-04-20 22:03) [15]

пожалуйста:


program Project1;

{$R *.res}

uses
windows,
messages,
kol,
KOLBlockCipher,
KOLSHA384;

var
form:Pcontrol;
progress1:Pcontrol;
//********************

procedure start( Dummy : Pointer; Sender: PControl );
var
Source, Dest: pStream;
len: integer;     // длинна куска
cel,ost:integer; // для операций деления
i: integer;     // счетчик

inbuf,outbuf: array [1..1000]of byte;

fish:TKOLBlowfish;
SHA384: TKOLSHA384;
DigSHA384: array [0..47] of byte; // 384 бит на ключ

begin
progress1.Progress:=0;

Source:= NewReadFileStream (ParamStr(1));
cel:=source.Size div 1000; //количество целых оборотов по 1000  байт
ost:=source.Size mod 1000; // остаток

progress1.MaxProgress:=cel;

if ParamStr(2)= "/e" then
Dest:=NewWriteFileStream (ParamStr(1)+".bfs")
else
Dest:=NewWriteFileStream (ChangeFileExt(ParamStr(1),""));

SHA384:= NewSHA384;
SHA384.InitHash; // Инициализируем хеш
SHA384.UpdateStr("password"); // Хешируем пароль
SHA384.Final(DigSHA384); // Получаем захешированный пароль как 384 битный ключ
                       // для blowfish максимум 448 байт

SHA384.Burn;             // Очищаем хеш

len:=1000;         // Устанавливаем длину блока
                // данных для шифровки/расшифровки
//***********************************************************************
if ParamStr(2) = "/e" then        //если нас просят шифровать
begin
for i:= cel downto 1 do
begin
  source.Read(inBuf,len);
  fish:=NewBlowfish;
  fish.InitKey(DigSHA384,384); // Длина ключа в БИТАХ
     fish.EncryptOFB(inbuf,outbuf,len);   //шифруем
  fish.Burn;
  dest.Write(outBuf,len);           //пишем в конечный файл 1000 байта
  progress1.Progress:= progress1.Progress+1;// увеличим прогресс бар
  applet.ProcessMessages;
end;
source.Read(inBuf,ost);  //дочитываем остатки
fish:=NewBlowfish;
fish.InitKey(DigSHA384,384); // Длина ключа в БИТАХ
   fish.EncryptOFB(inbuf,outbuf,ost);   //шифруем остаток
fish.Burn;
dest.Write(outBuf,ost);
end
//*********************************************
else           // иначе расшифровываем
  begin
for i:= cel downto 1 do
begin
  source.Read(inBuf,len);
  fish:=NewBlowfish;
  fish.InitKey(DigSHA384,384); // Длина ключа в БИТАХ
     fish.DecryptOFB(inbuf,outbuf,len);  //расшифровываем
  fish.Burn;
  dest.Write(outBuf,len);           //пишем в конечный файл 1000 байт
  progress1.Progress:= progress1.Progress+1;// увеличим прогресс бар
  applet.ProcessMessages;

end;
source.Read(inBuf,ost);
fish:=NewBlowfish;
fish.InitKey(DigSHA384,384); // Длина ключа в БИТАХ!!!
   fish.DecryptOFB(inbuf,outbuf,ost);  //расшифровываем
fish.Burn;
dest.Write(outBuf,ost);
end;

source.Free;           // всех освобождаем
dest.free;
fish.Free;
SHA384.free;
end;

//-----------------

begin
form:=newForm(applet, "Идёт упаковка");
form.Width:=304;
form.Height:=40;
progress1:=NewProgressbar(form);
progress1.Height:=10;
progress1.Width:=300;

form.OnShow:= TOnEvent(MakeMethod(nil,@start));

run(form);

end.


может кто-нибудь у себя откомпилирует?
прога должна работать из командной строки
пример: чтобы зашифровать 1.zip

 Project1.exe 1.zip /e

      чтобы расшифровать 1.zip.bfs

 Project1.exe 1.zip.bfs

а то я не знаю уже на что думать...


 
SPeller ©   (2004-04-21 02:55) [16]

Вместо этой строки

form:=newForm(applet, "Идёт упаковка");

сделай так:

form := newForm( nil, "Caption" );
Applet := form;


А то аплет-то у тебя nil, поэтому никакой ProcessMessage(s) и не работает.


 
Deimos ©   (2004-04-21 15:42) [17]

понял.. ,спасибо!!!
беру все свои слова обратно.


 
Deimos ©   (2004-04-21 16:06) [18]

Хотя, рановато я обрадовался.
Так тоже не работает.......................  8(
это уже не камни, - это прямо подводные грабли какие-то. :)


 
Gandalf ©   (2004-04-22 12:30) [19]

А где Invalidate,Update?


 
Deimos ©   (2004-04-22 20:42) [20]

Всё равно не получается..
А что делают Invalidate,Update?
может я их вызываю неправильно..

progress1.Progress:= progress1.Progress+1;
 applet.ProcessMessages;
 progress1.Invalidate;
 progress1.Update;


 
SPeller ©   (2004-04-23 03:24) [21]

Волшебная у тебя программа :)


 
Deimos ©   (2004-04-23 07:36) [22]

ммммда..
такое ощущение, что событие onShow происходит только после полной прорисовки контролов, но ведь работает-же.
может другое событие поискать ?
в VCL,помнится, было событие onCreate. у него есть KOL аналог ? я вроде-бы не нашел..


 
Solik ©   (2004-04-23 08:04) [23]

onFormShow


 
Viman ©   (2004-04-23 11:11) [24]

2 all.
Мудрите немного. Дело в том, что OnShow и другие подобные события происходят когда ещё форма не видна, но вот-вот покажется. И если там вызывать основной код программы здесь, то и покажется форма только по его завершению. Во время выполнения кода можете сколько угодно перерисовывать и апдейтить контролы, НО форма-то ещё не видна!
Попробуй так, должно быть все гуд, естественно в procedure start помести свой код:
program CicleProgress;

uses  Kol, windows, messages;

var MainForm: PControl; ProgressBar: PControl; AlreadyRun: Boolean = false;
procedure Start;
var Idx: Integer;
begin
for Idx:=0 to ProgressBar.MaxProgress do
begin
  ProgressBar.Progress:= Idx;
  MainForm.ProcessMessagesEx;
  Sleep(10);
end;
end;

function OnWessages(Dummy : Pointer; var Msg: TMsg; var Rslt: Integer ): Boolean;
begin
 Result:= false;
 if (Msg.message = WM_ACTIVATE) and not AlreadyRun then
 begin
  Rslt:= 0;
  AlreadyRun:= true;
  Start;
 end;
end;

begin
 MainForm:= NewForm(nil, "Test progress...");
 ProgressBar:= NewProgressBar(MainForm);
 MainForm.Width:=300; MainForm.Height:=80;
 ProgressBar.Height:=10; ProgressBar.Width:=270;
 ProgressBar.Left:= 10;
 ProgressBar.Top:= 20;
 MainForm.OnMessage:= TOnMessage(MakeMethod(nil,@OnWessages));
 run(MainForm);
end.


 
Deimos ©   (2004-04-23 21:56) [25]

всё работает, благодарю!!



Страницы: 1 вся ветка

Текущий архив: 2004.11.21;
Скачать: CL | DM;

Наверх




Память: 0.53 MB
Время: 0.029 c
14-1099396577
inic
2004-11-02 14:56
2004.11.21
Общий вопрос о создании БД


14-1099491280
Stef
2004-11-03 17:14
2004.11.21
Кое что из на подобие Орешника


10-1065133576
s_g
2003-10-03 02:26
2004.11.21
Мастера, подскажите интерфейс


14-1099706178
ms
2004-11-06 04:56
2004.11.21
Где найти работу в интернете?


1-1099939023
Alan
2004-11-08 21:37
2004.11.21
Программа для чтения!