|
크레브 님이 쓰신 글 :
: 소스에서 심각한 문제만 지적하겠습니다.
:
:
: : short *d;
: : float *f;
: <-- 여기서 포인터로 선언하셨기 때문에 현재는 쓰레기 주소를 가리키고 있습니다.
:
: :
: : if(this->OpenDialog1->Execute())
: : {
: : stream = fopen(this->OpenDialog1->FileName.c_str(), "r");
: : fList->LoadFromFile(this->OpenDialog1->FileName);
: : }
: :
: : AnsiString strC;
: : /* READ some data to the file */
: : while( 0 < fscanf(stream, "%f %d\n", &f, &d) )
: <---- 포인터로 선언된 변수를 또 포인터 주소를 붙여서 포인터의 포인터를 scanf로 넘기고 있습니다.
: 프로그램이 안죽었다면 다행입니다. ^^;;
:
: : {
: : strC.printf("%f",f); //여기 부분이 0.000000 값만 출력이 되서 이유를 모르겠습니다.
:
: <--- 당연히 제대로 나올리 없습니다.
:
: : fList->Add(strC);
:
: 수정한다면....
: 대충 이런식이 될겁니다.
: int d ;
: float f;
:
: fscanf("%f %d", &d, &f)
:
: .... printf("%f", f)
: 테스트해본것이 아니기 때문에 문제는 발생할 수 있습니다.
: 물론 제가 코딩한다면 이런 구조로 만들지는 않을겁니다.
: 데이터 크기가 고정된 파일이라면 그냥 잘라서 변환해도 될 것 같고요..
:
: 개발 일을 계속 하실거고 열심히 하실 생각이 있다면..
: C언어를 처음부터 제대로 잘 공부하신다음 코딩 하셨으면 합니다.
: 지금 포인터를 사용하신 것을 보니 기초기 부족해 보여서
: 충고 한마디 드리는것이니 기분 나빠 하지는 마시길 ^^
:
:
:
: 구윤태 님이 쓰신 글 :
: : [test.txt]
: :
: : 0.000000 -25
: : 0.025000 -26
: : 0.050000 -27
: : 0.075000 -23
: : 0.100000 -26
: : 0.125000 -25
: : 0.150000 -24
: : 0.175000 -25
: : 0.200000 -26
: : 0.225000 -23
: : 0.250000 -24
: : 0.275000 -24
: : 0.300000 -24
: :
: : ...
: : 위의 파일에서 0.xxxxx -yy
: : 두개의 값이 스페이스 한칸 떨어져 있는데요
: : 이것을 분리해서 아래처럼 차트에 넣으려 합니다.
: : 아래처럼 했는데 잘안되서 혹시 쉬운 방법있으면 알려주세요
: :
: : FILE *stream;
: : TStringList *fList = new TStringList();
: : TStringList *fList2 = new TStringList();
: :
: : short *d;
: : float *f;
: :
: : if(this->OpenDialog1->Execute())
: : {
: : stream = fopen(this->OpenDialog1->FileName.c_str(), "r");
: : fList->LoadFromFile(this->OpenDialog1->FileName);
: : }
: :
: : AnsiString strC;
: : /* READ some data to the file */
: : while( 0 < fscanf(stream, "%f %d\n", &f, &d) )
: : {
: : strC.printf("%f",f); //여기 부분이 0.000000 값만 출력이 되서 이유를 모르겠습니다.
: : fList->Add(strC);
: :
: : strC.printf("%d",d);
: : fList2->Add(strC);
: :
: : }
: : fclose(stream);
: :
: :
: :
: : for( int i=0; i<fList->Count; i++ )
: : {
: : strX = fList->Strings[i];
: : strY = fList2->Strings[i];
: :
: : Chart1->Series[0]->AddXY( StrToFloat(strX),StrToFloat(strY),"",clTeeColor);
: : }
: :
: :
: : delete fList;
: : delete fList2;
|