Delphi 流保存说明
Delphi stream saving explanation
有这个代码块我用了一段时间
定义:
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。如果标题描述得不够好,请随意编辑标题。
What does this Delphi Code block do?
Delphi 代码执行以下操作:
- 向文件写入一个 64 位整数。
- 将
Item
的二进制表示写入文件。我们不知道 Item
是什么。
- 以bmp格式将位图写入文件。
- 使用UTF-16LE编码将文本文件写入文件。
这是一个设计很糟糕的文件。您真的应该使用 JSON 或 XML 或 YAML 或实际上是此数据的任何结构化格式。
有这个代码块我用了一段时间
定义:
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。如果标题描述得不够好,请随意编辑标题。
What does this Delphi Code block do?
Delphi 代码执行以下操作:
- 向文件写入一个 64 位整数。
- 将
Item
的二进制表示写入文件。我们不知道Item
是什么。 - 以bmp格式将位图写入文件。
- 使用UTF-16LE编码将文本文件写入文件。
这是一个设计很糟糕的文件。您真的应该使用 JSON 或 XML 或 YAML 或实际上是此数据的任何结构化格式。