规定一个文件前10字节保存一个特定字符串,接下来4个字节保存文件大小,加入时12345这么大吧,我这么写,
DS := TMemoryStream.Create;
DS.Position := 0;
DS.Write('JSGCSWB', length('JSGCSWB'));
DS.Position := 10;
DS.Write('12345', length('12345'));
。
不对吧,应该怎么写,以后再取前10个字节的内容时,是'JSGCSWB?'怎么避免乱码,取出来'JSGCSWB'
DS := TMemoryStream.Create;
DS.Position := 0;
DS.Write('JSGCSWB', length('JSGCSWB'));
DS.Position := 10;
DS.Write('12345', length('12345'));
。
不对吧,应该怎么写,以后再取前10个字节的内容时,是'JSGCSWB?'怎么避免乱码,取出来'JSGCSWB'
解决方案 »
- delphi调用 vc dll 出错!在线等待,解决立马揭帖
- 简单问题:Delphi中,自己定义interface时,怎样产生与GUID
- 紧急求助,高手请进来帮忙看看。很着急。
- 为什么ACCESS数据库的表,字段名设为name,date总是出错!
- ReportBuilder实现把从表中的几条数据从上至下打印出来,如果一面不够的话自动换至第二页(问题)
- delphi如何操作WORD中的表格和图片
- 怎样找出所有的没有用到的变量
- 请问delphi里paradox表的备份和恢复问题
- 这个readln读取txt一行时,为什么总是说incompatible type?
- 一个ActiveForm的问题
- 怎么计算出两个日期段之间的所有日期,分不多,不好意思
- 为什么你越在乎她,她越不在乎你?【散分】
DS:TMemoryStream;
size: Integer;
begin
DS := TMemoryStream.Create;
DS.Position := 0;
DS.Write('JSGCSWB', length('JSGCSWB'));
size:=12345;
DS.Write(size, sizeof(size));
ds.SaveToFile('c:\12345.dat');
end;
var
DS:TMemoryStream;
size: Integer;
str : array [0..9] of Char;
begin
DS := TMemoryStream.Create;
DS.Position := 0;
//最好初始化一下,清零
FillChar(str,Length(str),0);
str := 'JSGCSWB';
DS.Write(str, length(str));
size:=12345;
DS.Write(size, sizeof(size));
DS.SaveToFile('c:\12345.dat');
DS.Free;
end;
DS.Write(size, sizeof(size));
这样保存12345占了几个字节?不是5个吗?
这里的str声明成数组和声明成字符窜一样吗,如果按你这样做,取出来的前10个字节的内容还有乱码吗?
DS:TMemoryStream;
size: Integer;
str :string;
s: array[0..9]of char;
begin
DS := TMemoryStream.Create;
DS.Position := 0;
str := 'JSGCSWB';
DS.WriteBuffer(str[1], 10); //写入
size:=12345;
DS.Write(size, sizeof(size));
DS.SaveToFile('c:\12345.dat'); ds.Position:=0;
ds.ReadBuffer(s,10); //读取
showmessage(string(s));
DS.Free;
end;