Delphi   发布时间:2022-04-11  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了从Delphi中的CSV文件导入和处理数据大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个预先面试的任务,我已经完成并且解决方案有效,但是由于使用了TADODataset,我被标记了并没有接受采访.我基本上导入了一个填充数据集的CSV文件,数据必须以特定的方式处理,所以我使用数据集的过滤和排序来确保数据按我想要的方式排序然后我做了while循环中的逻辑处理.收到的反馈说这很糟糕,因为对于大文件来说这会很慢.

我的主要问题是,如果使用内存数据集处理大型文件的速度很慢,那么从csv文件访问信息的方法会更好.@R_285_10675@用字符串列表还是类似的东西?

解决方法

它实际上取决于任务的“大”和可用资源(在本例中为RAM).

“收到的反馈说这很糟糕,因为对于大型文件来说这很慢.”

CSV文件通常用于移动数据(在大多数情况下,我遇到的文件大约是1MB到10MB,但这并不是说其他​​人不会以CSV格式转储更多数据)而不用担心太多(如果在所有)关于进口/出口,因为它非常简单.

假设您有一个80MB的CSV文件,现在这是一个你想要处理的文件,否则(取决于你的处理)你可以吃掉数百MB的RAM,在这种情况下我会做的是:

while dataToProcess do begin
  // step1
  read <X> lines from file,where <X> is the max number of lines 
  you read in one go,if there are less lines(i.e. you're down to 50 lines and X is 100)
  to process,then you read those
  // step2
  process information
  // step3
  generate output,database inserts,etc.
end;

在上面的例子中,你没有将80MB的数据加载到RAM中,而只加载几百KB,其余的用于处理,即链接列表,动态插入查询(批量插入)等.

“……但由于使用了TADODataset,我被标记下来并没有接受采访.”

我并不感到惊讶,他们可能正在寻找您是否有能力创建算法并在现场提供简单的解决方案,但不使用“现成的”解决方案.

他们可能会虑使用动态数组并创建一个(或多个)排序算法.

“@R_285_10675@用String Lists还是类似的东西?”

回应可能是相同的,我认为他们想看看你的“工作”方式.

大佬总结

以上是大佬教程为你收集整理的从Delphi中的CSV文件导入和处理数据全部内容,希望文章能够帮你解决从Delphi中的CSV文件导入和处理数据所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。