Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Чтение из файла и отображение процесса в ProgressB 
:(
    Опции темы
Alex
Дата 24.6.2002, 21:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4147
Регистрация: 25.3.2002
Где: Москва

Репутация: 80
Всего: 162



Есть процедура
Код
// Процедура для загрузки списка программ
procedure LoadListView_1(List :tListView; var f :TextFile);
var
 s :String;
 CurrentItem :tListItem;
begin
  FileVersion := 0;
  CurrentItem := Nil;  // это на тот случай если встретятся строки до первой '[...]',
                       // кроме того, служит признаком отсутствия текущей записи
  List.Items.BeginUpdate;
  try
    List.Items.Clear;
    while  not Eof(f)  do begin
      ReadLn(f,s);
      if  (Length(s)>=2) and (s[1]='[') and (s[Length(s)]=']') then begin
        // Новый элемент списка. Замечу, может даже с "пустым" именем
        FillDefaults(CurrentItem);     // "добить" полямипредыдущую запись
        CurrentItem := List.Items.Add;
        CurrentItem.Caption := Copy(s,2,Length(s)-2);
        end
      else if CurrentItem <> Nil then begin
        // новый подэлемент для элемента CurrentItem
        CurrentItem.SubItems.Add(s);
        end
      else begin
        // Строка не заключенная в [] однако, еще нет CurrentItem, т.е. еще
        // не было ни одной строки заключенной в [].
        // Просто игнорируем ее.
        // Проверяем версию файла
        if  AnsiStartsText(VersionIdPrefis,s)  then begin
          FileVersion := StrToInt(Copy(s,Length(VersionIdPrefis)+1,MaxInt));
        end;
      end;
    end;
    FillDefaults(CurrentItem); // "добить" полями предыдущую, в данном случае последнюю запись
  finally
    List.Items.EndUpdate;
  end;
end;

Как отображать ход процесса в ProgressBar?


--------------------
Написать можно все - главное четко представлять, что ты хочешь получить в конце. 
PM Skype   Вверх
Baa
Дата 24.6.2002, 21:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2639
Регистрация: 12.4.2002
Где: Москва

Репутация: нет
Всего: 12



Очень просто :) максимальным значением прогресбара ставишь кол-во линий (код я особо не сморел, но похоже там по линиям читается файл) и потом при прочтении каждой следующей линии передвигаешь текущий указатель прогресс бара на 1


--------------------
"Duty is everything; the greatest of joys, the deepest of sorrows" Aribeth de Tylmarande
PM ICQ   Вверх
Alex
Дата 24.6.2002, 22:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4147
Регистрация: 25.3.2002
Где: Москва

Репутация: 80
Всего: 162



Хоть убейте, но напрочь забыл, как узнать, сколько линий в файле.


--------------------
Написать можно все - главное четко представлять, что ты хочешь получить в конце. 
PM Skype   Вверх
Song
Дата 24.6.2002, 22:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Sysman.ru
***


Профиль
Группа: Участник
Сообщений: 1095
Регистрация: 2.6.2002

Репутация: 2
Всего: 4



Ха-ха, а ничего что TProgressBar.Position type of Integer? И сколько можно таким образом файл длиной прочитать?
Как минимум TGauge нужен.
Посчитать как? Загрузить в список да посмотреть, либо подсчитать на холостом ходу. По другому никак.


--------------------
Прежде чем сказать "Невозможно", подумай, прав ли ты
PM WWW ICQ   Вверх
Baa
Дата 25.6.2002, 02:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2639
Регистрация: 12.4.2002
Где: Москва

Репутация: нет
Всего: 12



Цитата(Song @ 25.6.2002, 02:07)
Ха-ха, а ничего что TProgressBar.Position type of Integer? И сколько можно таким образом файл длиной прочитать?
Как минимум TGauge нужен.

Да лана те придираться ;-) я ж общий смысл рассказал :)


--------------------
"Duty is everything; the greatest of joys, the deepest of sorrows" Aribeth de Tylmarande
PM ICQ   Вверх
Vit
Дата 25.6.2002, 06:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: 48
Всего: 207



Именно ответ на этот вопрос я и приводил в моей статье о файлах:

http://www.forum.vingrad.ru/cgi-bin....;t=1166

чтение текстового файла по сторокам с точным указанием сколько прочитано на прогрес-баре (естественно количество строк я не считал в файле, так как это было бы уже чтение дважды).




--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
VoL
Дата 25.6.2002, 08:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 26.3.2002

Репутация: нет
Всего: нет



Song, а почему ты задал такой вопрос :"И сколько можно таким образом файл длиной прочитать?" - любой длины файл. Просто например файл 200 строк, а 1%= 2 строкам - вот и все!!!
PM MAIL   Вверх
VoL
Дата 25.6.2002, 08:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 26.3.2002

Репутация: нет
Всего: нет



to Song: если я неправильно понял твои мысли - извини!
PM MAIL   Вверх
Alex
Дата 25.6.2002, 08:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4147
Регистрация: 25.3.2002
Где: Москва

Репутация: 80
Всего: 162



Ладно, не сортесь. Всем спасибо, особенно Baa и Vit.


--------------------
Написать можно все - главное четко представлять, что ты хочешь получить в конце. 
PM Skype   Вверх
Song
Дата 25.6.2002, 09:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Sysman.ru
***


Профиль
Группа: Участник
Сообщений: 1095
Регистрация: 2.6.2002

Репутация: 2
Всего: 4



Цитата(VoL @ 25.6.2002, 09:03)
Song, а почему ты задал такой вопрос :"И сколько можно таким образом файл длиной прочитать?" - любой длины файл. Просто например файл 200 строк, а 1%= 2 строкам - вот и все!!!

Смотрим ответ Baa:
>> и прибавляем указатель на единицу...

With ProgressBar1 Do Position:=Position+1;

Отсюда несложно догадать что можно будет прочитать файл только до лимита типа Integer т.к. Position - type of Integer

Чтобы было как Вы сказали нужно ещё делать масштабирование по 2%


--------------------
Прежде чем сказать "Невозможно", подумай, прав ли ты
PM WWW ICQ   Вверх
VoL
Дата 25.6.2002, 16:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 26.3.2002

Репутация: нет
Всего: нет



Тоже верно  :)
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0583 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.