Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.48 MB
Время: 0.027 c
6-1142006821
safo
2006-03-10 19:07
2006.08.20
Существуют ли функции для работы с файлом HOSTS?


4-1145024247
ShPRO_TT
2006-04-14 18:17
2006.08.20
Криптография в Windows (Crypto API)


3-1150216421
bruha
2006-06-13 20:33
2006.08.20
вопрос по реализации Master-Detail, lookup -> calculated field


4-1145516275
Dimich1978
2006-04-20 10:57
2006.08.20
Программно нажать на кнопку закрытия формы(крестик)


4-1146405087
BOGDAN
2006-04-30 17:51
2006.08.20
Не могу создать иконку с прозрачностью




   Наверх