Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.11.2011, 21:55   #1
Євгеній Бєлік
Пользователь
 
Аватар для Євгеній Бєлік
 
Регистрация: 29.10.2011
Сообщений: 52
По умолчанию DES, прогресс бар

Помогите сделать прогрессбар в делфи, вот программа(моя) но мне нужно чтобы действовал прогрессбар(хотябы только шифровки) взависимости от процесса шифровки файла, в программе есть оттельно процедура шифровки и розшифровки.
Кто сможет дописать чтобы работал прогрессбар? буду очень благодарен!!
Вложения
Тип файла: rar DES.rar (1.20 Мб, 16 просмотров)

Последний раз редактировалось Євгеній Бєлік; 03.11.2011 в 22:05.
Євгеній Бєлік вне форума Ответить с цитированием
Старый 07.11.2011, 14:18   #2
Simply-Art
Программист и
Участник клуба
 
Аватар для Simply-Art
 
Регистрация: 29.10.2006
Сообщений: 1,265
По умолчанию

У меня нет некоторых компонентов, поэтому запустить и проверить не могу, но попробуйте так, в модуле DCPcrypt2.pas
Код:
unit DCPcrypt2;

interface
uses
  Classes, Sysutils, DCPconst, DCPbase64,uMain;
// дальше много кода, доходим до функции EncryptStream
function TDCP_cipher.EncryptStream(InStream, OutStream: TStream; Size: longword): longword;
var
  Buffer: array[0..8191] of byte;
  i, Read: longword;
begin
  Result:= 0;
  frmMain.Gauge1.Progress:=0;
  frmMain.Gauge1.MaxValue:=(Size div Sizeof(Buffer));
  for i:= 1 to (Size div Sizeof(Buffer)) do
  begin
    Read:= InStream.Read(Buffer,Sizeof(Buffer));
    Inc(Result,Read);
    EncryptStream(Buffer,Buffer,Read);
    OutStream.Write(Buffer,Read);
    frmMain.Gauge1.Progress:=i;
// и дальше опять много кода
Дешифрование делается аналогично, пробуйте, потом скажете если не получиться
Simply-Art вне форума Ответить с цитированием
Старый 07.11.2011, 20:57   #3
Євгеній Бєлік
Пользователь
 
Аватар для Євгеній Бєлік
 
Регистрация: 29.10.2011
Сообщений: 52
По умолчанию

Ошибка "Circular unit reference to uMain".
в чём собственно проблема?
Євгеній Бєлік вне форума Ответить с цитированием
Старый 07.11.2011, 22:03   #4
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

В том, что две юниты ссылаются друг на друга... (uses)
mihali4 вне форума Ответить с цитированием
Старый 07.11.2011, 22:07   #5
Євгеній Бєлік
Пользователь
 
Аватар для Євгеній Бєлік
 
Регистрация: 29.10.2011
Сообщений: 52
По умолчанию

ну я уже пробывал описать один из них в implementation, но всёравно ошибка.
Євгеній Бєлік вне форума Ответить с цитированием
Старый 08.11.2011, 04:45   #6
Simply-Art
Программист и
Участник клуба
 
Аватар для Simply-Art
 
Регистрация: 29.10.2006
Сообщений: 1,265
По умолчанию

Скиньте компоненты которые вы ставили для этой программы.
Simply-Art вне форума Ответить с цитированием
Старый 08.11.2011, 05:33   #7
Hotei
Новичок
Джуниор
 
Регистрация: 08.11.2011
Сообщений: 1
По умолчанию

05:33
Могу посоветовать только разбивать функции шифрования и дешифрования на итерации, что бы они сразу возвращали проценты. (Так будет правильно с точки зрения теории программирования)
Или передавать прогрессбар ссылкой и уже обращаться к методу внутри
Код:
uMain
Cipher.EncryptStream(strmInput,strmOutput,strmInput.Size,Gauge1);

DCPcrypt2
function TDCP_cipher.EncryptStream(InStream, OutStream: TStream; Size: longword; Progress:TGauge): longword;
var
  Buffer: array[0..8191] of byte;
  i, Read: longword;
begin
  Result:= 0;
  for i:= 1 to (Size div Sizeof(Buffer)) do
  begin
    Read:= InStream.Read(Buffer,Sizeof(Buffer));
    Inc(Result,Read);
    Encrypt(Buffer,Buffer,Read);
    OutStream.Write(Buffer,Read);
    Progress.AddProgress(Round((Size div Sizeof(Buffer))/100));
  end;
  if (Size mod Sizeof(Buffer))<> 0 then
  begin
    Read:= InStream.Read(Buffer,Size mod Sizeof(Buffer));
    Inc(Result,Read);
    Encrypt(Buffer,Buffer,Read);
    OutStream.Write(Buffer,Read);
    Progress.AddProgress(100);
  end;
end;
Передавай приветы Оксане Ивановне!

05:35
Цитата:
Сообщение от Simply-Art Посмотреть сообщение
Скиньте компоненты которые вы ставили для этой программы.
Компоненты все в архиве, только необходимо DCPreg.pas подкорректировать

Красные жирные циферки видны ?
Это время, когда вы отправляли свои сообщения друг за другом, подряд.
У нас есть кнопка "Правка".
Читаем правила раздела.
По правилам это приравнивается к флуду.

Последний раз редактировалось mihali4; 08.11.2011 в 12:47.
Hotei вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
куда лучше вставить прогресс бар? megostudent Общие вопросы Delphi 3 28.09.2011 10:09
Типа Прогресс бар! WizarD.89 Microsoft Office Excel 3 24.04.2011 14:20
Цикл и прогресс-бар А)-(дрей Microsoft Office Excel 4 17.03.2011 18:13
список и прогресс бар Temka Общие вопросы Delphi 1 02.06.2009 12:20