C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[2928] Re:파일 오픈에 대해서...
박지훈.임프 [cbuilder] 3998 읽음    2000-02-01 00:00
강병식 님이 쓰신 글 :
: 질문한 답변들을 신속하게 해주셔서 무척 고맙습니다. 여러분 복많이 받느세요..
: 처음 접해봐서 어려운점이 많네요... 요번 질문은요...
: 파일오픈입니다. 전에 C언어 공부할때 한번도 다뤄보지 않아말이죠. 
:
: 파일내용이 다음과 같이 저장되었습니다.
:
: 0126 0003
: 0127 0002
: 0127 0006
: 0126 0001
: 0128 0003
:   .   .
:   .   .
:
: 대충이런식으로 32000개의 데이타가 화일에 저장되었는데 그걸 읽어서 그래프를 출력하는데 앞에
: 있는 데이타만 필요합니다. 즉, 0126,0127,0127 등등만 필요하고 0003,0002등은 필요치 않은
: 데이타죠. 따라서 앞에있는 행만 버퍼에 넣던지 배열로 저장하든지(버퍼에 넣는다면 속도가
: 더 빠르겠죠..)해서 배열형태로 저장할수 있다면 어떻게 그래프를 그릴수 있을것 같습니다.
:
: 그러니까 결국은 이런식의 배열형태를 얻고 싶은거죠..
:
: int Data[32000]={126,127,127,126,128.....}
:
: C++ Builder 환경안에서 제공하는 함수를 이용해 작성해주시겠어요...
:
: 고맙습니다.. 자꾸 부탁만해서 죄송하군요 제가 도와드릴것이 있으면 멜 주세요...



임펠리테리입니다.

데이터파일이 텍스트 파일인가 보군요. 그런 경우라면... 가장 간편한 방법은, TStringList
객체를 생성해서 말씀하신 데이터파일을 읽어들인 후, 뒷부분을 날려버리는 방법이겠네요.
이렇게 하면 직접 오픈하고.. 어쩌구하는 복잡한 작업을 할 필요가 없이 간단히 LoadFromFile()
메소드로 처리할 수 있습니다.

TStringList *sl = new TStringList;
sl->LoadFromFile("데이터파일의 전체 경로명");
for(int i=0; i<sl->Count; i++)
    sl->Strings[i].Delete(5, 5); // 각 라인에서, 5번째 글자부터 5개의 문자를 날려버림.

이 코드를 실행하고 나면 sl이라는 스트링리스트에는 말씀하신대로 0126, 0127, 0127, 0126,
0128 이런식으로 첫번째 부분만 남아있게 되겠죠? 하지만 이것들은 모두 문자열이므로 다시
ToInt() 메소드를 사용해서 정수형으로 바꾸면 됩니다.
예를 들어, 첫번째 숫자를 읽어오려면 다음과 같이...
sl->Strings[0].ToInt()
이렇게 하면 되죠.

한가지 문제가 될 수도 있는 점. 만약 데이터 파일내에서 첫번째~네번째 사이에 숫자가 아닌
다른 문자가 들어있다면 ToInt() 에서 익셉션을 일으키게 됩니다. 만약 이런 경우가 있다면
try~except 등 예외처리 구문을 써서 예외상황을 걸러줘야 합니다.

그럼 참고하시길...

+ -

관련 글 리스트
2919 파일 오픈에 대해서... 강병식 3662 2000/01/31
2928     Re:파일 오픈에 대해서... 박지훈.임프 3998 2000/02/01
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.