Ho provato a scrivere una stringa di 200 caratteri in un file e ho ricevuto un errore di superamento della dimensione dell'array alla riga 214 della libreria. Risulta che la dimensione dell'intestazione non viene presa in considerazione quando si determina la dimensione dell'array ricevente.
string control_text = "La nostra mamma piange forte perché tutti mangiano a sbafo. Zitta mamma, non piangere! Gli altri hanno la stessa schifezza...".;
string NAME_MAPPING = "Local\\" + Symbol() + "_" + (string)ChartID();
uchar Data_sender[];
int size_data = StringToCharArray(control_text, Data_sender);
//--- Creare un oggetto di memoria
CMemMapFile* MappingFile = new CMemMapFile();
//--- Creare un file per la registrazione long err = MappingFile.Open(NAME_MAPPING, size_data+4, modeCreate);
//--- Scrivere i dati sul file
err = MappingFile.Write(Data_sender, size_data);
//--- Chiudere il record
MappingFile.Close();
//--- Cancellare il puntatore delete MappingFile;
uchar Data_receiver[];
ArrayResize(Data_receiver, size_data);
//--- Creare un oggetto di memoria
CMemMapFile* MF = new CMemMapFile();
//--- Aprire il file per la lettura
err = MF.Open(NAME_MAPPING, size_data+4, modeOpen);
//--- Сдвигаем указатель чтения на начало файла
MF.Seek(0,SEEK_SET);
//--- Читаем данные из файла
err=MF.Read(Data_receiver, size_data);
//--- Chiudere il file
MF.Close();
//--- Cancellare il puntatore delete MF;
Print(CharArrayToString(Data_receiver));
Ho capito le dimensioni. Ma ho provato a leggere il file con un altro oggetto e ho ottenuto il silenzio sull'output. Dov'è l'errore?
si sta cercando di aprire qualcosa che non esiste.
Ok, questo ha senso. Stavo seguendo l'analogia del lavoro con i file normali, quando la chiusura porta esattamente alla chiusura e al rilascio, non all'eliminazione del file.
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.
Almeno non si cerca di leggere un file in memoria dopo aver riavviato il computer...
Quindi mi sembra di capire che non posso trasferire dati in memoria tra due terminali in questo modo?
E qual è il modo corretto? Devo implementare il trasferimento di una stringa di testo da un terminale all'altro utilizzando MemMapLib.mqh.
Quindi mi sembra di capire che non è possibile trasferire dati attraverso la memoria tra due terminali in questo modo?
è possibile
È necessario implementare il trasferimento di una riga di testo da un terminale all'altro utilizzando MemMapLib.mqh.
creare un file, scriverlo e poi leggerlo.
più o meno in questo ordine
https://www.mql5.com/it/code/10571
Qual è la quantità massima di dati che posso scrivere in un file aperto in memoria e poi leggere?
Dopo 4096 l'Expert Advisor inizia a bloccarsi a questo punto.
Ciao, nel codice sopra "return(0)" dovrebbe essere corretto in "return(m_hmem)", altrimenti non restituisce l'handle del file mappato in memoria.
Ho provato a scrivere una stringa di 200 caratteri in un file e ho ricevuto un errore di superamento della dimensione dell'array alla riga 214 della libreria. Risulta che la dimensione dell'intestazione non viene presa in considerazione quando si determina la dimensione dell'array ricevente.
Funziona.
non funziona.
Dammi il codice e il mandrino
Non funziona.
Dammi il codice e la stampa
Ho capito le dimensioni. Ma ho provato a leggere il file con un altro oggetto e ho ottenuto il silenzio sull'output. Dov'è l'errore?
Ho capito le dimensioni. Ma ho provato a leggere il file con un altro oggetto e ho ottenuto il silenzio in uscita. Dov'è l'errore?
//--- Chiudere il recordNon si chiama chiusura di un record, ma chiusura ed eliminazione di un file.
Ecco perché
//--- Aprire il file per la letturaper cui si sta cercando di aprire qualcosa che non esiste.non si chiama chiusura del record, ma chiusura e cancellazione del file.
ecco perché
si sta cercando di aprire qualcosa che non esiste.Ok, questo ha senso. Stavo seguendo l'analogia del lavoro con i file normali, quando la chiusura porta esattamente alla chiusura e al rilascio, non all'eliminazione del file.