Форум: "Основная";
Текущий архив: 2006.08.20;
Скачать: [xml.tar.bz2];
ВнизКак узнать, что файл полностью загрузился? Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.046 c