Delphi流保存说明

时间:2015-03-25 19:32:52

标签: delphi character-encoding file-encodings

我使用了一段时间的代码块。

说明:

type TItem = record
 Code          : string[255];
 Description   : string[255];
 Warning       : string[255];
 Fold          : integer;     //position where clamp to fold, 0 = flat, about 170 when needs to be folded
 PrintStrength : integer;     //put 0 if default to machine parameters, normally about 56
     PrintSpeed    : integer;     //put 0 if default to machine parameters, normally about 130
end;
var
  Item : TItem;
  LabelBitmap : TBitmap;

代码块:

procedure DosyaYazdir(filename : string; Bitmap : Tbitmap);
var FileStream : TFileStream;
    siz: int64;
begin

  try
    FileStream := TFileStream.Create(filename, fmCreate);
    siz := SizeOf(Item);
    FileStream.Write(siz,SizeOf(siz));
    FileStream.Write(Item,siz);
    //Bitmap.SaveToStream(FileStream);
    form1.image2.picture.bitmap.SaveToStream(filestream);
    form1.Memo1.Lines.SaveToStream(FileStream,TEncoding.Unicode); 
    FileStream.free;
  except
    Application.MessageBox('Wrong file name','Kayıt Hatası :',MB_ICONERROR);
  end;
  form1.memo1.lines.clear;
end;

我这样称呼:(我对LabelBitmap没有做任何事情)

dosya:='C:\Custom_Etiket.itm';
DosyaYazdir(dosya,LabelBitmap);

将给定字符串(form1.memo1.Lines)保存到具有给定名称的文件中。 这是我在互联网上发现的现成品,现在不幸的是我想将我的软件改为C#。

由于这是现成的,我真的不知道这段代码是做什么的。因为当我尝试使用C#时,我无法获得相同的输出(使用相同的编码或任何编码)

以下是它生成的文件的示例截图:(您可以看到NUL之间的文本,但它有某种编码) delphi generated file screenshot part

这个Delphi Code块有什么作用?或者我该怎么做才能获得相同的编码?

// PS。如果没有足够好地描述情况,请随意编辑标题。

1 个答案:

答案 0 :(得分:0)

  

这个Delphi代码块做了什么?

Delphi代码执行以下操作:

  • 将64位整数写入文件。
  • Item的二进制表示写入文件。我们不知道Item是什么。
  • 以bmp格式将位图写入文件。
  • 使用UTF-16LE编码将文本文件写入文件。

这是一个设计糟糕的文件。你真的应该使用JSON或XML或YAML,或者确实使用这种数据的任何结构化格式。