错误、漏洞、问题 - 页 327

 
mrProF:
一目了然,整个文件被写 到str...
添加FILE_ANSI标志,因为它默认读取的是unicode:)
另外,我将是15岁,因为最后有一个空行。
根据MQL5文档,FileReadString函数 "以文件指针的当前位置从文件中读取字符串 ...当从csv-文件中读取时,字符串将从当前位置读到最近的分隔符,或读到文本字符串的结束符号"。因此,我不同意 "整个文件被写入 "的说法。我试着用FILE_ANSI,但它不起作用。关于最后的空行:我不太明白,请解释一下你说的是哪一行。
 
DenisR:
根据MQL5文档,FileReadString函数 "从文件指针的当前位置读取一个字符串。当从csv-文件中读取时,字符串将从当前位置读到最近的分隔符,或读到文本字符串的结束符号"。因此,我不同意 "整个文件被写入 "的说法。我试着用FILE_ANSI,但它不起作用。关于最后的空字符串:我不太明白,请澄清你说的是哪个字符串。

这是如果它能正确找到一个逗号,如果编码不匹配,它可能看不到。
我会用调试器看一下的。
我复制了你的代码,添加了标志--一切都很好。
 
因此,正如我所说,这里是结果。
没有ansi,它就会读出abracadabra,没有看到逗号,它就会飞到文件的末端。
使用安氏,读数很好。
见附件。
附加的文件:
 
-Alexey-:
在MetaEditor中,"文件中的函数列表 "按钮可以打开该列表。如果我向下滚动,它在P处结束,不再进一步移动(朝下的黑色三角形变得不活跃),尽管有类到字母R。请修复它。

需要更多的细节。

建立、归档、决议...

刚刚在ChartObject.mqh文件上试了一下--它可以上下滚动。

 
mrProF:
因此,正如我所说,这里是结果。
没有ansi,它就会读出abracadabra,没有看到逗号,它就会飞到文件的末端。
使用安氏,读数很好。
见附件。
从ANSI中我读到了(5 505 1009),也就是说,由于某种原因,i现在是5而不是0,文件大小 和以前一样是505,FileTell和以前一样是1009。在MT4中,同样的脚本为(15 505 505)。
 
alexvd:

需要更多细节。

建立、归档、决议...

刚刚在ChartObject.mqh文件上试了一下--它可以上下滚动。

Interesting:
而且至少有近似的清单大小什么?也许名单的大小是有限制的......

-Aleksey-

正好100行。


有趣的 是。

用我的一个库(110个函数)做了实验,它在列表中显示从100到106(一直是不同的数字,但不是110)。

最后建立,似乎是行数大于100的问题。ChartObject.mqh的列表中只有62行。分辨率1680x1050。Windows7,字体方案是放大的字体。

 
DenisR:
从ANSI中我读到了(5 505 1009),也就是说,由于某种原因,i现在是5而不是0,文件大小和以前一样是505,FileTell和以前一样是1009。在MT4中,同样的脚本为(15 505 505)。
嗯,我的是155091009。


//+------------------------------------------------------------------+
//|                                                         test.mq5 |
//|                                                           mrProF |
//|                                                          http:// |
//+------------------------------------------------------------------+
#property copyright "mrProF"
#property link      "http://"
#property version   "1.00"
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+


void OnStart()
  {int handle;
   ulong i, size;
   double _Ask, _Bid;
   string str;
      
   handle = FileOpen("test.csv",FILE_CSV|FILE_READ|FILE_ANSI,',');
   
   if (handle != INVALID_HANDLE)
     {
      size = FileSize(handle);
      
      for (i = 0; i < size; i++)
        {
         str = FileReadString(handle);
         _Ask = FileReadNumber(handle);
         _Bid = FileReadNumber(handle);
        
         if (FileIsEnding(handle))
           {
            Print(i," ",size," ",FileTell(handle));
            break;
           }
        }
     }   
      
   FileClose(handle);

   return;

  }
//+------------------------------------------------------------------+


如果你知道怎么做,可以尝试逐行调试...

 
mrProF:
嗯,我有155091009。



我一开始也有15 505 1009,但后来终端更新到最新版本(408),就变成了5 505 1009。但在任何情况下,文件末尾的标志不能大于文件本身的大小。这是我目前最关心的问题。
 
alexvd:

需要更多的细节。

建立、归档、决议...

刚刚在ChartObject.mqh文件上试了一下--上下滚动。

构建404和408,Win XP Prof SP3,3.0 GHz CPU和3.0 Gb RAM。

字体大小 和其他设置(颜色除外)是标准的。

行动如下。

1.创建一个库或任何其他程序模块。

2.生成一组程序和函数,其数量必须超过100。在我的例子中,它是110(我在嘲笑我的迁移库)。

更具体地说,功能是110个,模块出来的大小约为3310行。

3.编译该模块。

4.我们正试图翻阅功能列表。

在列表中,我看到了从100到106个函数(每次重新编译的函数数量和组成都不同)。起初显示的是106个函数的名称,然后数量开始减少。

同时,所有的110项功能从未出现在清单中。

PS

另一件奇怪的事--我不知道在第一次编译后有多少个函数(但肯定少于50个)新的函数不再出现在列表中,我不得不做两到三次重新编译。

我建议要么改变列表的形成顺序,比如以分组菜单的形式分配各个班级(在单独的列表中显示 "填充 "班级),要么组织一个单独的管理器,就像在Delphi中一样(论坛上已经讨论过这样的请求)。

 
-Alexey-:
alexvd:

需要更多的细节。

建立、归档、决议...

刚刚在ChartObject.mqh文件上试了一下--它可以上下滚动。

Bild last,似乎是行数大于100的问题。ChartObject.mqh的列表中只有62行。分辨率1680x1050。Windows7,字体方案是放大的字体。

是的,复制了它。

谢谢,让我们来看看。