哪一个是最好的方法来保存在德尔福的数据

问题描述:

我在德尔福的一个程序工作,其中包含大量的数据,我不知道哪种方法是最好的将它保存到文件。现在我们使用记录和“文件”来保存它,但我认为它应该是更好的方法。我更喜欢一个系统,它可以很容易地从我们现在使用的系统迁移。哪一个是最好的方法来保存在德尔福的数据

编辑:应用程序是一种数据库应用程序。用户使用它来管理数据。

这取决于数据!通常的手段是数据库(大量记录行),XML(结构化数据存储),ini文件(简单数据)或自定义格式(图形图像等)。 Delphi在数据库方面非常出色,有一系列第三方选项可以完全编译代码,所以对于一般数据,它们可以很好地工作。

如果它是一种数据库应用程序,将数据存储在数据库中可能是合乎逻辑的选择。

一种替代的方法是使用一个横批:

procedure TmyThing.PutData(AFile: String); 
var 
    writer: TWriter; 
    stream: TFileStream; 
begin 
    stream := TFileStream.Create(AFile, fmCreate); 
    try 
    writer := TWriter.Create(stream, $ff); 
    try 
     with writer do 
     begin 
     WriteSignature;   {marker to indicate a Delphi filer object file.} 
     WriteListBegin;   {outer list marker} 
     WriteFloat(cVersion); {write the version for future use} 
     WriteString(someProperty); 
     {... etc. ...} 
     WriteListEnd;   {outer list marker} 
     end; 
    finally 
     writer.Free; 
    end; 
    finally 
    stream.Free; 
    end; 
end; 

也取决于你想用它做的,一旦你已经救了它是什么?它只是在此存储的“存档”数据点?或者你是否想要搜索它,在未来的某个时间点检索某些数据,然后再次将其保存(可能发生更改),或者将其全部加载,以某种方式操纵它,然后再将其保存回去?

有很多选项。如果你确定你永远不会需要更多的用户,那么我会使用保存在XML中的ClientDatasets。 Dan Miser写了一些关于他们的文章,这些文章非常好。如果您不确定将来需要一个或多个用户,我会选择嵌入式数据库。火鸟是一个很好的选择。有关更多信息,请参见http://www.firebirdsql.org/manual/fbmetasecur-embedded.html。使用相同的代码,您将来可以创建多用户版本。

对于一个简单的应用程序,为什么不使用本地TClientDataset?它将允许搜索,排序和使用数据库控件。如果您在使用条款中包含midaslib,则还可以在不使用任何外部DLL的情况下部署该应用程序。

var 

FileStream: TFileStream; 


procedure TForm1.Load(Sender: TObject); 

Begin 

if FileExists ('Thing2.dat') then 

     Begin    
     FileStream := TFileStream.Create('Thing2.dat', fmOpenRead); 
     FileStream.ReadComponent({Thing like Edit1}); 
     FileStream.Free; 
     End; 
end; 

和负载

procedure TForm1.Save(Sender: TObject); 

Begin 



FileStream := TFileStream.Create('Thing2.dat', fmcreate); 

FileStream.WriteComponent( {Thing like Edit1} ); 

FileStream.Free; 



end; 

这应该引起我的作品