- Your seek it to the end of the file not to the last line. Past the last line.
- You can NOT seek, because the file has variable length lines.
- Remember the last line read, read the next line. If it is empty, you've reached the end of file. The previous line WAS the last one.
Dear WHRoeder,
After a while loop I'm a line too far. How can I keep the line before? I thought maybe will this work, but it does not
Thank you!
while(!FileIsEnding(file_handle2)){ FileReadDatetime(file_handle2); } Print("Datetime: " + TimeToStr(FileReadDatetime(file_handle2),TIME_DATE|TIME_MINUTES)); FileClose(file_handle2);
This does not work too and I do not know why.. Have I a error in reasoning?
int file_handle2=FileOpen(InpDirectoryName+"//"+FileName,FILE_READ|FILE_WRITE|FILE_CSV); if(file_handle2!=INVALID_HANDLE){ datetime MyTime=0; while(!FileIsEnding(file_handle2)){ MyTime = FileReadDatetime(file_handle2); } Print("Datetime: " + TimeToStr(MyTime,TIME_DATE|TIME_MINUTES)); FileClose(file_handle2); }
This does not work too and I do not know why.. Have I a error in reasoning?
Maybe doing what WHRoeder wrote :
int file_handle2=FileOpen(InpDirectoryName+"//"+FileName,FILE_READ|FILE_WRITE|FILE_CSV); if(file_handle2!=INVALID_HANDLE){ datetime MyTime=0,Previous=0; while(!FileIsEnding(file_handle2)){ Previous = MyTime; MyTime = FileReadDatetime(file_handle2); } Print("Datetime: " + TimeToStr(Previous,TIME_DATE|TIME_MINUTES)); FileClose(file_handle2); }
Thank you WHRoeder and angevoyageur,
Sorry it was my fault,
I have forgotten to write
that my csv-file has the following format. And I want to read the last date and the last price in
this example 03.03.2014 17:44 and 1.28333. I saw now that the problem is the second column, but i do not know how I can solve the problem.
I would be very grateful if you could help me
03.03.2014 17:42 | 1.25666 |
03.03.2014 17:43 | 1.25777 |
03.03.2014 17:44 | 1.28333 |
(I have tried it, if my csv-file have only the first column, than the upper solution does work)
I thought maybe this will work, but it does not:
int file_handle2=FileOpen(InpDirectoryName+"//"+FileName,FILE_READ|FILE_WRITE|FILE_CSV); if(file_handle2!=INVALID_HANDLE){ datetime MyTime=0,Previous=0; double price = 0; while(!FileIsEnding(file_handle2)){ MyTime = FileReadDatetime(file_handle2); price = FileReadDouble(file_handle2); } Print("Datetime: " + TimeToStr(MyTime,TIME_DATE|TIME_MINUTES)); Print("Price: " + DoubleToStr(price)); FileClose(file_handle2); }
why not use the same method angevoyageur have written here (use just a little of your head)
int file_handle2=FileOpen(InpDirectoryName+"//"+FileName,FILE_READ|FILE_WRITE|FILE_CSV); if(file_handle2!=INVALID_HANDLE){ datetime MyTime=0,PreviousTime=0; double price = 0, PreviousPrice=0; while(!FileIsEnding(file_handle2)){ PreviousTime = MyTime; PreviousPrice = price; MyTime = FileReadDatetime(file_handle2); price = FileReadDouble(file_handle2); } Print("Datetime: " + TimeToStr(PreviousTime,TIME_DATE|TIME_MINUTES)); Print("Price: " + DoubleToStr(PreviousPrice)); FileClose(file_handle2); }
After struggling with faile save csv-read I do with a csv-file:
handle = FileOpen(fName, FILE_SHARE_READ | FILE_READ | FILE_BIN); szFile = (int)FileSize(handle); strFile = FileReadString(handle, szFile); allLines = StringSplit(strFile,'\n',arrFile); FileClose(handle); int LineNo = 0; while (LineNo < allLines) { maxTab = StringSplit(arrFile[LineNo],'\t',arrTab); ...
- Free trading apps
- Over 8,000 signals for copying
- Economic news for exploring financial markets
You agree to website policy and terms of use
Dear Community,
how can I get the value of the last line in the CSV file? I have tried to write this code, but it returns me not the correct value. I have found some older post in the forum, but they don’t help me.
Thank you very much!