Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Delphi中修剪/替换文件流中的第一个字符?_Delphi - Fatal编程技术网

如何在Delphi中修剪/替换文件流中的第一个字符?

如何在Delphi中修剪/替换文件流中的第一个字符?,delphi,Delphi,我有以下代码,用于使用IDHttp.Get(文件内容)进行一系列文件提取 procedure Tform1.GetData; {***************************} var fs2 : tfilestream; s : char; begin Sleep(1000); idhttp1.HandleRedirects := TRUE; fsjson2 := tfilestream.Create((

我有以下代码,用于使用IDHttp.Get(文件内容)进行一系列文件提取

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保存到文件中时,为什么要将其丢弃?