【问题标题】:Delphi stream saving explanationDelphi流保存解释
【发布时间】:2015-03-25 19:32:51
【问题描述】:

有这个代码块我用了一段时间。

定义:

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 代码块有什么作用?或者我应该怎么做才能获得相同的编码?

//PS。如果标题描述的不够清楚,请随意编辑。

【问题讨论】:

  • 您是否在Encoding or Delphin TEncoding.Unicode 上进行了 Google 搜索,这将说明它是 encoding to UTF8 下方的以下编码
  • @Method 不,它是 UTF-16
  • @MethodMan 是的,我当然做了很多谷歌搜索。我将文本保存为 Unicode 编码和 C# 中的 UTF8。我没有得到相同的结果。
  • 你看过这个docs.embarcadero.com/products/rad_studio/delphiAndcpp2009/…吗,它给出了 TEncoding 类的编码类型的例子。也许你可以弄乱这个链接上列出的不同类型。
  • 我会按照@DavidHeffernan 的建议尝试 UTF-16LE。

标签: delphi character-encoding file-encodings


【解决方案1】:

这个 Delphi 代码块有什么作用?

Delphi 代码执行以下操作:

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

这是一个设计得很糟糕的文件。您确实应该使用 JSON 或 XML 或 YAML 或任何结构化格式的数据。

【讨论】:

  • 我添加了一些定义和用法来提问。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-17
  • 1970-01-01
  • 1970-01-01
  • 2019-05-22
  • 2012-03-24
  • 1970-01-01
相关资源
最近更新 更多