Q&A

  • 레코드의 데이타형에 대하여..
레코드 데이타형에 대해서 이해가 가지 않습니다



type Test = packed record

Inst_Code : array [0..9] of char;

Tran_Code : array [0..9] of char;

Tran_Date : array [0..5] of char;

RW_Flag : char;

end;



var

Packet : Test;



이렇게 선언 해놓구여



DBGrid 에 있는 필드의 값을 가져다가 집어넣을려고 하는데여







Packet.Inst_Code := Trim(Fields[0].AsString); ==> 이렇게 했습니다



*** Packet.Inst_Code := '12345'; ==> 이건 잘 들어가더군여







컴파일하니까 배열하고 string 하고 호환이 안된다고 하는군여..



구조체에 문자열 선언할 때는 char array 로 잡는게 좋다는 말을 여기서



많이 봤습니다.



DBGrid 에 있는 데이타를 구조체에 넣으려면 어떻게 해야 하나여..



아~ 이젠 머리가 다 아플라고합니다..



매일 질문만 드리는군요



죄송합니다.







2  COMMENTS
  • Profile
    유효종 2001.12.28 21:08
    왕초짜 wrote:

    > 레코드 데이타형에 대해서 이해가 가지 않습니다

    >

    > type Test = packed record

    > Inst_Code : array [0..9] of char;

    > Tran_Code : array [0..9] of char;

    > Tran_Date : array [0..5] of char;

    > RW_Flag : char;

    > end;

    >

    > var

    > Packet : Test;

    >

    > 이렇게 선언 해놓구여

    >

    > DBGrid 에 있는 필드의 값을 가져다가 집어넣을려고 하는데여

    >

    >

    >

    > Packet.Inst_Code := Trim(Fields[0].AsString); ==> 이렇게 했습니다

    >

    > *** Packet.Inst_Code := '12345'; ==> 이건 잘 들어가더군여

    >

    >

    >

    > 컴파일하니까 배열하고 string 하고 호환이 안된다고 하는군여..

    >

    > 구조체에 문자열 선언할 때는 char array 로 잡는게 좋다는 말을 여기서

    >

    > 많이 봤습니다.

    >

    > DBGrid 에 있는 데이타를 구조체에 넣으려면 어떻게 해야 하나여..

    >

    > 아~ 이젠 머리가 다 아플라고합니다..

    >

    > 매일 질문만 드리는군요

    >

    > 죄송합니다.

    >

    >

    >



    레코드 형으로 선언 했다는 것은 데이타가 많다는 얘기고

    또한 메모리를 절약하기 위함이란 뜻이죠

    string 보다는 array char 가 메모리 절약에 도움이 되죠

    또 너저분한 변수 선언 보다는 깔끔도 하구요



    본론으로 들어가서 string 을 array 에 집어넣는 코드는 다음과 같습니다.



    procedure TForm1.Button1Click(Sender: TObject);

    var

    s : String;

    i : integer;

    begin

    fillchar(Packet.Inst_Code,length(Packet.Inst_Code),#0);

    s := Trim(Fields[0].AsString);

    for i := 1 to length(s) do begin

    Packet.Inst_Code[i-1] := s[i];

    end;

    showMessage(Packet.Inst_Code);

    end;



  • Profile
    왕초짜 2001.12.28 21:17
    감사합니다.



    역쉬 잘 되는군여..



    매일매일 도움만 받아서 죄송합니다. ^^



    여기계신 모든 분들 새해 복많이 받으시구여



    행복한 연말보내세요..



    다시한번 감사드립니다.





    유효종 wrote:

    > 왕초짜 wrote:

    > > 레코드 데이타형에 대해서 이해가 가지 않습니다

    > >

    > > type Test = packed record

    > > Inst_Code : array [0..9] of char;

    > > Tran_Code : array [0..9] of char;

    > > Tran_Date : array [0..5] of char;

    > > RW_Flag : char;

    > > end;

    > >

    > > var

    > > Packet : Test;

    > >

    > > 이렇게 선언 해놓구여

    > >

    > > DBGrid 에 있는 필드의 값을 가져다가 집어넣을려고 하는데여

    > >

    > >

    > >

    > > Packet.Inst_Code := Trim(Fields[0].AsString); ==> 이렇게 했습니다

    > >

    > > *** Packet.Inst_Code := '12345'; ==> 이건 잘 들어가더군여

    > >

    > >

    > >

    > > 컴파일하니까 배열하고 string 하고 호환이 안된다고 하는군여..

    > >

    > > 구조체에 문자열 선언할 때는 char array 로 잡는게 좋다는 말을 여기서

    > >

    > > 많이 봤습니다.

    > >

    > > DBGrid 에 있는 데이타를 구조체에 넣으려면 어떻게 해야 하나여..

    > >

    > > 아~ 이젠 머리가 다 아플라고합니다..

    > >

    > > 매일 질문만 드리는군요

    > >

    > > 죄송합니다.

    > >

    > >

    > >

    >

    > 레코드 형으로 선언 했다는 것은 데이타가 많다는 얘기고

    > 또한 메모리를 절약하기 위함이란 뜻이죠

    > string 보다는 array char 가 메모리 절약에 도움이 되죠

    > 또 너저분한 변수 선언 보다는 깔끔도 하구요

    >

    > 본론으로 들어가서 string 을 array 에 집어넣는 코드는 다음과 같습니다.

    >

    > procedure TForm1.Button1Click(Sender: TObject);

    > var

    > s : String;

    > i : integer;

    > begin

    > fillchar(Packet.Inst_Code,length(Packet.Inst_Code),#0);

    > s := Trim(Fields[0].AsString);

    > for i := 1 to length(s) do begin

    > Packet.Inst_Code[i-1] := s[i];

    > end;

    > showMessage(Packet.Inst_Code);

    > end;

    >