Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "KOL";
Текущий архив: 2004.11.21;
Скачать: [xml.tar.bz2];

Вниз

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 вся ветка

Форум: "KOL";
Текущий архив: 2004.11.21;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.51 MB
Время: 0.032 c
1-1099992632
Stanislav
2004-11-09 12:30
2004.11.21
TMemoryStream В чем отличее методов


1-1099858549
тт
2004-11-07 23:15
2004.11.21
Генератор случайных чисел.


3-1098071702
ILUHA
2004-10-18 07:55
2004.11.21
Вопрос по IBTransaction


14-1099551491
SPeller
2004-11-04 09:58
2004.11.21
Проблема с диспетчером задач


1-1099903691
Igit
2004-11-08 11:48
2004.11.21
Поиск строки в строке





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский