procedure TForm1.Button1Click(Sender: TObject);
type
TMyRecord = packed record
head: array[0..3] of Char;
aa:byte;
bb:word;
cc:longword;
end;
var
mr:TMyRecord;
begin
mr.head:='abbc';
mr.aa:=7;
mr.bb:=255;
mr.cc:=1677215;
showmessage(mr.head+','+inttostr(mr.aa)+','+inttostr(mr.bb)+','+inttostr(mr.cc))
end;
type
TMyRecord = packed record
head: array[0..3] of Char;
aa:byte;
bb:word;
cc:longword;
end;
var
mr:TMyRecord;
begin
mr.head:='abbc';
mr.aa:=7;
mr.bb:=255;
mr.cc:=1677215;
showmessage(mr.head+','+inttostr(mr.aa)+','+inttostr(mr.bb)+','+inttostr(mr.cc))
end;
解决方案 »
- 函數裡面嵌套過程和函數,這樣的要怎麼使用,起什麼作用?(代碼在裡面。)
- Treeview的问题
- 关于条形码的问题
- 初学sql,求如何用SQL语句创建表到指定数据库中?
- 在游戏窗口模拟按键失败的问题
- 这道面试题,你能搞定吗? 我想了N天...哎
- 最后80分了:“通”的Unicode值是901A,如果我用vacomm1.writetext(#$90#$1A),则正常,用vacomm1.writetext('#$90#$1A')则是乱码
- 对dbf操作2000下无问题98下问题一堆 急急急
- 关于items.addobject,在线等待
- ACCESS,sos
- 怎样有规律地读取TXT文本?
- 求救,关键字:索引
我的aa bb cc中已经有数据了
我想正确的读出
我可以读出,但是总是不正确
这样写
type
TMyRecord = packed record
head: array[0..3] of Char;
aa:byte;
bb:word;
cc:longword;
end;
var
mr:TMyRecord;
F:TFileStream;
begin
F:=Tfilestream.create('E:\temp.ddd',fmcreate);
mr.head:='abbc';
mr.aa:=7;
mr.bb:=255;
mr.cc:=1677215;
F.write(mr,sizeof(TMyRecord));
showmessage(mr.head+','+inttostr(mr.aa)+','+inttostr(mr.bb)+','+inttostr(mr.cc))
F.free;
end;这样读
type
TMyRecord = packed record
head: array[0..3] of Char;
aa:byte;
bb:word;
cc:longword;
end;
var
mr:TMyRecord;
F:TFileStream;
begin
F:=Tfilestream.create('E:\temp.ddd',fmopenread);
F.read(mr,sizeof(TMyRecord));
showmessage(mr.head+','+inttostr(mr.aa)+','+inttostr(mr.bb)+','+inttostr(mr.cc))
F.free;
end;不行吗?
procedure Reverse(var mBuffer; mSize: Integer);
var
I: Integer;
B: Byte;
begin
for I := 0 to (mSize - 1) div 2 do begin
B := TByteArray(mBuffer)[I];
TByteArray(mBuffer)[I] := TByteArray(mBuffer)[mSize - I - 1];
TByteArray(mBuffer)[mSize - I - 1] := B;
end;
end; { Reverse }procedure TForm1.Button1Click(Sender: TObject);
type
TMyRecord = packed record
head: array[0..3] of Char;
aa:byte;
bb:word;
cc:longword;
end;
PMyRecord = ^TMyRecord;
var
vMyRecord: PMyRecord;
begin
//你的代码 Reverse(vMyRecord^.bb, SizeOf(Word));
Reverse(vMyRecord^.cc, SizeOf(LongWord));
end;
出现efcreateerror错误
您的办法是可以取出数的,可是我也用这种办法无法取出正确的数
不过先谢谢
我的代码到底应该在那呢
我的代码到底应该在那呢
var
I: Integer;
begin
Result := '';
for I := 0 to mSize - 1 do try
Result := Result + IntToHex(TByteArray(mBuffer)[I], 2);
except
Result := '';
Exit;
end;
end; { BufferToDisplay }Edit1.Text := BufferToDisplay(Data, 11); //调用还有你想要的结果00 00 00 01 | 00 00 00 00 (1)//数值型的存储
00 00 00 00 | 10 00 00 00 (1)//包的存储00 00 01 01 | 00 00 00 00 (5)//数值型的存储
00 00 00 00 | 10 10 00 00 (5)//包的存储可能是我分析的有错误
Pmytype=^Tmytype;
Tmytype=record
head:array[0..3] of byte;
aa:byte;
bb:word;
cc:dword;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
fstream:tfilestream;
a:tmytype;
begin
with a do
begin
pchar(head):='hoho';
aa:=100;
bb:=2000;
cc:=3000;
end;
fstream:=tfilestream.Create('f:\kk.txt',fmcreate);
fstream.write(a,sizeof(a));
fstream.free;
end;procedure TForm1.Button2Click(Sender: TObject);
var
fstream:tfilestream;
a:tmytype;
begin
fstream:=tfilestream.create('f:\kk.txt',fmopenread);
fstream.Read(a,sizeof(a));
with a do
begin
showmessage(pchar(head));
showmessage(inttostr(aa));
showmessage(inttostr(bb));
showmessage(inttostr(cc));
end;
fstream.free;
end;
出现efcreateerror错误
是不是你没有E:盘,或有这个文件而被别人用。
大哥
我的数据已经有些眉目了
就是靠您的办法
不过您的办法对4个字节的很有效
对2个字节的好像不管用
我回头再看看
如果您有时间,可不可以稍微解释一下procedure Reverse(var mBuffer; mSize: Integer);
看了您的指导确实有提高
分数回头等一会结吧
把看的机会留给更多人
谢谢了
厉害
我什么时候才能这样
出现efcreateerror错误
是不是你没有E:盘,或有这个文件而被别人用。
大哥,您的程序我看了
主要是我的数据是动态从内存槽里读出
可能您的程序我还没弄明白
回头我再看看
不过这里也谢了
大家都辛苦了
还有robinhunter(深空)
大家要多少分说吧
兄弟一定满足
主要是任务快到期了
^_^
//mBuffer: 缓冲区//是一个无类型实在参数
//mSize: 缓冲区的大小////Demo
procedure TForm1.Button1Click(Sender: TObject);
var
P: array[0..4] of Char;
begin
P := '12345';
Reverse(P, 4);
Caption := P;
end;
var
P: array[0..4] of Char;
begin
P := '12345';
Reverse(P, 4);
Caption := P;
end;
他帮你解决了,他的方法好。
我刚才没太明白你的意思,不好意思了。
他帮你解决了,他的方法好。
我刚才没太明白你的意思,不好意思了。