|
죄송합니다. 이번 페이지는 거의 제가 도배를 했군요.
AnsiString tmp[18]; // <== 이부분에 문제 있습니다. 매번 호출때마다 새로생성하기때문에 실제 출력하는 18번째 호출에는 다른건 다 Empty상태고 17번째만 값이 들어가 있는상태입니다.
static AnsiString tmp[18]; <== 이렇게 바꾸시거나 아니면 다음과 같이 요약이 가능합니다.
//---------------------------------------------------------------------------
void TForm1::Write(Byte *ch, long len)
{
float f = atof(ch);
// 죄송합니다. 전 Indent가 되는걸 싫어해서 아래와같은 형식의 조건문을 즐겨씁니다.
if(Count < 1 || 18 < Count) return;
StringGrid1 -> Cells[1][Count] = FormatFloat("0.0000", f);
if(Count == 18) Count = 0;
}
//---------------------------------------------------------------------------
Count라는 변수의 Name 특성상 거의 1부터 시작하겟지요? 그러나 배열에선 0부터 시작해야 합니다. 따라서 복잡한 이 함수에선 사실상 필요없는 tmp에 저장하는 부분을 빼버렸습니다. 물론 AnsiString 배열공부를 위한, 또는 모든작업을 종료했을시 한꺼번에 출력하기 위하여 임의로 만든거라면 이야기가 틀려집니다.
박보연 님이 쓰신 글 :
: 답변 감사합니다.
:
: 다시 실행시켜 봤는데요.. 스트링그리드에 아무 값도 나타나지 않는 것이 아니라
: Cells[1][18]에만 값이 나타납니다. 제가 잘못보고... 죄송~ ^^
:
: 아래 코드에 잘못된 부분이 없는지 다시 한번 봐주시겠어요?
: 부탁드립니다.
:
: 그럼.. 편안한 밤 보내세요~ ^__^
:
: //---------------------------------------------------------------------------
: void TForm1::Write(Byte *ch, long len)
: {
: int i;
: float f;
: AnsiString tmp[18];
:
: if(Count>=1 && Count<=18)
: {
: f = atof(ch);
: tmp[Count-1] = FormatFloat("0.0000", f);
:
: if(Count==18)
: {
: for(i=1; i<=18; i++)
: StringGrid1 -> Cells[1][i] = tmp[i-1];
:
: Count = 0;
: }
: }
: }
: //---------------------------------------------------------------------------
|