การดึงค่าจากไฟล์ csv

  • 4 replies
  • 235 views

0 สมาชิก และ 1 บุคคลทั่วไป กำลังดูหัวข้อนี้

*

ออฟไลน์ gaothun

  • **
  • 117
  • 0

การดึงค่าจากไฟล์ csv

« เมื่อ: 22, สิงหาคม 2022, 11:07:11 AM »
//+------------------------------------------------------------------+
//|                                                         Test.mq5 |
//|                                  Copyright 2021, MetaQuotes Ltd. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2021, MetaQuotes Ltd."
#property link      "https://www.mql5.com"
#property version   "1.00"

//-------------------------------------------------------------------
int         filehandle;
int         str_size;
int         TP_Buy, SL_Buy;
int         TP_Sell, SL_Sell;

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
   
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   string terminal_data_path=TerminalInfoString(TERMINAL_DATA_PATH);
   string filename=terminal_data_path+"\\MQL5\\Files\\"+"csv.csv";
   //filehandle=FileOpen(filename,FILE_READ|FILE_CSV);
   ResetLastError();
   filehandle=FileOpen("csv.csv",FILE_READ|FILE_CSV);
   //--------------------------
   if(filehandle<0)
     {
      Print("Failed to open the file by the absolute path ");
      Print("Error code ",GetLastError());
     }
 
//--- correct way of working in the "file sandbox"
   if(filehandle!=INVALID_HANDLE)
      {
            while(!FileIsEnding(filehandle))
              {
                  TP_Buy = (int)StringToInteger(FileReadString(filehandle));
                  SL_Buy = (int)StringToInteger(FileReadString(filehandle));
                  TP_Sell = (int)StringToInteger(FileReadString(filehandle));
                  SL_Sell = (int)StringToInteger(FileReadString(filehandle));
                  Print("TP : ",TP_Buy," sl : ",SL_Buy);
              }
            FileClose(filehandle);
      }
//--------------------------
//Comment(filehandle," tp b : ",TP_Buy," sl b : ",SL_Buy);
  }
//+------------------------------------------------------------------+


ช่วยดูโค๊ดให้หน่อยครับ ผมลองดึงค่า ซึ่งมันมีไฟล์ csv.csv อยู่แล้ว แต่ดึงค่าออกมาอย่างไรก็ได้ 0 อยู่ดีครับ

Share Topic.


*

ออฟไลน์ iRuler

  • *
  • 1,272
  • 40

Re: การดึงค่าจากไฟล์ csv

« ตอบกลับ #1 เมื่อ: 22, สิงหาคม 2022, 12:29:39 PM »
โค๊ด
while(!FileIsEnding(filehandle))
      {
         /*
            TP_Buy = (int)StringToInteger(FileReadString(filehandle));
            SL_Buy = (int)StringToInteger(FileReadString(filehandle));
            TP_Sell = (int)StringToInteger(FileReadString(filehandle));
            SL_Sell = (int)StringToInteger(FileReadString(filehandle));
            */
         string read_line =  FileReadString(filehandle);
         //Print("TP : ", TP_Buy, " sl : ", SL_Buy);

         string array[];
         StringSplit(read_line, ',', array);
         Print("TP : ", array[0], " sl : ", array[1]);
      }

 (TH)**

FileReadString() มันจะอ่านมาทั้งบันทัดครับ
บันทัดแรกของไฟล์ csv ไม่ต้องใส่ครับ หรือจะใส่ก็ให้ skip บันทัดแรกตอนวนลูปอ่าน
« แก้ไขครั้งสุดท้าย: 22, สิงหาคม 2022, 12:32:51 PM โดย iRuler »

*

ออฟไลน์ gaothun

  • **
  • 117
  • 0

Re: การดึงค่าจากไฟล์ csv

« ตอบกลับ #2 เมื่อ: 22, สิงหาคม 2022, 01:58:58 PM »
ผมลอง ทดสอบดูค่าที่ได้มันเป็นภาษาจีนครับ ไม่เหมือนค่าในไฟล์ csv เลยครับ

*

ออฟไลน์ iRuler

  • *
  • 1,272
  • 40

Re: การดึงค่าจากไฟล์ csv

« ตอบกลับ #3 เมื่อ: 23, สิงหาคม 2022, 09:06:25 AM »
น่าจะเป็นเพราะไฟล์ csv encoding เป็น UTF-8 ครับ ลอง convert เป็น ANSI ครับ



Re: การดึงค่าจากไฟล์ csv

« ตอบกลับ #4 เมื่อ: 11, กันยายน 2022, 09:36:11 PM »
 Ha)**

Tags: