2014-04-23 2 views
0

은 내가 하나 개의 파일에 모든 데이터를 저장하고자하는 속성저장하는 방법 /로드이 데이터

HexRow : Integer; 
HexColumns : integer; 
TempMap :TBitmap; 

TGraphicControl있는지도가있다. 그리고 파일을 읽을 때이 모든 데이터를 얻을 수 있습니다. 그렇게 ...

Procedure Map.Load(name :String); 
begin 
    Something.LoadfromFile(string); 
    TempMap := Something.Bitmap; 
    HexRow := Something.hexRow; 
    HexColumn := Something.HexColumn; 
end; 

"무언가"무엇인지 모르겠다. 저장을 위해서도 이와 같은 모든 속성을 저장해야합니다.

+1

파일에 데이터를로드/저장할 수있는 클래스의 소스를 확인하십시오 (fi'TStringList') –

+0

비트 맵은 알지만 비트 맵에 값을 저장할 수 있습니다. 메타 데이터? 일부 이미지는 이제 이미지가 찍힌 위치를 저장하는 것을 알지만 그 일을하는 방법을 모른다. –

+0

그냥 좀보고 소스에서 배울 –

답변

3

정보를 쓰고 읽는 방법을 작성해야합니다. 바이너리 작성자 및 판독기 객체를 사용하여이 작업을 수행 할 수 있습니다.

procedure TMap.SaveToStream(Stream: TStream); 
var 
    Writer: TBinaryWriter; 
begin 
    Writer := TBinaryWriter.Create(Stream); 
    try 
    Writer.Write(HexRow); 
    Writer.Write(HexColumn); 
    Bitmap.SaveToStream(Stream); 
    finally 
    Writer.Free; 
    end; 
end; 

procedure TMap.LoadFromStream(Stream: TStream); 
var 
    Reader: TBinaryReader; 
begin 
    Reader := TBinaryReader.Create(Stream); 
    try 
    HexRow := Reader.ReadInteger; 
    HexColumn := Reader.ReadInteger; 
    Bitmap.LoadFromStream(Stream); 
    finally 
    Reader.Free; 
    end; 
end; 

아니면 귀여운되고 싶어한다면 당신은 먼저 비트 맵을 작성하고, 파일의 끝에 추가 정보를 채울 수 있습니다. 나는 대부분의 비트 맵 읽기 코드가 단지 당신이 마지막에 저장 한 여분의 숫자를 무시할 것이라고 생각한다. 물론 이러한 가치는 귀하가 소유하고있는 소프트웨어가 아닌 다른 소프트웨어를 사용하는 왕복 여행에서 살아남지 못할 것입니다.

파일을 저장하고로드하려면 TFileStream을 사용하십시오.

물론 이러한 파일 형식은 향후 개선 및 수정을위한 많은 공간을 제공하지 않습니다. 개인적으로 PNG 형식을 사용하는 경향이 있다고 생각합니다. 이것은 압축을 제공하고 사용자 정의 메타 데이터를 추가 할 수 있다고 생각합니다.

+0

마지막 질문에 대해 미안합니다. 피곤하고 혼란 스럽습니다. 둘째, TStream을 사용한 적이 없지만, 어딘가에서 내가 "somelocation.dat"라고 일컬어 질 장소를 말해야합니다. –

+0

예. 파일에'TFileStream'을 사용하십시오. –

+1

@GlenMorse'TStrings.LoadFromFile'의 소스가 완벽한 예제를 제공합니다 –

관련 문제