我正在写一个程序,其中一个外部设备读取数据到文本文件,一直打开文本文件
我的程序使用这个文本文件中的数据进行处理,开始我用文本读取形式来操作该文本文件
代码如下:
1.
Str := TStringList.Create;       //从文本文件中读出数据保存到字符串数组中
  str.LoadFromFile(filename);
  if length(Str.Text)>0 then
  begin
   cardid := Str.Strings[0];
   Str.Clear;
   Str.SaveToFile(filename);       //清空文件
  end
  else
   cardid := '';
2.
 try
  try
    AssignFile(txtFile,filename);
    FileMode := fmShareDenyNone;
    Reset(txtFile);
  except
    raise Exception.Create('没有找到POOL.TXT文件,请设置其路径或联系开发    商...');
   end;
   ReadLn(txtFile,Cardid);
  finally
   CloseFile(txtFile);
  end;   
但是别的程序使用这个文本文件时就不能以共享形式打开了
我又试着用文件流去操作,代码如下:
if FileExists(filename) then
   TxtFile := TFileStream.Create(filename,fmOpenReadWrite or fmShareDenyNone)     //文件存在用文件流打开文件POLL.TXT
  else
  begin
    TxtFile := TFileStream.Create(Filename,fmCreate);
    TxtFile.Free;
    TxtFile := TFileStream.Create(filename,fmOpenReadWrite or fmShareDenyNone);    //文件不存在则创建后打开
  end;
  //TxtFile.Seek(0,0);
  Filesize := SizeOf(TCard);                     //取卡号长度
  TxtFile.read(card,Filesize);                   //读出卡号  Edit1.Text := card.Cardid;
  cardid := trim(Edit1.Text);
  TxtFile.Seek(-filesize,1);               //清空文件
  card.Cardid := #0;
  TxtFile.Write(card,filesize);
  TxtFile.Free;
前面读取都可以了,可是后面清空该文件时就不行了
请高手赐教不胜感谢.......

解决方案 »

  1.   

    Createfile
    ReadFile
    WriteFile
    将文件打开 读入(修改)后关闭所创建的句柄。
      

  2.   

    Uses
      Registry;...function GetDataFromReg:string
    with TRegist.Create do
    try
      RootKey:=HKEY_LOCAL_MACHINE;
      if OpenKey('\Software\你公司的名称\软件名称\',True) then
         Result:=ReadString('键值名称'); //readstring函数不知用的对不对,自己查查吧
         //发送数据的函数这里用WriteString(...)
      CLoseKey;
    finally
      Free;
    end;希望对你有帮助:)
      

  3.   

    TO : Chen_ZhongHua(小狼) 首先谢谢你的建议
    我也想过这样做,但是其中的一个程序是别人的
    它只能读到指定的文件而不能写到注册表
    所以.........