안녕하세요
고수님들의 지식을 구합니다
아주 급해서요
제발 도와주세요 제발...
델파이에서 OpenGL을 사용하여 연속적인 3차원 그래픽을 만들었습니다.
값들은 single type이고 ListDataArray[ii][i]라는 배열로 입력받습니다
ii는 0에서 49이고 i는 0에서 2047입니다
이 배열을 컴퓨터와 실험용 기계를 연결시켜 그 기계에서 연속으로 흘러들어오는
값들을 저장하는 것이거든요
근데 그래픽을 화면에 보여줄수는 있는데 종료 후에 다시 같은 그래픽을 보려면
이 배열값들을 ASCII값으로 바꾸어 파일로 저장해야 합니다
그렇게 해서 실험했던 그래픽들을 다시 보여줘야할때 저장된 파일의 이값들을 불러와서
다시 그래픽으로 화면에 보여줘야돼요
어떻게 하면 될까요
여러분의 도움이 정말 필요합니다.
너무 급한 일이라서 좋은 생각이 떠오르지 않네요
부탁드립니다 !!!!!
> 안녕하세요
> 고수님들의 지식을 구합니다
> 아주 급해서요
> 제발 도와주세요 제발...
>
> 델파이에서 OpenGL을 사용하여 연속적인 3차원 그래픽을 만들었습니다.
> 값들은 single type이고 ListDataArray[ii][i]라는 배열로 입력받습니다
> ii는 0에서 49이고 i는 0에서 2047입니다
> 이 배열을 컴퓨터와 실험용 기계를 연결시켜 그 기계에서 연속으로 흘러들어오는
> 값들을 저장하는 것이거든요
>
> 근데 그래픽을 화면에 보여줄수는 있는데 종료 후에 다시 같은 그래픽을 보려면
> 이 배열값들을 ASCII값으로 바꾸어 파일로 저장해야 합니다
> 그렇게 해서 실험했던 그래픽들을 다시 보여줘야할때 저장된 파일의 이값들을 불러와서
> 다시 그래픽으로 화면에 보여줘야돼요
>
> 어떻게 하면 될까요
> 여러분의 도움이 정말 필요합니다.
> 너무 급한 일이라서 좋은 생각이 떠오르지 않네요
> 부탁드립니다 !!!!!
먼저 결론부터 말씀드리면 무슨 데이타 화일을 저장 하셔야 하는것 같은데..맞나?
왜 아세끼를 코드를 쓰셔야 하는지 궁굼 합니다...
한큐에 해결하는 방법을 말씀드리면
type
Header = Record
SaveName : array [0..19] of Char; //작업내용
SaveMan : array [0..19] of Char; //뭐...작업자 이름이라구 해두죠..
end;
//전역 변수
var
FileHeader : Header;
ListDataArray : array [0..49, 0..2047] of byte;
procedure TForm1.Button2Click(Sender: TObject);
var
NumWritten : Integer;
SaveFileStream : File;
begin
St := copy(Edit3.Text + ' ', 1, 20);
StrCopy(FileHeader.SaveName, Pchar(St));
St := copy(Edit4.Text + ' ', 1, 20);
StrCopy(FileHeader.SaveMan, Pchar(St));
//강제로 20자리를 만듬
try
AssignFile(SaveFileStream, 'c:aa.dat');
if FileExists('c:aa.dat') then Reset(SaveFileStream, 1)
else Rewrite(SaveFileStream, 1);
BlockWrite(SaveFileStream, FileHeader, Sizeof(FileHader), NumWritten);
BlockWrite(SaveFileStream, ListDataArray, Sizeof(ListDataArray),
NumWritten);
//기역이 가물 한데 이게 맞을 겁니다..
finally
CloseFile(SaveFileStream);
end;
end;
이렇게 하시면 배열의 내용을 저장 하실수 있습니다..
읽을땐
procedure TForm1.Button3Click(Sender: TObject);
var
NumReadln : Integer;
ReadFileStream : File;
begin
try
AssignFile(ReadFileStream, 'c:aa.dat');
Reset(ReadFileStream, 1);
BlockRead(ReadFileStream, FileHeader, Sizeof(FileHeader));
BlockRead(ReadFileStream, ListDataArray, Sizeof(ReadFileStream));
finally
CloseFile(SaveFileStream);
end;
end;
이방법은 이진으로 해서 읽고 쓰는 방법입니다..
만듯이 아세끼 코드로 하셔아 한다면
저장 하는 부분을 변형 해야죠..
for i := 0 to high(ListDataArray[0]) do
for j := 0 to high(ListDataArray[0][0]) do
BlockWrite(ReadFileStream, char(ASCListDataArray[i][j]), 1);
이상 입니다...
물론 읽어 오실땐 반대루 풀어야 하구욤..
그럼 즐코~~