Q&A

  • 초보의 숫자저장
초보의 부끄러운 질문이예요..

예를들어 word는 16bit니까 2byte를 차지하잖아여..

65535라는 값을 파일에 저장할때 2byte를 차지하게 하려면 어떤 표현을 쓰나요.

다시 읽어 값을 복원할때는..?



2  COMMENTS
  • Profile
    노을 2000.08.05 19:26
    안녕하세요 노 을 입니다.

    (--;.. 웃 실수를 해서.. 설명했던거 다 날려 버렸네요..

    다시씁니다..)



    간단히 설명할게요 ^^.. (이해 안되시면 다시 질문 주시길..)



    TFileStream을 이용하여 해결 할 수 있습니다..



    TFileStream은 하나의 Class 입니다..



    그러니까.. 생성의 절차가 필요하겠죠?..



    Var



    FS :TFileStream;

    NUM :Word; // WORD = 2Byte = 16Bit 부호없는 숫자형 변수



    Begin



    FS := TFileStream.Create('NUMBER.DAT',fmCreate);



    NUM := 65535;



    FS.Write(NUM,2);

    // 혹은 FS.Write(NUM,SizeOF(NUM));

    // 혹은 FS.Write(NUM,SizeOF(WORD));



    FS.Free;



    End;



    음.. 위 예제에서 처럼..



    TFileStream에는 Write라는 Method가 있습니다.



    Write Method는...



    Write(Const Buffer; Count:LongInt)



    요렇게 선언되어 있죠...



    Write 변수는 자료형을 따지지 않습니다.



    어떤 자료형이든 이것을 통해서 기록이 가능하죠..



    그럴때 .. Count에 몇 Byte로 기록해 줄 것인가를 써주죠..



    가장 확실한 방법은...



    SizeOF(기록할변수)



    으로 해주는 거겠죠?.



    그런데 이럴 경우는... 그 변수의 크기를 제대로 알아야만



    읽어들일 수 있겠죠?..



    음.. 단일 선언시에는...



    SizeOF(기록할 변수의 자료형)



    으로 대부분 같은 값을 갖지만..

    (String같은 경우는 예외입니다. --;. 이놈은 길이가 아무리 길어도 항상 4라는

    값을 같습니다..



    Var

    S:String;

    Begin

    // 요기서의 SizeOF(S) 는 4

    S := '가가가가가';

    // 요기서의 SizeOF(S) 도 4

    End;



    Array [1..10] String => 40 이겠죠? --;.. 아무리 들어간

    내용이 길어도 40 --;. 이놈 같은 경우는 Length(S)+1 을 기록할 크기로 해 주

    어야 합니다. WideString 같은 경우는 더 골치 아프죠 --;.. 아무튼 일단은 여

    기서 넘어가죠.. --;.. 음.. 넘 Over 같군요.. 본론으로 ^^a (긁적긁적) )



    위와 같이 NUM :Word; 로 단일 선언된 경우는..



    SizeOF(NUM) 과 SizeOF(Word) 는 2로 같은 값을 갖게 되죠..



    직접 상수로 2 로 해줘도 되구요 ^^..



    그래서 저 3개의 예를 모두 들었습니다.



    음... 마칠때는 FS.Free 요거 빼먹지 마시구요..



    File은 닫아 주어야 하니 ^^..



    그럼 도움 되셨기를 바랍니다...



    꾸벅..





    꼭대기에 오르지 못한이에겐 꿈이 있기에 행복하다

    늘 푸르고 큰 꿈을 가지고 살아가는 사나이 노 을











    한상훈 wrote:

    > 초보의 부끄러운 질문이예요..

    > 예를들어 word는 16bit니까 2byte를 차지하잖아여..

    > 65535라는 값을 파일에 저장할때 2byte를 차지하게 하려면 어떤 표현을 쓰나요.

    > 다시 읽어 값을 복원할때는..?

    >

  • Profile
    한상훈 2000.08.09 01:14
    답변 감사합니다..

    제가 잘몰라서 더 여쭙니다.

    정확하게 말하면 24849라는 2byte값을 6161h(aa)로 변환할수있는 함수가 있는가하는 것이었습니다. 다른 텍스트와 혼용하기 위해서 였습니다.

    예를들어 다음은 파일에 저장된 텍스트 내용입니다.



    index=aa, count=~#



    index는 24849값이고, count는 32291입니다.



    index:=TStringList.Create;

    index.Add('index='+F(24849)+', count='+F(32291));

    index.SaveToFile('t.txt');



    알려주신 함수로 위와갈이 저장할수 있나여?