如何在Delphi中修剪/替换文件流中的第一个字符?
我有以下代码,用于使用IDHttp.Get(文件内容)进行一系列文件提取如何在Delphi中修剪/替换文件流中的第一个字符?,delphi,Delphi,我有以下代码,用于使用IDHttp.Get(文件内容)进行一系列文件提取 procedure Tform1.GetData; {***************************} var fs2 : tfilestream; s : char; begin Sleep(1000); idhttp1.HandleRedirects := TRUE; fsjson2 := tfilestream.Create((
procedure Tform1.GetData;
{***************************}
var
fs2 : tfilestream;
s : char;
begin
Sleep(1000);
idhttp1.HandleRedirects := TRUE;
fsjson2 := tfilestream.Create((GstrPath+GstrRep+'-'+GstrHome+'.json'),fmcreate);;
idhttp1.IOHandler := idssl;
IdSSL.SSLOptions.SSLVersions := [sslvTLSv1, sslvTLSv1_1, sslvTLSv1_2];
IdSSL.SSLOptions.Mode := sslmUnassigned;
try
idhttp1.Get(GstrURL,fs2);
except
on E: Exception do
begin
rememo1.Lines.Add('Seems to be an issue, trying again...');
Sleep(500);
idhttp1.Get(GstrURL,fs2);
end;
end;
我希望有一种方法,要么修剪第一个字符,尽管我认为这是不可能的,要么用空白字符替换第一个字符(默认情况下随信息一起提供)。我觉得现在做这件事有点超出我的能力范围,所以如果有人能提供帮助,我将不胜感激
谢谢
Ant有几种可能的解决方案: 您正在将数据接收到流中。如果要修剪第一个字符,可以在处理流的位置跳过读取第一个字符并将其丢弃 如果无法控制接收流的处理位置,则可以简单地创建一个新流并循环读取接收流中的所有字符,然后将它们写入目标流。然后丢弃接收到的流,保留您创建的流
如果接收到的数据(当前为流)不是太大,您可以将其接收到一个字符串而不是流中,然后您可以通过简单的字符串操作来修剪/删除/插入任何内容,最后将修改后的字符串写回流中供以后使用。为什么不使用
TIdHTTP.Get
?您可以放弃第一个字符,并将其余字符保存到文件中。响应中返回的流是否太长?第一个字符是什么?您可能正在检索JSON。应该没有必要丢弃其中的任何字符。似乎到目前为止。你需要知道文本是如何编码的。确切地说,如何最好地解决您的问题可能取决于您接下来如何处理流。我也认为你把自己的问题误诊是有道理的。当你询问你的解决方案而没有说明问题时,这总是一个风险。你的异常处理完全有缺陷,睡眠是假的,我怀疑你有漏洞。你为什么不告诉我们为什么你认为你需要去掉第一个字符,让我们帮助呢?也许最简单的解决办法就是从TFileStream派生一个新类,重写它的Write()方法,忽略写入它的第一个字符,然后将所有后续字符传递给基类。但是为什么要/需要忽略第一个字符?既然您下载的是JSON,那么第一个字符是BOM吗?在将JSON保存到文件中时,为什么要将其丢弃?