问题标签 [tfilestream]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
delphi - 我如何从 TFileStream 和 TMemoryStream 下降?
我有一个从 TFileStream 继承的类和一个从 TMemoryStream 继承的类。两者都实现了与读取数据完全相同的功能,例如:
当我想编写一个可以将任一类型的流作为参数的函数时,我必须使用 TStream:
这当然意味着我不能使用我的自定义函数。处理这个问题的最佳方法是什么?理想情况下,我希望能够拥有一个在 FileStream 或 MemoryStream 上工作的 Tstream 兼容类,这样我就可以做这样的事情,并且流是 FileStream 还是 MemoryStream 无关紧要:
string - Delphi tfilestream.readbuffer 无法从文件中读取字符串值
我正在使用文件流从文件中读取和写入数据,但在从文件中读取字符串时遇到问题。
在我编写的测试 VCL 表单程序中:
Save 按钮操作正确输入了四个字符串,但 Load 按钮 (readFromFile4) 无法从文件中加载字符串。使用监视列表,我发现每个字符串的字符串长度设置正确,但访问的数据不是正确的字符串值。我相信我会忠实地遵循网站上的说明:http://www.angelfire.com/hi5/delphizeus/customfiles.html] 1在标题为的部分
写入和读取非固定大小变量的动态数组
谁能解释为什么这不能正确读取文件中的字符串?
performance - 通过文件流取消保存文件的适当方法?
我正在编写的一个工具负责在几个小时内下载数千个图像文件。最初,使用TIdHTTP
,我会将Get
文件放入 a TMemoryStream
,然后将其保存到文件中,只要没有例外。为了提高速度,我TMemoryStream
把TFileStream
.
但是,现在如果找不到资源,或者任何导致没有实际文件的异常,它仍然会保存一个空文件。
完全可以理解,因为我只是在下载之前创建了一个文件流......
我知道如果出现异常,我可以简单地删除该文件。但这似乎太草率了。我确信有一种更合适的方法可以终止这种情况。
如果出现异常,我应该如何使它不保存文件,同时不改变性能(如果可能的话)?
arrays - 将打包记录数组保存到磁盘
我快疯了。我正在尝试将一组打包记录保存到磁盘以供稍后读取。
以下单元主要包含两个过程。
- 第一个InitSaveAndReLoad(),初始化一个打包的记录数组,将其保存到磁盘并从磁盘重新加载到一个新的打包记录数组中,并通过加载的数组并打印第 20 个值。完美运行。
- 第二个 LoadFromFile(),只是从磁盘重新加载数组。它甚至由 InitSaveAndReload() 调用,并且只要该文件先前由应用程序的同一实例创建,它就可以完美地工作。我的意思是,如果我退出应用程序并重新启动,则只是将文件重新加载到记录数组中的 LoadFromFile() 过程不再起作用。我不明白为什么。
有什么线索吗?
谢谢你的帮助。已经在这个问题上花了一整天的时间并变得疯狂!
当我说“不再工作”时,我的意思是一旦您调用了 InitSaveAndReload() 过程,您可以根据需要多次调用 LoadFromFile(),但如果您在启动应用程序后立即调用此过程,请尝试使用由 InitSaveAndReload 过程创建的旧文件,那么它就不能正常工作了!
单位提供尽可能简单。只需创建一个新项目,添加 3 个按钮一个 TMemo 和一个 TEdit。如果我能加入一个.rar,我会附上这个项目......
delphi - 为什么 TFileStream.write 会产生不正确的数据?德菲 7
我试图创建一个函数/方法,该函数/方法应该写入一个标头填充零的文件
但是当我检查创建的文件时,它具有以下值(十六进制):
我希望输出文件应该包含
然后我也尝试用它来填充它,chr(1)
结果是相似的:
(看起来一样)。
当我在 Delphi 7 中进行调试时,我会在标题填充零时观察它:
当我填充它时,chr(1)
它包含...
所以我的问题是,为什么会这样?输出文件包含错误数据,我做错了什么?
delphi - Delphi TFileStream WriteBuffer Int64的大小不是吗?我一次只能写少量
我正在尝试编写更大的块以提高文件保存的速度。我有大约 9 个循环要转换,但我不知道我做错了什么
此代码有效:
当我删除内部循环以编写更大的块时,代码不起作用:
我收到一般错误“流写入错误”
的值为SizeOf(MyRecord) * Length(MyArray[RecordGroup])
180 * 152,004 = 27,360,720
我读过的所有内容基本上都说这是正确的。任何想法我做错了什么?
提前感谢您的任何想法。
delphi - 有没有办法可以发送带有 httprequest.post 方法的 TFileStream 并以某种方式在我的网络经纪人中提取它?
我正在尝试允许客户将 pdf/xls 和 jpg 文件上传到我正在运行的网络经纪人服务器。我想我正在发送正确的内容,但我不知道如何提取接收到的数据。我找不到合适的方法来允许我这样做。我正在使用提供的 Delphi httprequest.post 方法连接到服务器的后端。
下面的代码片段:
客户
服务器
delphi - 如何读取未知大小的未知类型文件
我需要读取一个未知类型和大小文件的内容并临时保存它(在某种变量中),以便稍后使用它通过串行端口进行传输。据我了解, TFileStream 是正确的方法。
我确实尝试从http://docwiki.embarcadero.com/CodeExamples/Tokyo/en/TReader_(Delphi)实施以下教程
为了让 Reader 对象正常工作,我还需要设置什么,或者我应该使用不同的方法吗?
c++builder - 调试和发布应用程序版本之间的 C++Builder TFileStream 兼容性
使用 TFileStream 将各种值和字符串写入文件我发现我无法在应用程序的调试版本和发布版本之间共享文件。进一步看,似乎枚举类型使用 TFileStream 写入/读取的长度不同。示例:如果我使用调试版本写入流: fsStream->Write((void*)&FInstrumentStatus, sizeof(TInstrumentStatus)); 不能从发布版本中读取,反之亦然。其他值,如字符串、int、double、float 似乎很好。
由于我确实从调试版本创建了许多文件,我该怎么做才能使发布版本读/写相同?谢谢你,rwil