비쥬얼 베이직 랜덤파일 에서 궁금한게 있어요

찌질한 홍가시나무2015.07.28 01:57조회 수 1366댓글 13

    • 글자 크기

이번 여름 계절에 비쥬얼베이직 교양을 들으면서 랜덤파일을 사용하는 법을 배웠습니다..


음.. 저게 정확한 명칭인진 모르겠지만 일단 ...ㅎㅎ


이왕 프로그래밍도 배웠겠다 간단하게 학점계산기를 만들어 보면 어떨까 하는 생각이 들더라구요.


 각 과목의 성적을 입력하면 데이터가 랜덤파일로 저장이 되고, 또 평점 계산도 할 수 있게끔 해봤는데..


뭐 데이터 저장이나 평점 계산등은 무난히 해결했는데


랜덤 파일에서 데이터를 삭제하는 방법에 대해서는 정말 잘 모르겠네요..


사실 저 부분은 배우질 않았거든요.


그냥 간단하게 변수 = nothing이나 변수 = "" 로 해봤는데 이렇게 하면 데이터가 사라지긴 하지만 그 흔적(?)이 데이터파일에 남아서 평점계산하는 프로시저에서 오류가 나더라구요.


혹시 랜덤파일을 사용할 때 어떤 특정한 데이터를 지우는 명령어나 아니면 방법이 있나요 ??


네이버에서는 파일을 새로 만들어서 지우고자 하는 데이터만 제외하고 나머지를 복사한 뒤 다시 새로 생성한 파일의 이름을 원래 데이터파일 명으로 바꾸면 된다고 하던데.. 그것도 어떻게 해야할지 잘 모르겠네요 ..


글을 좀 알아보기 어려우실지도 모르겠습니다만 도움 부탁드립니다!

    • 글자 크기
돈벌고싶어요 (by 무례한 산오이풀) 서울 친구집에가서 이틀정도 자면서 놀꺼같은데 줄만한 선물! (by 센스있는 붉나무)

댓글 달기

  • 랜덤파일이 뭐징...
  • @끌려다니는 밤나무
    글쓴이글쓴이
    2015.7.28 02:20
    음 강의자료에 그냥 랜덤파일이라고만 나와서 그렇게 적었는데 ..
    랜덤파일 형식으로 레코드를 저장하는 ..?

    fileopen fileget fileput fileclose 뭐 이런 명령어들 사용하는 ..

    그런거요 ㅋㅋ ㅜㅜ
  • 파일 입출력 말씀하시는 것 같은데 네이버에서 말한게 맞아요. 파일 오픈 하셔서 디스크에 있는 데이터들 모두 메모리에 올린 후(읽은 후) 원하시는 레코드 삭제 한후 같은 파일 이름으로 쓰기 하시면 되요.
  • @끌려다니는 밤나무
    글쓴이글쓴이
    2015.7.28 02:45

    음 제가 인풋박스를 이용해서 일단 삭제를 원하는 데이터를 찾게하는데 까지는 잘 알겠는데.. 그 네이버에서 설명해 놓은 부분을 잘 모르겠네요..

    지금 짠거는 이렇거든요

            Dim search As String
            search = InputBox("삭제할 과목명을 입력해 주세요.", "찾기")
            For i = 1 To recCount                      <- recCount는 레코드의 끝 번호입니다.
                FileGet(filenumber, input, i)         <-filenumber는 freefile로 얻은 값이고 input은 선언한 구조체변수입니다.
                If search <> Strings.Trim(input.subject) Then          <-vbFixedString을 사용해서.. trim으로 공백을 지웠
                    FileClose(filenumber)
                    FileOpen(filenumber, "임시.txt", OpenMode.Random, , , recLength)
                    FilePut(filenumber, input, i)
                    FileClose(filenumber)
                    FileOpen(filenumber, "성적.txt", OpenMode.Random, , , recLength)  <-성적은 원래 쓰던 파일입니다.
                    Exit Sub
                End If
                If i = recCount Then
                    MsgBox("해당하는 과목명이 없습니다.")
                End If
            Next
            FileCopy("임시.txt", "성적.txt")
            FileOpen(filenumber, "성적.txt", OpenMode.Random, , , recLength)



    저 중간에 if문에서 틀린것 같긴 한데 뭘 어떻게 해야할지 잘 모르겠네요 ..

    이것만 하면 나머지는 다 완성인데.. ㅜ

  • 변수='' 나 변수=nothing을 하시면 메모리 상에서만 해당 변수의 값이 변경되지 디스크에 있는 데이터는 변경이 안되있어요. 변수를 바꾸신 후에 파일 쓰기를 다시 하셔야 메모리 상에서 변경한 데이터가 디스크에 써지죠.
  • @끌려다니는 밤나무
    글쓴이글쓴이
    2015.7.28 02:45
    넵 다시 써넣었는데 그게 사라지는게 아니라 그냥 공백으로 남아있게 되더라구요
    원래 한 두줄정도 데이터가 채워졌다면 그렇게 하고 난 뒤에는 두줄이 공백으로 생겨서 오류가 ,. ㅜ
  • 삭제하고자 하는 데이터(값을 비워 놓은 구조체)를 디스크에 쓰면 공백으로 남겠죠? 삭제하고자 하는 데이터는 디스크에 쓰시면 안되요. 간단히 하나만 말하면 만약에 25번째에 입력되어 있는 과목를 지우고 싶다고 하시면 1에서 24번째 과목까지는 그대로 파일에 쓰되 25번째 과목은 파일에 쓰지 말고 26번째부터 n까지 있는 과목을 파일에 쓰시면 됩니다.
  • @끌려다니는 밤나무
    글쓴이글쓴이
    2015.7.28 03:16
    늦은 시간에 정말 감사합니다!
    덕분에 대충 어떻게 해야 하는지 감이 잡히네요 ㅎㅎ
    지금은 머리가 안 돌아가서 내일 말씀하신 대로 해봐야겠어요

    정말 감사드립니다! 복 받으세요 ㅎㅎㅎ
  • 비베를 배운지 너무 오래 되서 문법이 기억 안나는데 next가 for문 돌리는 건가요? 매칭되는 과목을 찾으셨으면 아무것도 하지말고 그냥 i값만 증가 시킬 수 있도록 next만 넣어주시면 되구요. 임시.txt와 성적.txt의 파일 포인터를 동일하게 유지하시면 25번째 과목이 또 빈 상태로 저장 될테니 두 파일의 파일 포인터를 다른 변수로 하시는게 좋을 것 같네요.
  • @끌려다니는 밤나무
    글쓴이글쓴이
    2015.7.28 03:17
    네 for-next 로 if끝에 end if 붙듯이 붙습니다!
    다시한번 조언 감사합니다 !
  • 설명이 부족한것 같아 코딩 하신걸로 다시 설명해 드릴게요. 지금 매칭이 안되면 임시.txt에 과목을 쓰시잖아요? 만약 매칭되는 과목이 25번째에 있다면 24번째까지는 성적에 있는 데이터를 임시에 쓸꺼에요. 이제 25번째를 확인했을때 이 과목이 삭제할 과목임을 알아차리고 for문 내 if문을 싱행 안하게 되죠. 이제 성적 파일에 26번째를 확인하는데 매칭이 안되니 임시 파일에 쓰겠죠? 이때 문제가 발생해요. 임시 파일에는 25번째 과목이 기록안되있으니 성적 파일에 26번째 과목은 임시 파일에 25번째 과목으로 가야 하는데 현재 짜신 코드는 성적 파일에 26번째 과목이 임시 파일에 26번째 과목으로 간다는 거죠. 따라서 임시 파일에 25번째 과목 항목은 텅 비어있는 거죠. 이를 방지하려면 성적 파일과 임시 파일의 파일 포인터를 따로 쓰셔야 해요. 임시 파일의 파일 포인터를 따로 j라고 주시고 임시 파일이 쓸때마다 j를 증가시켜 주세요. 그럼 i가 25일때 아무것도 안하고 i가 증가되서 26이 되는 반면에 j는 그대로 25이겠죠.
  • @끌려다니는 밤나무
    글쓴이글쓴이
    2015.7.28 03:37
    와 자세한 설명 정말 감사드립니다!!!
    덕분에 자려고 누웠다가 일어나서 다시 살펴봤는데..!!
    아직 깔끔하게 성공했다고는 할 수 없지만 어쨌든 데이터 지우는데 성공했어요!!!!
    정말 이 늦은 새벽에 초보적인 질문 다ㅂ변 엄청 상세히 해 주셔서 감사합니다..!! ㅎㅎㅎㅎ
    덕분에 새로 하나 배워가네용 ... !!
번호 제목 글쓴이 날짜
공지 욕설/반말시 글쓰기 권한 영구 정지10 저렴한 개불알꽃 2019.01.26
공지 식물원 이용규칙 (2018/09/30 최종 업데이트) - 학생회 관련 게시글, 댓글 가능17 흔한 달뿌리풀 2013.03.04
53515 계절성적 확정4 찌질한 노린재나무 2015.07.28
53514 전출인원궁금해요2 돈많은 쉬땅나무 2015.07.28
53513 .10 겸손한 하늘말나리 2015.07.28
53512 순환버스 첫차시간(경암출발)4 안일한 차이브 2015.07.28
53511 개인사정으로 휴학했는데4 깜찍한 노루오줌 2015.07.28
53510 사람답게 살 수있는 나이3 친근한 라일락 2015.07.28
53509 돈벌고싶어요2 무례한 산오이풀 2015.07.28
비쥬얼 베이직 랜덤파일 에서 궁금한게 있어요13 찌질한 홍가시나무 2015.07.28
53507 서울 친구집에가서 이틀정도 자면서 놀꺼같은데 줄만한 선물!2 센스있는 붉나무 2015.07.28
53506 광안리와 해운대 둘중에...4 유치한 봉의꼬리 2015.07.28
53505 제발 좀 도와주세요ㅠㅠ멘붕직전6 점잖은 꼬리조팝나무 2015.07.28
53504 혹시 공대 대학원 들어갈 때 통장 요구하는 실험실 있나요?8 따듯한 구기자나무 2015.07.28
53503 여기에 큰 고추가 있다면서요? ㅎ17 일등 강활 2015.07.28
53502 방에서 쌓아두고 먹을 식량좀 추천해주세요.23 멋진 좀씀바귀 2015.07.28
53501 꼬치고기3 착실한 달뿌리풀 2015.07.27
53500 .9 배고픈 매화나무 2015.07.27
53499 예비군 신청 시작시간이 몇시인가요??1 고상한 박하 2015.07.27
53498 혹시 외무고시 준비하시는분 계신가요?7 병걸린 미국나팔꽃 2015.07.27
53497 증명서 발급 페이지 접속1 정겨운 모시풀 2015.07.27
53496 에어컨이 있지만 틀지 못하는 에어컨 ㅋㅋㅋ13 교활한 종지나물 2015.07.27
첨부 (0)