pchar和shortstring在dll中内存分配问题 Getmen (100分)

  • 主题发起人 风零落
  • 开始时间

风零落

Unregistered / Unconfirmed
GUEST, unregistred user!
请问怎么分配啊,给一段代码如下
procedure Transmit;
var
i,count:integer;
commflg:boolean;
sbuf:array of byte;
begin
commflg:=true;
count:=Length(Send);
setLength(sbuf,count);
for i:=1 to count do
begin
sbuf:=byte(Send);
if not Form1.Comm1.WriteCommData(@sbuf,1) then
begin
commflg:=false;
break;
end;
sleep(2);
end;
if not commflg then
MessageDlg('发送失败!',mterror,[mbyes],0);
end;

procedure ReadData;
var
buffer:pointer;
BufferLength:Word;
begin
SetLength(Receive,BufferLength);
Move(Buffer^,Receive,BufferLength);
end;



Function OpenCom(Comname:shortstring):BOOL;//打开串口
begin
Comm1.StartComm;
Comm1.CommName:=Comname;
end;

Function CloseCom:BOOL;//关闭串口
begin
Comm1.StopComm;
end;

Function SetNetID(BoardID:integer;Address:integer):BOOL;//设置门禁机网络逻辑地址号
begin
bagsize:=chr($04);
s0:=start;
s1:=start;
s2:=chr($4f);
s3:=chr(Address);
s4:=bagsize;
s5:=chr(BoardID);
Send:=s0+s1+s2+s3+s4+s5;
Transmit;

ReadData;
Raddress:=r3;
r0:=copy(Receive,1,1);
r1:=copy(Receive,2,1);
r2:=copy(Receive,3,1);
r3:=copy(Receive,4,1);
bagnumber:=copy(Receive,5,2);
if r0+r1=start+start then
if r2=chr($5f) then
Result:=true
else if r2=chr($7f) then
Result:=false
end;
用pchar和shortstring用了以后,getmem写在那,怎么写????
 
[8D][:(!][^][?][^]
还有,在大富翁中怎么看别人得问题啊。。要点什么,我看你们得答案都是在邮件中看得
 
什么意思嘛,getmem嘛?
getmem(s,256)啊
 
能否再说清楚点,简要点
 
现在好了吧,帮我改改,写在那,,改了的地方标记一下,谢谢了
还有就是在大富翁中怎么给分给人。自己又怎么赚分呢
 
回答我啊。各位仁兄
 
在最后回答你的人那下面,如:
问题讨论没有结束 ...
风零落,对此问题,您可以:

接受答案,并为 rockjie 加上 100 点积分 //选中这个,就可以对单个人给全分
接受答案,并分配积分 //选这个可以对所有回答你的人分配分,总和等于你为此问题拿出多少分

然后这边是所有回答你问题的人的名字 //在这里分配分
请注意分数总和应为 100 分

然后你想赚分就是给别人回答问题,要是别人觉得你回答了正是他所要的,就会给你分了[:)]
 
for i:=1 to count do
begin
sbuf:=byte(Send);//这一句执行的的时候没有报错吗?
sbuf:array of byte;//说明sbuf是动态数组,下标应该从0开始,长度应该是count-1,
上面的应该改为:
for i:=1 to count do
begin
sbuf[i-1]:=byte(Send);//

 
说错,长度应该是count,最后一个下标是count-1
 
不知道你什么意思,看看下面的示例:

var

F: file;
Size: Integer;
Buffer: PChar;
begin
AssignFile(F, 'test.txt');
Reset(F, 1);
try
Size := FileSize(F);
GetMem(Buffer, Size);
try
BlockRead(F, Buffer^, Size);
ProcessFile(Buffer, Size);
finally
FreeMem(Buffer);
end;
finally
CloseFile(F);
end;

end;
 
谢谢大家的回答,大家接分了啊。
[:D][8D][:(][^]
 
多人接受答案了。
 
顶部