구조체를 다음과 같이 변경해보았습니다.
type
TDCOPACCUM_INFO = record
ChamberId : array[0..11] of char;
DcopPmName : array[0..35] of char;
PPID : array[0..99] of char;
CHStep : array[0..23] of char;
AccumPmValue : double;
bAegisReport : Boolean;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
Info1, Info2: TDCOPACCUM_INFO;
Stream: TMemoryStream;
begin
//
// 구조체 원본에 값을 넣습니다.
//
Info1.ChamberId := '00001';
Info1.DcopPmName := '볼랜드포럼';
Info1.PPID := '10000';
Info1.CHStep := '20000';
Info1.AccumPmValue := 10.10;
Info1.bAegisReport := True;
//
// 스트림에 구조체의 내용을 기록합니다.
//
Stream := TMemoryStream.Create;
//--방법 1
Stream.Write(Info1.ChamberId[0], 12);
Stream.Write(Info1.DcopPmName[0], 36);
Stream.Write(Info1.PPID[0], 100);
Stream.Write(Info1.CHStep[0], 24);
Stream.Write(Info1.AccumPmValue, SizeOf(Info1.AccumPmValue));
Stream.Write(Info1.bAegisReport, SizeOf(Info1.bAegisReport));
//--방법 2
Stream.Write(Info1, SizeOf(Info1));
//--두가지 방법 중 편한 것으로 ~^^
//
// 스트림에서 값을 읽은 후 구조체에 넣습니다.
//
Stream.Position := 0;
//--방법 1
Stream.Read(Info2.ChamberId[0], 12);
Stream.Read(Info2.DcopPmName[0], 36);
Stream.Read(Info2.PPID[0], 100);
Stream.Read(Info2.CHStep[0], 24);
Stream.Read(Info2.AccumPmValue, SizeOf(Info2.AccumPmValue));
Stream.Read(Info2.bAegisReport, SizeOf(Info2.bAegisReport));
//--방법 2
Stream.Read(Info2, SizeOf(Info2));
//--두가지 방법 중 편한 것으로 ~^^
//
// 넣은 값을 화면에 표시해봅니다
//
Edit1.Text := String(Info2.ChamberId);
Edit2.Text := String(Info2.DcopPmName);
Edit3.Text := String(Info2.PPID);
Edit4.Text := String(Info2.CHStep);
Edit5.Text := FloatToStr(Info2.AccumPmValue);
CheckBox1.Checked := Info2.bAegisReport;
FreeAndNil(Stream);
end;
DB의 필드에 넣으려면 TMemoryStream 대신 BLOB필드에 넣으면 되겠죠.
그럼..^^
이민석 님이 쓰신 글 :
:
: TDCOPACCUM_INFO = record
: ChamberId : string[12];
: DcopPmName : string[36];
: PPID : string[100];
: CHStep : string[24];
: AccumPmValue : double;
: bAegisReport : Boolean;
: end;
:
: 이런 형식의 메모리에 올려진 Record를 Database 필드에 그대로 저장했다가
: 그대로 올리는 방법이 있을까요????
:
: Stream으로 binary형태로 저장해서 읽어올 수 있을거 같아서 해봤는데
: 델파이 초보다 보니 아무리 해도 모르겠습니다..
:
: 지금 거의 일주일동안 시도를 하고 있는데.. 좀 도와주세요...
|