Forex programozás › Fórum › Kérdések az MQL4 programozási nyelvvel kapcsolatban › Fájlba írás
Címkézve: fájlba írás, névadás
-
SzerzőBejegyzés
-
Szia Atilla
olyan jó, hogy van hol feltegyem a kérdéseimetadatokat íratok ki fájlba és zavar, hogy minden kiírt fájlnak külön kézzel kell megadjam a nevét,
ezért úgy gondoltan mindegyiknek a neveként a keletkezési dátumát adnám,
csak nem tudok rájönni hogy írjam oda a .csv elébe úgy, hogy a MetaEditor is elfogadjastring kezdet;
kezdet=TimeToStr(TimeCurrent(),TIME_DATE|TIME_SECONDS);string ExcelPip= kezdet,”.csv”;
Handle=FileOpen(ExcelPip,FILE_CSV|FILE_READ|FILE_WRITE,”;”);ha ebben is tudnál segíteni , örömmel fogadnám
A legfontosabb, hogy fájlnévben nem lehet kettőspont.
A második legfontosabb, hogy stringeket a StringConcatenate eljárással tudsz összefűzni. A kettőspontok helyett használhatsz szünetet vagy kötőjelet.
string fajlnev = StringConcatenate(TimeToStr(TimeCurrent(), TIME_DATE), " ", Hour(), "-", Minute(), "-", Seconds(), ".csv");
A stringben végeredményként ez lesz:
2011.01.02 22-0-26.csvA StringConcatenate -nek egyszerűen úgy add meg a paramétereket, mint ahogy a Print() esetében tennéd (max. 64 darabot).
A Print esetében sokan használják a + (plusz) jelet, de a dokumentáció azt írja, hogy a StringConcatenate alkalmasabb a feladatra.
mindig jó érzéssel tölt el mikor olyan emberel találkozom akiben párosul a szakértelem és a segítőkészség,
köszönöm szépen segítségedetNincs mit, örülök hogy segíthetek!
Szia Attila
Azt szeretném kérdezni, hogy lehet-e tetszőleges fileba irni . pl c:/temp nem a rendszer altal adott helyre
string fs = „c:/temp/nev”+”.csv”;
int handle=FileOpen(fs,FILE_CSV|FILE_WRITE,”,”);
if(handle>0) {
FileWrite(handle,Counter);
}
FileClose(handle);
Így nem működik.
Köszönettel.Nem, kizárólag a Files mappán belül tudsz dolgozni a natív függvényekkel.
Továbbá figyelj arra, hogy perjelek helyett visszaper jelet használj az elérési út megadásakor!
Sajnos a vissza perrel sem működik, semmilyen alternatívában.
Találtam viszont egy kernel32 rutint a demoban, az erről szól csak kissé bonyolultstring ReadFile (string path)
{
int handle=_lopen (path,OF_READ);
int read_size = 50;
string char50=”x „;if(handle<0)
{
Print(„Error opening file „,path);
return („”);
}
int result=_llseek (handle,0,0);
if(result<0)
{
Print(„Error placing the pointer” );
return („”);
}
string buffer=””;
int count=0;
int last;result=_lread (handle,char50,read_size);
int readen;
while(result>0 && result == read_size)
{
buffer=buffer + char50;
count++;
result=_lread (handle,char50,read_size);
last = result;
}
Print(„The last read block has the size of, in bytes:”, last);
char50 = StringSubstr(char50,0,last);
buffer = buffer + char50;
result=_lclose (handle);
if(result<0)
Print(„Error closing file „,path);
return (buffer);
}Igen, kernel32-vel meg tudod oldani a kérdést, hogy bármilyen fájlt olvashass a rendszeren belül.
Fentebb írtam, hogy a visszaperjeles megoldás kizárólag a Files mappán belül fog működni.
-
SzerzőBejegyzés
- Be kell jelentkezni a hozzászóláshoz.