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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 26.10.2013, 07:30   #1
Jleksern
Форумчанин
 
Аватар для Jleksern
 
Регистрация: 14.10.2011
Сообщений: 137
По умолчанию Прогресс бар как уровень загрузки из консольдного окна

Здравствуйте, собственно хочу узнать...

Возможно ли сделать прогресс бар который будет отображать уровень загрузки из консольдного окна.

В консоле загружаются загружаются java скрипты.... java исходник не имею.

В принципе как Я думаю, сделать чтоб делфи "читала" текст из консоли, исходя из нее в делфи определяется последняя строка и уровень загрузки прогресс бара повышается...
примерно так распределить степень загрузки в процесс баре...

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

Собственно возможно ли такое или как-то можно по проще такое сделать?
Jleksern вне форума Ответить с цитированием
Старый 26.10.2013, 10:27   #2
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Ну читайте, кто мешает?
Как-то так: (код отсюда http://stackoverflow.com/questions/1...-while-running, просто выводит текст в мемо)
Код:
procedure RunDosInMemo(DosApp: String; AMemo: TMemo) ;
const
  ReadBuffer = 2400;
var
  Security    : TSecurityAttributes;
  ReadPipe,
  WritePipe   : THandle;
  start       : TStartUpInfo;
  ProcessInfo : TProcessInformation;
  Buffer      : Pchar;
  BytesRead   : DWord;
  Apprunning  : DWord;

begin
  Security.nlength := SizeOf(TSecurityAttributes) ;
  Security.binherithandle := true;
  Security.lpsecuritydescriptor := nil;
  if Createpipe (ReadPipe, WritePipe, @Security, 0) then 
  begin
    Buffer := AllocMem(ReadBuffer + 1) ;
    FillChar(Start,Sizeof(Start),#0) ;
    start.cb := SizeOf(start) ;
    start.hStdOutput := WritePipe;
    start.hStdInput := ReadPipe;
    start.dwFlags := STARTF_USESTDHANDLES + STARTF_USESHOWWINDOW;
    start.wShowWindow := SW_HIDE;
    if CreateProcess(nil,
                     PChar(DosApp),
                     @Security,
                     @Security,
                     true,
                     NORMAL_PRIORITY_CLASS,
                     nil,
                     nil,
                     start,
                     ProcessInfo) then
    begin
      repeat
        Apprunning := WaitForSingleObject(ProcessInfo.hProcess,100);
        Application.ProcessMessages;
      until (Apprunning <> WAIT_TIMEOUT) ;
      repeat
        BytesRead := 0;
        ReadFile(ReadPipe,Buffer[0],
        ReadBuffer,BytesRead,nil) ;
        Buffer[BytesRead]:= #0;
        OemToAnsi(Buffer,Buffer) ;
        AMemo.Text := AMemo.text + String(Buffer) ;
      until (BytesRead < ReadBuffer) ;
    end;
    FreeMem(Buffer) ;
    CloseHandle(ProcessInfo.hProcess) ;
    CloseHandle(ProcessInfo.hThread) ;
    CloseHandle(ReadPipe) ;
    CloseHandle(WritePipe) ;
  end;
end;

procedure TForm1.Button1Click(Sender: TObject) ;
begin
  RunDosInMemo('chkdsk.exe c:\', Memo1) ;
end;
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 26.10.2013, 13:13   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Откуда такая уверенность что ты знаешь окончание работы консоли?
Да и зачем, если всетки консоль что-то выводит, демонстрируя свою активность?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 29.10.2013, 01:26   #4
Jleksern
Форумчанин
 
Аватар для Jleksern
 
Регистрация: 14.10.2011
Сообщений: 137
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
Ну читайте, кто мешает?
Как-то так: (код отсюда http://stackoverflow.com/questions/1...-while-running, просто выводит текст в мемо)
Спасибо месье за помощь, но вот не задача, на делфи более новых версиях (XE2) слегка матюкается...

Цитата:
[DCC Error] Unit1.pas(74): E2010 Incompatible types: 'PAnsiChar' and 'PWideChar'
На эту строку.
Код:
  OemToAnsi(Buffer,Buffer) ;
Jleksern вне форума Ответить с цитированием
Старый 29.10.2013, 09:02   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

А ты везде PChar замени на PAnsiChar.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 29.10.2013, 11:15   #6
Jleksern
Форумчанин
 
Аватар для Jleksern
 
Регистрация: 14.10.2011
Сообщений: 137
По умолчанию

Уже обрадовался при виде компиляции без ошибок.

При нажатии на кнопку вызова процедуры "RunDosInMemo" вылезла проблема, жалуется на некую библиотеку KERNELBASE.DLL

Jleksern вне форума Ответить с цитированием
Старый 31.10.2013, 02:25   #7
Jleksern
Форумчанин
 
Аватар для Jleksern
 
Регистрация: 14.10.2011
Сообщений: 137
По умолчанию

Ребята, кто знает в чем проблема или есть другой способ получить тот же результат?

Код:
 Откуда такая уверенность что ты знаешь окончание работы консоли?
Дело в том что в консоле отображаются загружается java сервер, и в консоль идет сообщение о том что загрузилось что либо.
Всегда сообщения одни и те же, я планию по ним сделать вывод в прогрессбар о степени загрузки.
При окончании есть строка которая обозначает что всё загрузилось.
Jleksern вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Прогресс бар Gudzik11 Общие вопросы Delphi 41 15.05.2013 10:03
прогресс бар в консоли Volkogriz Общие вопросы Delphi 7 10.01.2013 20:52
Типа Прогресс бар! WizarD.89 Microsoft Office Excel 3 24.04.2011 14:20
Цикл и прогресс-бар А)-(дрей Microsoft Office Excel 4 17.03.2011 18:13