Q&A

  • 스트링 그리드에서 최대 / 최소값 찾기[소스포함]
function Tsample_data.roundedReal(inParam: real; roundPoint: Integer): Real;

begin

result := intpower(0.1, roundPoint) *

Round(InParam * intpower(10, roundPoint));

end;



procedure Tsample_data.btn_bClick(Sender: TObject);

var

f1 : Textfile;

s1, s2, a, b, c, d : integer;

//s1, s2 : 텍스트파일데이터

//i, j : 셀의 위치 k : line수

//a, b, c, d : s1, s2의 min, max

sums1, sums2, i, j, k : integer;

avgs1, avgs2, temp1, temp2 : single; //s1, s2의 average

StrList: TStringList;

LineCount: Integer;

begin

a:=0; b:=0; c:=0; d:=0;

sums1:=0; sums2:=0;



list_b.Cells[1,0] := 'No 1';

list_b.Cells[2,0] := 'No 2';



if OpenDialog1.Execute then

begin

Assignfile(f1, opendialog1.filename);

Reset(f1); //화일을 처음으로 돌림



StrList := TStringList.Create;

StrList.LoadFromFile(opendialog1.filename); // 라인수를 알고 싶은 파일 이름

LineCount := StrList.Count; // LineCount = 텍스트파일의 라인수

list_b.RowCount:=linecount+4;

StrList.Free;



for k:=1 to linecount do

begin

list_b.Cells[0,k]:=inttostr(k-1);

end;



list_b.Cells[0, linecount+1]:='Min';

list_b.Cells[0, linecount+2]:='Max';

list_b.Cells[0, linecount+3]:='Avg';



while not EOF(f1) do begin

readln(f1, s1, s2);



//최대, 최소값 찾기

a:=low(s1); b:=low(s2); c:=high(s1); d:=high(s2);



for i:=1 to linecount do

begin

j:=1;

list_b.Cells[j,i]:=inttostr(s1);

list_b.Cells[j+1, i]:=inttostr(s2);

sums1 := sums1 + s1;

sums2 := sums2 + s2;



list_b.Cells[j, i]:=inttostr(s1);

list_b.Cells[j+1, i]:=inttostr(s2);



chart_b.series[0].Add(strtoint(list_b.Cells[j,i]),'',

chart_b.Series[0].seriescolor);

chart_b.series[1].add(strtoint(list_b.Cells[j+1, i]),'',

chart_b.Series[1].seriescolor);

readln(f1, s1, s2);

end;

end;

temp1:=sums1/linecount;

temp2:=sums2/linecount;



avgs1:=roundedreal(temp1,2);

avgs2:=roundedreal(temp2,2);



list_b.Cells[1, linecount+1]:=inttostr(a);

list_b.Cells[2, linecount+1]:=inttostr(b);

list_b.Cells[1, linecount+2]:=inttostr(c);

list_b.Cells[2, linecount+2]:=inttostr(d);

list_b.Cells[1, linecount+3]:=floattostr(avgs1);

list_b.Cells[2, linecount+3]:=floattostr(avgs2);

Closefile(f1);

end;

end;



이렇게 햇는데요..자꾸 쓰레기값들이 들어갑니다..

텍스트파일을 읽어서 스트링그리드에 잘 뿌려지기는 하는데..최대, 최소, 평균값에 대한것들이 쓰레기값들이 들어가서요..

어디가 잘못된건지..

변수형에 문제가 있는것같긴한데..자꾸 우물안개구리같은 생각만 하게되네요..

객관적인 의견 부탁드립니다..

0  COMMENTS