错误、漏洞、问题 - 页 898

 

lazarev-d-m:

耶德尔金

sergeev:该文件有行吗

文件_LINE_END

获得行末 指示

我差不多想明白了,终端看到的csv文件不是一个表格,而是一个普通的文件,所有的变量都排成一排,用分隔符隔开,为了像表格一样定位,我写了一个小的示例脚本,像处理表格一样处理csv,不管听起来多么奇怪,今天/明天我将把CodeBase扔进去,我想很多人会感兴趣的

lazarev-d-m, 我的 信息不是给你的。这是为谢尔盖耶夫个人。
 
Yedelkin:

文件_LINE_END

获取行尾 指示器

我没有告诉你什么,你已经很聪明了。

而且你明白该文件的 映射中有控制字符 。这样,一些查看其内容的人就会根据普遍接受的规则来显示它。

Управляющие символы — Википедия
  • ru.wikipedia.org
Управля́ющие си́мволы — элементы данной кодировки, которым не приписано графическое представление, но которые используются для управления устройствами, организации передачи данных и других целей. Сейчас для этих целей применяются форматы файлов, языки управления устройствами (такие как Postscript) и сетевые протоколы. Поэтому многие...
 
lazarev-d-m:

我已经大致弄明白了,终端没有把csv文件看成一个表格,而是看成一个正常的文件,所有的变量都排成一排,用分隔符分开。

它不只是看到这样的csv,它把所有东西都看作是一个文件。
 

lazarev-d-m:

你必须想出一个机制来搜索字符串。

文件有行吗? 如何标记新行?(暗示一个特殊的符号 :)

想象一下,该文件是一个一维的字符数组。

如何在数组中找到一个 "新行"?

 

 

文件_LINE_END

获取行尾 字符

sergeev:我不会告诉你任何事情。你已经够聪明了。你明白一个文件 其线性表示 具有控制字符 ,对于一些浏览器来说,根据公认的规则显示其内容。
:)让我们假设你得到了 "什么是文件中的新行?文件有行吗?"等问题的答案。你得到了他们。这个答案并不在你的意料之中。
 
Yedelkin:
:)让我们假设 "什么是文件中的新行 " 问题的答案。你得到了 它。你不应该得到一个答案。

这都是关于使用的概念和对这些概念的看法。

什么是文件中的"新行"? 这就是我想从lazarev-d-m 那里找到的东西。如果我等待答案,如果有必要,我将纠正并正确解释这个概念。然后我将引导到问题的解决。

虽然我不知道lazarev-d-m 在问及 "换行 "时想象的是什么,而且我也无法回答如何找到它。他知道FileSeek和FileIsLineEnding以及FileRead。但似乎不知道它们是用来做什么的。

很明显,在他的情况下,你只能通过搜索找到一些字符。 但他是否理解新的字符串只是一个字符 - 我不知道。

 
sergeevвсе дело в 我试图从lazarev-d-m 中找出什么是文件中的"新字符串"。 如果我期望得到答案,我将纠正并正确解释这一概念。同时,我不知道当lazarev-d-m 问起 "换行 "的时候,他在想什么。他知道FileSeek和FileIsLineEnding以及FileRead。但他似乎不知道这些东西是干什么用的。 很明显,在他的情况下,你只有通过搜索才能找到一些角色。

重点是,这个论坛是MQL5社区的论坛。而MQL5暗示了 "文件中的行末符号 "这样一个概念。

FILE_LINE_END.

获得行末 标志

因此,拉扎雷夫先生的问题是完全正确的。这在MQL5社区 内是绝对正确的

 
Yedelkin:

重点是,这个论坛是MQL5社区的论坛。而MQL5语言暗示了 "文件中的行末符号 "这样一个概念。

问题--告诉我哪些数字能除以2?

答案是全部。

道理--不要混淆终点和你需要的东西lazarev-d-m

 
sergeev: 问题--告诉我,哪些数字是可以被二除的?答案是全部。 道理--不要混淆终点和正确的 拉扎列夫-D-M
是的,你的问题 "文件是否有字符串?"的答案。你已经得到了它。现在你比较一下结局和拉扎雷夫需要的东西。:)
 
sergeev:

问题--你能告诉我哪些数字能被2整除吗?

答案是全部。

道理--不要混淆终点和你需要的东西lazarev-d-m

我知道有办法识别单行,但没有单独的命令来访问它,你需要重新计算行间分隔符的字符数,以获得正确的字符串(如果你知道行的 "数量")。

或者我的变体是逐行扫描文件,这也不是很方便,尤其是大文件,可能有几百行,如果在测试器中突然遇到这种情况,那一般来说是很糟糕的。

我是这样做的,它不能正常工作,等我有空了再修。

MqlDateTime mqldt;
string qwerty="EURUSD";
int filehandle;

void OnStart()
  {
   filehandle=FileOpen("News.csv",FILE_READ|FILE_CSV|FILE_ANSI,';');
   uint column1=FileReadInteger(filehandle);//Code
   string column2=FileReadString(filehandle);//Symbol
   uint column3=FileReadInteger(filehandle);//Year
   uint column4=FileReadInteger(filehandle);//Month
   uint column5=FileReadInteger(filehandle);//Day
   uint column6=FileReadInteger(filehandle);//Hour
   uint column7=FileReadInteger(filehandle);//Minute
   while(column2!=qwerty&&column3!=mqldt.year&&column4!=mqldt.mon&&column5!=mqldt.day&&column6!=mqldt.hour)
     {
   column1=FileReadString(filehandle);//Code
   column2=FileReadString(filehandle);//Symbol
   column3=FileReadInteger(filehandle);//Year
   column4=FileReadInteger(filehandle);//Month
   column5=FileReadInteger(filehandle);//Day
   column6=FileReadInteger(filehandle);//Hour
   column7=FileReadInteger(filehandle);//Minute
     }
   Alert("Искомое находится в ",column1,"-й строчке");
  }
现在它总是返回column1=Code,而它应该返回与当前时间 相匹配的行数,我想从代码中可以看出这一点。