Текущий архив: 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.46 MB
Время: 0.044 c