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

Вниз

Как узнать, что файл полностью загрузился?   Найти похожие ветки 

 
17Landgraf   (2006-07-09 12:50) [0]

Добрый день! Подскажите, пожалуйста.
Задача следующая: открыть текстовый файл и прокрутить scroll в конец файла. Для установки scroll в конец файла использую свою процедуру ScrollDown(). Файлы весят по разному - от 300КБ до 28 МБ. Вся загвоздка в том, что если использовать процедуру ScrollDown() сразу после открытия файла, то процедура не срабатывает, (файл открывается в начале). Если подождать, когда файл полностью загрузится и вызвать процедуру, тогда все нормально(scroll стоит в конце файла). Чтобы процедура срабатывала правильно, необходимо дождаться пока файл полностью загрузится. Собственно вопрос: как узнать, что файл полностью загрузился? Скорость загрузки, соответственно зависит от размера файла.

Такой код работает не правильно:


ShellExecute(0,nil,PChar(StringName),nil,PChar("D:\"),SW_SHOW);
  ScrollDown(GlobalName);


 
Мефисто   (2006-07-09 13:06) [1]


> ScrollDown(GlobalName);


А это что за зверь?


 
17Landgraf   (2006-07-09 13:10) [2]

Процедура которая скролит в конец файла!


{процедура скролит в конец файла}
procedure ScrollDown(GlobalName:string);
var
  Wnd,Child:Hwnd;
  buff,title,c: array [0..127] of Char;
  NameOfClass,s:string;
begin
  Wnd := FindWindow("CiceroUIWndFrame",nil);;
  while Wnd<>0 do
  begin
     GetClassName(Wnd,buff,sizeof(buff));
     NameOfClass:=StrPas(buff);
     if NameOfClass="Notepad" then
        begin
           GetWindowText(Wnd,title,sizeof(title));
            if Pos(GlobalName,strpas(title))<>0 then
              begin
                 Child := GetWindow(Wnd, GW_CHILD);
                 While Child <> 0 do
                    begin
                       if GetClassName(Child, C, SizeOf(C)) > 0 then
                       begin
                        s:= StrPas(C);
                        if S="Edit" then SendMessage(Child,WM_VSCROLL,SB_BOTTOM ,0);
                       end;
                    Child := GetWindow(Child, GW_HWNDNEXT);
                    end;
              Break; //уходим из цикла
              end;
        end;
     Wnd:= GetWindow(Wnd, gw_HWndNext);
  end;
end;


GlobalName - Имя текстового файла


 
Leonid Troyanovsky ©   (2006-07-09 13:18) [3]


> 17Landgraf   (09.07.06 13:10) [2]

> Процедура которая скролит в конец файла!


Во-первых, проще прочитать файл в собственный TMemo,
чем управлять чужим EDIT.
Во-вторых, если уж так хочется в чужой, используй,
например, WinExec.

--
Regards, LVT.


 
17Landgraf   (2006-07-09 13:26) [4]

У меня нет проблем с вызовом файла! Управление Edit-ом тоже происходит нормально, но если текстовый файл (notepad) полнотью загрузился! Мне надо только узнать, когда произойдет полная загрузка фала и уже после этого вызвать мою процедуру ScrollDown.


 
Leonid Troyanovsky ©   (2006-07-09 13:31) [5]


> 17Landgraf   (09.07.06 13:26) [4]

> У меня нет проблем с вызовом файла! Управление Edit-ом тоже
> происходит нормально, но если текстовый файл (notepad) полнотью
> загрузился! Мне надо только узнать, когда произойдет полная
> загрузка фала и уже после этого вызвать мою процедуру ScrollDown.


Если у тебя нет проблем, тогда чего же ты
1) пишешь сюда.
2) не читаешь ответы

--
Regards, LVT.


 
17Landgraf   (2006-07-09 13:38) [6]

У меня есть проблема на определенном участке декомпозиции моей задачи. Программированием я начал заниматься не так давно, поэтому некоторые ответы мне могут быть не совсем понятны.

> Во-вторых, если уж так хочется в чужой, используй,
> например, WinExec.


Как мне в данной ситуации поможет WinExec?


 
Leonid Troyanovsky ©   (2006-07-09 13:39) [7]


> 17Landgraf   (09.07.06 13:38) [6]

> Как мне в данной ситуации поможет WinExec?


Ну, а ты попробуй и доложи.
А там видно будет.

--
Regards, LVT.


 
Leonid Troyanovsky ©   (2006-07-09 13:42) [8]


> 17Landgraf   (09.07.06 13:38) [6]

> У меня есть проблема на определенном участке декомпозиции
> моей задачи.


Туманно. Т.е., управлять чужим EDIT начинающему проще,
чем сделать Memo1.Lines.LoadFromFile ?

--
Regards, LVT.


 
17Landgraf   (2006-07-09 14:47) [9]

To Leonid Troyanovsky ©
Ага спасибо с WinExec работает!

Еще мне подсказали можно использовать CreateProcess+WaitForInputIdle



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

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

Наверх




Память: 0.49 MB
Время: 0.034 c
2-1154315364
n@vichok
2006-07-31 07:09
2006.08.20
Please help


15-1153403799
IceBeerg
2006-07-20 17:56
2006.08.20
Почему ПК выключается сам?


2-1153685169
Adios
2006-07-24 00:06
2006.08.20
Присвоение процедуры


3-1150375985
Бульбаш
2006-06-15 16:53
2006.08.20
Итого по листу в Qreport


1-1152077296
dreamse
2006-07-05 09:28
2006.08.20
Как вытащить дату из строки типа 03.07.06_17.-32-.21.txt