Откуда берутся не правильные числа?
Добавлено: 17 ноя 2006, 00:13
Есть программа при ее загрузки выбирается файл,потом он обрабатывается и выдается результат.
Так вот все файлы обрабатываются нормально.(не зависимо когда их открываешь)А если первую или вторую (после обработки 2 файлов все нормально) обработку делать с файлом с именем "10AC4_28.BIN"(имена всех других файлов имееют такую же структуру).То в полях результата получаются не понятные числа :shock: (на несколько порядков больше. Должно быть 20,7842 получаем 3235,86),хотя потом выбираем другой файл,обрабатываем его получаем нормальный результат,открываем еще какой нибудь файл,обрабатываем -верный результат.(Или открываем 2 раза "10AC4_28.BIN" ).Потом открываем "10AC4_28.BIN",все ок числа правильные.
Уже что только не перепробывал(менял имя файла и.т.д),причем ошибка только на этом файле(и именно если его открываешь первым или вторым).Файл по структуре не отличается от других.
Объясните почему?
Могу скинуть на мыло прогу.
применение тэга code даёт прекрасные результаты
Так вот все файлы обрабатываются нормально.(не зависимо когда их открываешь)А если первую или вторую (после обработки 2 файлов все нормально) обработку делать с файлом с именем "10AC4_28.BIN"(имена всех других файлов имееют такую же структуру).То в полях результата получаются не понятные числа :shock: (на несколько порядков больше. Должно быть 20,7842 получаем 3235,86),хотя потом выбираем другой файл,обрабатываем его получаем нормальный результат,открываем еще какой нибудь файл,обрабатываем -верный результат.(Или открываем 2 раза "10AC4_28.BIN" ).Потом открываем "10AC4_28.BIN",все ок числа правильные.
Уже что только не перепробывал(менял имя файла и.т.д),причем ошибка только на этом файле(и именно если его открываешь первым или вторым).Файл по структуре не отличается от других.
Объясните почему?
Могу скинуть на мыло прогу.
Код: Выделить всё
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons;
type
TForm1 = class(TForm)
Button1: TButton;
Edit2: TEdit;
Edit3: TEdit;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label6: TLabel;
Label7: TLabel;
Label8: TLabel;
Label9: TLabel;
Edit5: TEdit;
Edit6: TEdit;
Edit7: TEdit;
Label10: TLabel;
Label11: TLabel;
Label12: TLabel;
Edit8: TEdit;
Edit9: TEdit;
Edit10: TEdit;
Button3: TButton;
OpenDialog1: TOpenDialog;
Edit1: TEdit;
Label4: TLabel;
Label5: TLabel;
Label13: TLabel;
BitBtn1: TBitBtn;
procedure Button1Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure FormPaint(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
f1,f2:system.text;
put:string;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var c,a:char;
str,stl,k,i,m,j,kstr,nstr,kstl,kstlobr:integer;
M1:array of integer;
sum:integer;
Tsr,Tsr1,Disp,Sigma:single;
begin
if OpenDialog1.FileName<>'' then
begin
assignFile(f2,OpenDialog1.FileName);
str:=strtoint(edit2.text);
stl:=strtoint(edit3.text);
if opendialog1.filterindex = 2 then
begin
assignFile(f1,OpenDialog1.FileName);
assignFile(f2,'c:\1.txt');
reset(f1);
rewrite(f2);
For k:=1 to str do
begin
For m:=1 to stl do
begin
read(f1,c);
if Ord(c)=255 then write(f2,'1')else write(f2,'0');
end;
if k<str then writeln(f2)else closefile (f2);
end;
Closefile(F1);
end;
Reset(f2);
Read(F2,c);
if c='0' then a:='0' else a:='1';
Closefile(F2);Reset(F2);
nstr:=strtoint(edit5.text);
kstr:=strtoint(edit6.text);
kstl:=strtoint(edit7.text);
For k:=1 to nstr-1 do
begin
ReadLN(F2);
end;
kstr:=kstr-nstr;
i:=0; k:=0; j:=1;
While (Not seekeof(F2))and(kstr>0) do
begin
dec(kstr); kstlobr:=kstl;
While (Not seekeoln(F2)) do
begin
dec(kstlobr);
Read(F2,c);
If kstlobr=0 then
begin
While (Not seekeoln(F2)) do Read(F2,c);
end
else
begin
If c=a then
begin
If k>0 then
begin
setlength(m1,j+1);
M1[j]:=k+i;
inc(j); i:=1; k:=0;
end
else
begin
inc(i);
end;
end
else
begin
inc(k);
end;
end;
end;
end;
If c<>a then M1[j]:=i+k;
sum:=0;
For i:=1 to j do
begin
sum:=sum+M1[i]
end;
Tsr:=sum/(j);
Tsr1:=0;
for i:=1 to j do
Tsr1:=Tsr1+sqr(M1[i]-Tsr);
Disp:=Tsr1/(j-1);
Sigma:=sqrt(Disp);
Closefile(F2);
edit8.Text:=FloatToStr(tsr);
edit9.Text:=FloatToStr(disp);
edit10.Text:=FloatToStr(sigma);
end;
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
OpenDialog1.Execute;
edit1.text:=OpenDialog1.FileName;
end;
procedure TForm1.FormPaint(Sender: TObject);
begin
Canvas.MoveTo(0,32);
Canvas.LineTo(365,32);
Canvas.MoveTo(0,280);
Canvas.LineTo(365,280);
end;
procedure TForm1.BitBtn1Click(Sender: TObject);
var
canclose:boolean;
begin
CanClose:=messageDlg('Вы хотите выйти?',mtconfirmation,[mbyes,mbno],0)=mryes;
if canclose=true then Form1.Close;
end;