| 
				  List := TStringList.Create;//建立一文件流 
  List.LoadFromFile('dog.dat');//装入DOG.dat文件,此文件中已保存有原软件狗中内容 
  S := List[0]; 
  if length(s)=0 then 
   for i:=0 to 120 do 
    s:=s+' '; 
  ss:=''; 
  for i:=0 to nlength do  //读入待写入狗中的内容 
   ss:=ss+pbuffer[i]; 
  if nstart<>0 then 
   s:=copy(s,1,nstart+1)+ss+copy(s,nstart+nlength+1,121-nstart-nlength-1) 
  else 
   s:=ss+copy(s,nstart+nlength+2,121-nstart-nlength-2); //从初始位置开始写 
  list[0]:=s; 
  list.savetofile('dog.dat');  //写入到dog.dat文件中,就像狗真的存在一样,可读写 
  List.Free; 
  Dogwritebuffer:=0; //写入成功 
end; 
  
function dogreadbuffer(nstart:longint; nlength: longint;pbuffer:PChar):longint; //读狗函数 
//三个参数为:从狗中开始读的位置、长度、保存信息的地址 
var 
  s: String; 
  i:Integer; 
  List: TStringList; 
begin 
//  Dogreadbuffer:=nlength; //读出成功 
//  exit; 
  List := TStringList.Create; 
  List.LoadFromFile('dog.dat'); //读入存放在文件dog.dat中的狗资料 
  S := List[0]; 
  if length(s)=0 then 
   for i:=0 to 120 do 
    s:=s+' '; 
  s:=copy(s,nstart+1,nlength+1);  //copy是从1开始计起的,1与0都一样,复 
//提取出相应起始位置和长度的内容 
//  for i:=1 to length(s) do 
//   pbuffer[i-1]:=s[i]; 
  StrPCopy(pbuffer,S);   //返回存放内容的相应地址   List.Free;			
				 |