pliki, które pojawiają się po ponownym uruchomieniu skryptu

O jezykach programowania w platformach i nie tylko.
WojtexWay
Gaduła
Gaduła
Posty: 145
Rejestracja: 18 wrz 2012, 19:22

pliki, które pojawiają się po ponownym uruchomieniu skryptu

Nieprzeczytany post autor: WojtexWay »

Cześć, mam taki dziwny problem - może ktoś się z nim spotkał i potrafi pomóc.
Napisałem sobie skrypt, który w funkcji start zapisuje do kilku plików różne dane.
Dodatkowo wywołuje funkcję x, która również zapisuje różne dane do kilku plików.
Funkcja x wywoływana jest prawie na końcu funkcji start skryptu (już po zapisaniu danych w funkcji start).

Problem jest taki, że po wywołaniu skryptu w folderze pojawiają mi się tylko te pliki, które zostały utworzone w funkcji x, natomiast brak jest plików, które powinny być utworzone bezpośrednio w funkcji start skryptu (przed wywołaniem funkcji x).
Natomiast gdy wywoła się skrypt ponownie to w folderze pojawiają się brakujące pliki...
Czy ktoś się orientuje co może być tego przyczyną lub gdzie powinienem szukać rozwiązania?
Co ciekawe, gdy wywołałem ten skrypt i brakowało mi plików to wyłączyłem wszystkie programy -> uruchomiłem komputer ponownie -> plików w dalszym ciągu nie było w folderze -> uruchomiłem ponownie skrypt -> pliki się pojawiły!! Wnioskuję więc, że to MT gdzieś je przechowuje, ale gdzie i dlaczego?!? :(

A przy okazji zapytam: Czy wiecie dlaczego po ściągnięciu historii EUR/USD M1 w MT brakuje mi danych od 13 stycznia 2012r? Ostatni słupek w tym dniu mam z godziny 14:06 a następny jest z już z 30 listopada 2012 z godziny 10:49...
pozdrawiam i z góry dzięki za pomoc

-- Dodano: pn 17-12-2012, 23:50 --

Ciągle nie wiem, gdzie jest haczyk, ale jak przerzuciłem zapisywanie do plików w funkcji start za funkcję x to wszystkie pliki się pojawiły tak jak należy...

Awatar użytkownika
Pierz Andrzej
Przyjaciel Forum
Przyjaciel Forum
Posty: 1200
Rejestracja: 02 lip 2006, 14:17

Re: pliki, które pojawiają się po ponownym uruchomieniu skry

Nieprzeczytany post autor: Pierz Andrzej »

tak bez kodu to ciezko cokolwiek powiedziec moze nie zamykasz dostepu do pliku a koniec ?
z poważaniem
Andrzej Pierz
FOREX-SERVICE

WojtexWay
Gaduła
Gaduła
Posty: 145
Rejestracja: 18 wrz 2012, 19:22

Re: pliki, które pojawiają się po ponownym uruchomieniu skry

Nieprzeczytany post autor: WojtexWay »

Kod w chwili obecnej ma sporo ponad 1000 linijek i ciągle rośnie :) - dlatego chyba nie jest to dobry pomysł, by go zamieszczać.
Też myślałem o tym, że jakiś plik może się nie zamykać, ale operacje zapisywania do pliku (poza 1) wykonywane są funkcją, która dba o to, by na końcu zamknąć plik. Niestety mam kilka funkcji do zapisywania zmiennych - co również utrudnia pokazanie kodu.
W celu lepszego zobrazowania w czym tkwi problem poniżej taki pseudo podobny fragment kodu:

Kod: Zaznacz cały

#define series 100
#define var	10
int start()	//to tylko prosty przykład!
	{
	//jakieś operacje np.
	double array1[series][var];
	double array2[series][var];
	double array3[series];
	jakas_funkcja(array,series,var); //zapisująca jakieś dane do tablicy
	inna_funkcja(array2,series,var);
	kolejna_funkcja(array3, series);
	//zapisujemy do pliku
	save_to_excel_2_dim(array1,series,var,"nazwa_pliku1.csv");
	save_to_excel_2_dim(array2,series,var,"nazwa_pliku2.csv");
	save_to_excel_1_dim(array3,series,"nazwa_pliku3.csv");
	save_to_file(array1,series,var,"nazwa_plikux.bin"); //zapisywanie do pliku (binarnie)
	//itd.
	
	//wywołujemy funkcję x
	funkcja_x(jakies_parametry); //funkcja m.in. tworzy około 7 plików (w tym 2 .bin)
	return(0);
	}
Powyższy kod sprawi, że w folderze pojawią się tylko pliki, które zostały utworzone w funkcji funkcja_x. Gdy odpalę kolejny raz skrypt to pojawią się brakujące pliki (nazwa_pliku1.csv, nazwa_pliku2.csv itd.) z pierwszego wywołania skryptu, ale będzie brakować tych plików z drugiego wywołania O_o
Natomiast jeśli zapisywanie do plików w skrypcie przerzucę na sam koniec tj. tak:

Kod: Zaznacz cały

#define series 100
#define var	10
int start()	//to tylko prosty przykłąd
	{
	//jakieś operacje np.
	double array1[series][var];
	double array2[series][var];
	double array3[series];
	jakas_funkcja(array,series,var);
	inna_funkcja(array2,series,var);
	kolejna_funkcja(array3, series);
	//itd.
	//wywołujemy funkcję x
	funkcja_x(jakies_parametry);
	//zapisujemy do pliku
	save_to_excel_2_dim(array1,series,var,"nazwa_pliku1.csv");
	save_to_excel_2_dim(array2,series,var,"nazwa_pliku2.csv");
	save_to_excel_1_dim(array3,series,"nazwa_pliku3.csv");
	save_to_file(array1,series,var,"nazwa_plikux.bin");
	
	return(0);
	}
To po wywołaniu skryptu wszystkie pliki prawidłowo pojawią się w folderze...

Najdziwniejsze jest to, że pliki się zapisują prawidłowo, tylko moment ich ukazania się w folderze jest "kopnięty"...

-- Dodano: wt 18-12-2012, 15:44 --

Nie wiem o co kaman, ale dziś powróciłem z wyglądem skryptu do wczorajszej "wadliwej" postaci i dziś działa już prawidłowo... Jak widać, niektóre problemy same się rozwiązują :]

Pozostaje więc jeszcze tylko pytanie dlaczego MetaTrader nie ściąga historii od 13 stycznia 2012 r? Może zna ktoś odpowiedź na to pytanie?

ODPOWIEDZ