레코드 데이타형에 대해서 이해가 가지 않습니다
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 에 있는 데이타를 구조체에 넣으려면 어떻게 해야 하나여..
아~ 이젠 머리가 다 아플라고합니다..
매일 질문만 드리는군요
죄송합니다.
> 레코드 데이타형에 대해서 이해가 가지 않습니다
>
> 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;