Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
2-1154415586
an-na20002
2006-08-01 10:59
2006.08.20
переменное количество TEdit


2-1154373672
ivane
2006-07-31 23:21
2006.08.20
Качество цветопередачи


3-1150133766
kaif
2006-06-12 21:36
2006.08.20
Обрезание имен UTF-8 при добавлении юзера в IBSecurityService


3-1150401719
keymaster
2006-06-16 00:01
2006.08.20
Детский вопрос


15-1153845017
oldman
2006-07-25 20:30
2006.08.20
Как съезжают программисты...





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский