Non lavoro con le operazioni sui file da molto tempo... Guarda, quando usi FileOpen() hai dichiarato un file di tipo CSV. Serve a specificare che tutti gli elementi scritti sono convertiti in stringhe unicode o ansi. Forse è qui che si trova il cane?
Fottuto Winnipuh!!!
È lì che è "sepolto" :) Ho aggiunto il parametro FILE_ANSI e tutto è andato liscio!
Da quello che posso vedere nel debugger (nella variabile STF legge il contenuto del file come unicode! All'apertura del file ho provato tutte le codifiche possibili, ma il risultato è lo stesso :( Il file stesso è scritto in codifica Windows.
Qualcuno ha idea di dove sia il problema?
Per default è scritto in UNICODE. Quindi impostate il flagFILE_ANSI:
int handle=FileOpen("Price Label\\"+_Symbol+tpl_ext,FILE_READ|FILE_CSV|FILE_ANSI,';',CP_ACP);
uintFileReadArray(
int file_handle, // handle файлаvoid array[], // массив для записиint start_item=0, // с какой позиции массива писатьint items_count=WHOLE_ARRAY// сколько читать
);
Domanda sulla dimensione di array[]: devo impostare la dimensione di array[] prima di usarlo inFileReadArray() o il "runtime terminale" si prenderà cura della sua dimensione in questo caso?
Yedelkin: Domanda sulla dimensione di array[]: devo impostare la dimensione di array[] prima di usarlo inFileReadArray() o se neoccuperà il "sistema di esecuzione terminale"?
No, la funzione distribuirà la memoria per la quantità necessaria di dati nel file.
A proposito, potete leggere gli array di strutture semplici allo stesso modo, se sono stati scritti lì.
La funzione FileReadArray() non riconosce il tipo di dati salvati, quindi fate attenzione, questa è una delle caratteristiche, potete salvare i duplicati e leggerli come una collocazione ed analizzarli in bit.
La funzione FileReadArray() non riconosce il tipo di dati salvati, quindi fate attenzione, questa è una delle caratteristiche, potete salvare i duplicati e leggerli in virgola mobile ed analizzarli in bit.
Quindi gli array dovrebbero essere dello stesso tipo quando si salva e si legge, ho ragione? È sufficiente?
boolFileCopy(
string src_filename, // имя файла-источникаint common_flag, // место действияstring dst_filename, // имя файла назначенияint mode_flags // способ доступа
);
La descrizione dice:
common_flag
[in] Flag che definisce la posizione del file. Se common_flag=FILE_COMMON, il file è nella cartella condivisa di tutti i terminali client. Altrimenti il file è nella cartella locale.
Se il file sorgente è nella cartella condivisa, allora common_flag=FILE_COMMON, questo è comprensibile. Ma se il file si trova in una cartella locale, quale flag dovrebbe essere specificato? Il parametro common_flag non è predefinito, il che significa che qualche valore deve essere specificato comunque.
Se il file sorgente è in una cartella condivisa, allora common_flag=FILE_COMMON, è chiaro. Ma se il file si trova in una cartella locale, quale flag dovrebbe essere specificato? Il parametro common_flag non è predefinito, quindi qualche valore deve essere specificato comunque.
Se FILE_COMMON non è specificato, il default è nella cartella locale.
Consenti l'uso dei cookie per accedere al sito MQL5.com.
Abilita le impostazioni necessarie nel browser, altrimenti non sarà possibile accedere.
Hai effettuato l'accesso. L'autenticazione a due fattori è stata disattivata. Configurala di nuovo e scansiona un nuovo codice QR, oppure continua con l'autenticazione a due fattori disattivata.
Non lavoro con le operazioni sui file da molto tempo... Guarda, quando usi FileOpen() hai dichiarato un file di tipo CSV. Serve a specificare che tutti gli elementi scritti sono convertiti in stringhe unicode o ansi. Forse è qui che si trova il cane?
Fottuto Winnipuh!!!
È lì che è "sepolto" :) Ho aggiunto il parametro FILE_ANSI e tutto è andato liscio!
FileOpen("Price Label\\"+_Symbol+tpl_ext,FILE_READ|FILE_CSV|FILE_ANSI,';',CP_ACP);
Yedelkin ,TheXpert grazie per la dritta!!!:)
is_vale:
...Da quello che posso vedere nel debugger (nella variabile STF legge il contenuto del file come unicode! All'apertura del file ho provato tutte le codifiche possibili, ma il risultato è lo stesso :( Il file stesso è scritto in codifica Windows.
Qualcuno ha idea di dove sia il problema?
Per default è scritto in UNICODE. Quindi impostate il flagFILE_ANSI:
Per default è scritto in UNICODE. Perciò impostate il flagFILE_ANSI:
Domanda sulla dimensione di array[]: devo impostare la dimensione di array[] prima di usarlo inFileReadArray() o se neoccuperà il "sistema di esecuzione terminale"?
No, la funzione distribuirà la memoria per la quantità necessaria di dati nel file.
A proposito, potete leggere gli array di strutture semplici allo stesso modo, se sono stati scritti lì.
La funzione FileReadArray() non riconosce il tipo di dati salvati, quindi fate attenzione, questa è una delle caratteristiche, potete salvare i duplicati e leggerli come una collocazione ed analizzarli in bit.
Fico.
La funzione FileReadArray() non riconosce il tipo di dati salvati, quindi fate attenzione, questa è una delle caratteristiche, potete salvare i duplicati e leggerli in virgola mobile ed analizzarli in bit.
Quindi gli array dovrebbero essere dello stesso tipo quando si salva e si legge, ho ragione? È sufficiente?
Fico.
Quindi gli array devono essere dello stesso tipo quando si salva e si legge, ho ragione? È sufficiente?
Sì.
La descrizione dice:
common_flag
[in] Flag che definisce la posizione del file. Se common_flag=FILE_COMMON, il file è nella cartella condivisa di tutti i terminali client. Altrimenti il file è nella cartella locale.
La descrizione dice:
Se il file sorgente è in una cartella condivisa, allora common_flag=FILE_COMMON, è chiaro. Ma se il file si trova in una cartella locale, quale flag dovrebbe essere specificato? Il parametro common_flag non è predefinito, quindi qualche valore deve essere specificato comunque.