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

Вниз

TGauge для вывода сколько процентов файла обработано.   Найти похожие ветки 

 
operator ©   (2008-04-17 12:14) [0]

Есть текстовый файл, программа обрабатывает построчно. Хочу выводит на экран информацию о ходе выполнения:


procedure TForm1.Button1Click(Sender: TObject);
const filename:string="Z:\share\wafer 6eid48302-1-02 W6EID48302-1-02 20080329 221001.rstl";
var f:textfile;
   sr:TSearchRec;
   size,complete:longint;
   s:string;
begin
   complete:=0;
   findfirst(filename,faanyfile,sr);
   size:=sr.Size;
   assignfile(f,filename);
   reset(f);
   while not eof(f) do begin
     readln(f,s);
     inc(complete,length(s));
     Gauge1.Progress:=round(100*complete/size);
     //Обработка строки
   end;
end;


пробую на файле размером 46 Мб, в результате в районе 40-50 процентов индикатор сбрасывается в 0, после анализа выяснил, что в этотм момент
round(100*complete/size);
возвращает ему отрицательное значение. :-\ :-\


 
Сергей М. ©   (2008-04-17 12:20) [1]


> выяснил, что в этотм момент
> round(100*complete/size);


Значит в этот момент complete < 0


 
Плохиш ©   (2008-04-17 12:21) [2]


Generic integer types Type  Range  Format  .NET Type Mapping  
Integer
-2147483648..2147483647
signed 32-bit
System.Int32

Cardinal
0..4294967295
unsigned 32-bit
System.UInt32


Fundamental integer types include Shortint, Smallint, Longint, Int64, Byte, Word, and Longword.
Fundamental integer types Type  Range  Format  .NET Type Mapping  
Shortint
-128..127
signed 8-bit
System.SByte

Smallint
-32768..32767
signed 16-bit
System.Int16

Longint
-2147483648..2147483647
signed 32-bit
System.Int32

Int64
-2^63..2^63-1
signed 64-bit
System.Int64

Byte
0..255
unsigned 8-bit
System.Byte

Word
0..65535
unsigned 16-bit
System.UInt16

Longword
0..4294967295
unsigned 32-bit
System.UInt32

Заключи деление в скобки или используй Integer.


 
oldman ©   (2008-04-17 12:21) [3]


> после анализа выяснил, что в этотм момент
> round(100*complete/size);
> возвращает ему отрицательное значение.


Проверь в этот момент значения complete и size.
О результатах сообщи.


 
Плохиш ©   (2008-04-17 12:22) [4]


> Сергей М. ©   (17.04.08 12:20) [1]
>
> > выяснил, что в этотм момент
> > round(100*complete/size);
>
>
> Значит в этот момент complete < 0

= 21474837 * 100
;-)


 
Плохиш ©   (2008-04-17 12:22) [5]


> * 100

выкинуть :-)))


 
operator ©   (2008-04-17 12:28) [6]


> Заключи деление в скобки или используй Integer.


Работает, спасибо! :-)


 
ASoft   (2008-04-17 17:05) [7]


> operator ©   (17.04.08 12:14)

файл не забудь закрыть:)



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

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

Наверх




Память: 0.48 MB
Время: 0.024 c
15-1207236481
Дмитрий С
2008-04-03 19:28
2008.05.18
Хостинг


3-1197527318
abhtr
2007-12-13 09:28
2008.05.18
Как восстановить удаленные записи в таблице Firebird


2-1208335672
Armond
2008-04-16 12:47
2008.05.18
Запрос


3-1197011406
Свой
2007-12-07 10:10
2008.05.18
Получение данных полсле запроса от TQuery


15-1207301611
Zoldberger
2008-04-04 13:33
2008.05.18
IdHTTP и ADO