Scambio di dati tra due EA in esecuzione su terminali diversi - pagina 8

 
zhuki >>:

В личке

Grazie.

 
Questo non è il codice sorgente, né una DLL. Questa è un'intestazione incorniciata di una DLL sorgente che ha richiesto più di una settimana per essere scritta. C'è voluta una settimana per scrivere la classe per la mappatura. Soprattutto per pensare alla strutturazione.
E ci sono voluti 60 minuti per scrivere 60 funzioni. Ci sono un paio di righe in ogni funzione.

//| FUNZIONI GENERALI.

//| 1. La funzione crea o apre un file mapping per descrittore di file utente e/o nome del file mapping con la possibilità di |
//| cambiamento preliminare della dimensione della memoria allocata per esso. Se non esiste una mappatura dei file, ne viene creata una.
La funzione //| restituisce il descrittore del sistema di mappatura dei file se ha successo, altrimenti NULL.
//| HANDLE FileMappingCreate(const int hFileUser, // // descrittore del file system dell'utente.
//| const char *szNameFileMapping, //Nome del file proiettato.
//| const const int nBytes); // Quantità di memoria da riservare per la mappatura dei file.

//| 2. La funzione apre il file di mappatura. La funzione restituisce un descrittore di sistema di mappatura dei file se ha successo, altrimenti NULL.
//| HANDLE FileMappingOpen(const char *szNameFileMapping); //Nome del file da proiettare.

//| 3. La funzione cancella la mappatura dei file in base al suo nome.
//| La funzione ritorna: 1 completamento con successo;
//| 0 altri errori; |
//| -1 indirizzo iniziale non ricevuto;
//| -2 memoria non cancellata;
//| -3 errore di mappatura dei file.
//| int FileMappingClear(const char *szNameFileMapping); // nome della mappatura dei file.

//| 4. La funzione chiude la mappatura del file in base al suo nome. La funzione restituisce TRUE se ha successo, altrimenti FALSE.
//| bool FileMappingClose(const char *szNameFileMapping); //Nome del file mapping.

UNA //| FUNZIONE GENERICA PER ACCEDERE ALLA RAPPRESENTAZIONE DI MAPPATURA DEL FILE PROIETTATA NELLO SPAZIO DEGLI INDIRIZZI DEL PROCESSO CHIAMANTE.

//| 5. La funzione crea un file mapping dal descrittore di file dell'utente e/o dal nome del file mapping con la possibilità di cambiare in anticipo la
//| dimensione della memoria allocata per esso e mappa la rappresentazione proiettata del file nello spazio degli indirizzi del processo chiamante.
La funzione //| restituisce un puntatore al primo byte dell'area di memoria di mappatura se ha successo, altrimenti NULL.
//| char *FileMappingCreateViewOfFile(const int hFileUser, ///The system descriptor of the user file.
//| const char *szNameFileMapping, //Nome del file proiettato.
//| const const int nBytes); // Quantità di memoria da riservare per la mappatura dei file.

//| 6. La funzione apre la mappatura del file in base al suo nome e mappa la rappresentazione del file proiettata nello spazio degli indirizzi del processo chiamante.
//| La funzione restituisce un puntatore al primo byte dell'area di memoria di mappatura della rappresentazione del file proiettato se ha successo, altrimenti NULL.
//| char *FileMappingOpenViewOfFile(const char *szNameFileMapping); // Nome del file proiettato.

//| 7. La funzione mappa la rappresentazione del file proiettato nello spazio degli indirizzi del processo chiamante.
La funzione //| restituisce TRUE in caso di successo o FALSE in caso di errore.
//| bool FileMappingViewOfFile(const char *pcAddress); // Puntatore al primo byte dell'area di memoria della rappresentazione proiettata del file restituita da
//| // funzioni FileMappingCreateViewOfFile(), FileMappingOpenViewOfFile().

//| 8. La funzione annulla la presentazione del file proiettato nello spazio di indirizzi del processo chiamante.
//| La funzione restituisce TRUE in caso di successo o FALSE in caso di errore.
//| bool FileMappingUnViewOfFile(const char *pcAddress); // Puntatore al primo byte dell'area di memoria della rappresentazione proiettata del file,
//| // restituito da FileMappingCreateViewOfFile(), FileMappingOpenViewOfFile().

//| FUNZIONI PER SCRIVERE NUMERI E STRINGHE NEL FILE MAPPING.

//| 9. La funzione apre un file di mappatura e vi scrive un valore logico BOOL dal byte specificato in memoria.
//| Se non esiste una mappatura dei file, viene creata. La funzione converte un numero di tipo INT in BOOL per scrivere nel file di mappatura.
//| La funzione ritorna: 1 completamento con successo;
//| 0 altri errori;
//| -1 più dati della memoria allocata;
//| -2 indirizzo iniziale non ricevuto;
//| -3 valore non scritto in memoria;
//| -4 errore di mappatura del file.
//| int FileMappingWriteBoolValue(const char *szNameFileMapping, //Nome del file proiettato.
//| const int nMemorySize, // Quantità di memoria riservata per la mappatura dei file.
//| const int nStartByte, // Numero di byte dall'inizio della memoria allocata, da cui il numero sarà scritto.
//| const int nValue); // Valore logico da scrivere nella mappatura del file.

//|10. La funzione apre la mappatura del file e vi scrive il numero del tipo CHAR dal byte specificato in memoria.
//| Se non esiste una mappatura dei file, ne viene creata una. La funzione converte un numero INT in CHAR per la scrittura nel file mapping.
//| La funzione ritorna: 1 completamento con successo;
//| 0 altri errori;
//| -1 numero di dati maggiore della memoria allocata;
//| -2 indirizzo iniziale non ricevuto;
//| -3 valore non scritto in memoria;
//| -4 errore di mappatura del file.
//| int FileMappingWriteCharValue(const char *szNameFileMapping, //nome del file proiettato.
//| const int nMemorySize, // Quantità di memoria riservata per la mappatura dei file.
//| const int nStartByte, // Numero di byte dall'inizio della memoria allocata, da cui il numero sarà scritto.
//| const int nValue); // Un numero intero da scrivere nella mappatura del file.

//|11. La funzione apre il file di mappatura e vi scrive il numero del tipo SHORT dal byte specificato in memoria.
//| Se non c'è una mappatura dei file, ne viene creata una. La funzione converte un numero INT in SHORT per la scrittura nel file mapping.
//| La funzione ritorna: 1 completamento con successo;
//| 0 altri errori;
//| -1 numero di dati maggiore della memoria allocata;
//| -2 indirizzo iniziale non ricevuto;
//| -3 valore non scritto in memoria;
//| -4 errore di mappatura del file.
//| int FileMappingWriteShortValue(const char *szNameFileMapping, //nome del file proiettato.
//| const int nMemorySize, // Quantità di memoria riservata per la mappatura dei file.
//| const int nStartByte, // Numero di byte dall'inizio della memoria allocata, da cui il numero sarà scritto.
//| const int nValue); // Numero intero da scrivere nel file mapping.

//|12. La funzione apre il file di mappatura e vi scrive il numero di tipo INT dal byte specificato in memoria.
//| Se non esiste una mappatura dei file, ne viene creata una.
//| La funzione ritorna: 1 completamento con successo;
//| 0 altri errori; |
//| -1 la quantità di dati è maggiore della memoria allocata;
//| -2 indirizzo iniziale non ricevuto;
//| -3 valore non scritto in memoria;
//| -4 errore di mappatura del file.
//| int FileMappingWriteIntValue(const char *szNameFileMapping, //nome del file proiettato.
//| const int nMemorySize, // Quantità di memoria riservata per la mappatura dei file.
//| const int nStartByte, // Numero di byte dall'inizio della memoria allocata, da cui il numero sarà scritto.
//| const int nValue); // Un numero intero da scrivere nella mappatura del file.

//|13. La funzione apre la mappatura del file e vi scrive un numero di tipo FLOAT dal byte specificato in memoria.
//| Se non c'è una mappatura dei file, ne viene creata una. La funzione converte un numero DOUBLE in FLOAT per la scrittura nel file mapping.
//| La funzione ritorna: 1 completamento con successo;
//| 0 altri errori;
//| -1 numero di dati maggiore della memoria allocata;
//| -2 indirizzo iniziale non ricevuto;
//| -3 valore non scritto in memoria;
//| -4 errore di mappatura del file.
//| int FileMappingWriteFloatValue(const char *szNameFileMapping, //nome del file proiettato.
//| const int nMemorySize, // Quantità di memoria riservata per la mappatura dei file.
//| const int nStartByte, // Numero di byte dall'inizio della memoria allocata, da cui il numero sarà scritto.
//| const double dValue); // Numero a doppia precisione da scrivere nella mappatura del file.

//|14. La funzione apre un file di mappatura e vi scrive il numero di tipo DOUBLE dal byte specificato in memoria.
//| Se non esiste una mappatura di file, viene creata una mappatura di file.
//| La funzione ritorna: 1 completamento con successo;
//| 0 altri errori;
//| -1 numero di dati maggiore della memoria allocata;
//| -2 indirizzo iniziale non ricevuto;
//| -3 valore non scritto in memoria;
//| -4 errore di mappatura del file.
//| int FileMappingWriteDoubleValue(const char *szNameFileMapping, //nome del file proiettato.
//| const int nMemorySize, // Quantità di memoria riservata per la mappatura dei file.
//| const int nStartByte, // Numero di byte dall'inizio della memoria allocata, da cui il numero sarà scritto.
//| const double dValue); // Numero di doppia precisione per la scrittura su file mapping.

//|15. La funzione apre un file di mappatura e vi scrive una stringa dal byte specificato in memoria. Se non c'è una mappatura dei file, ne viene creata una.
//| La funzione ritorna: 1 completamento con successo;
//| 0 altri errori;
//| -1 numero di caratteri da scrivere più della lunghezza della stringa;
//| -2 lunghezza della stringa più della memoria allocata;
//| -3 indirizzo iniziale non ricevuto;
//| -4 valore in memoria non scritto;
//| -5 annullamento del file mapping fallito.
//| int FileMappingWriteString(const char *szNameFileMapping, //| nome del file progettato.
//| const int nMemorySize, // Quantità di memoria da riservare per la mappatura dei file.
//| const int nStartByte, // Numero di byte dall'inizio della memoria allocata, da cui sarà scritta la stringa.
//| const char *szString); // Stringa per la scrittura della mappatura del file.

//| FUNZIONI PER SCRIVERE NUMERI E STRINGHE NELLA RAPPRESENTAZIONE DI MAPPATURA DEL FILE PROIETTATA NELLO SPAZIO DEGLI INDIRIZZI DEL PROCESSO CHIAMANTE.

//|16. La funzione scrive un valore logico BOOL dal byte specificato in memoria alla mappatura del file nello spazio di indirizzo iniziale del processo chiamante.
//| La funzione è destinata ad essere usata nei cicli. La funzione converte un numero di tipo INT in BOOL per la scrittura nel file mapping.
//| La funzione ritorna: 1 completamento con successo;
//| 0 altri errori;
//| -1 più dati della memoria allocata;
//| -2 nessun valore è scritto in memoria.
//| int FileMappingWriteSimpleBoolValue(const char *pcAddress, // puntatore al byte dell'area di memoria della rappresentazione proiettata del file,
//| // da cui i dati saranno scritti.
//| const int nValue); // Valore logico da scrivere nel file di mappatura.

//|17. La funzione scrive il numero del tipo CHAR dal byte specificato in memoria nel file mappato dall'indirizzo iniziale dello spazio di processo chiamante.
//| La funzione è destinata ad essere usata nei cicli. La funzione converte un numero INT in CHAR per la scrittura nel file mapping.
//| La funzione ritorna: 1 completamento con successo;
//| 0 altri errori;
//| -1 numero di dati maggiore della memoria allocata;
//| -2 valore non scritto in memoria.
//| int FileMappingWriteSimpleCharValue(const char *pcAddress, // puntatore al byte dell'area di memoria della rappresentazione proiettata del file,
//| // da cui i dati saranno scritti.
//| const int nValue); // Valore logico da scrivere nel file di mappatura.

//|18. La funzione scrive un numero di tipo SHORT dal byte specificato nella memoria nel file mappato dall'indirizzo iniziale dello spazio di processo chiamante.
//| La funzione è destinata ad essere usata nei cicli. La funzione converte un numero di tipo INT in SHORT per la scrittura nel file mapping.
//| La funzione ritorna: 1 completamento con successo;
//| 0 altri errori;
//| -1 più dati della memoria allocata;
//| -2 nessun valore è scritto in memoria.
//| int FileMappingWriteSimpleShortValue(const char *pcAddress, // puntatore al byte dell'area di memoria della rappresentazione proiettata del file,
//| // da cui i dati saranno scritti.
//| const int nValue); // valore logico per la scrittura nel file mapping.

//|19. La funzione scrive il numero di tipo INT dal byte specificato in memoria al file di mappatura all'indirizzo dello spazio iniziale del processo chiamante.
//| La funzione è destinata ad essere usata nei cicli.
//| La funzione ritorna: 1 completamento con successo;
//| 0 altri errori;
//| -1 più dati della memoria allocata;
//| -2 nessun valore viene scritto in memoria.
//| int FileMappingWriteSimpleIntValue(const char *pcAddress, // puntatore al byte dell'area di memoria della rappresentazione proiettata del file,
//| // da cui i dati saranno scritti.
//| const int nValue); // Un numero intero da scrivere nella mappatura del file.
 
//|20. La funzione scrive un numero di tipo FLOAT nella mappatura del file all'indirizzo dello spazio iniziale del processo chiamante dal byte specificato in memoria.
//| La funzione converte un numero DOUBLE in FLOAT per la scrittura nel file mapping. La funzione è destinata ad essere utilizzata nei cicli.
//| La funzione ritorna: 1 completamento con successo;
//| 0 altri errori;
//| -1 più dati della memoria allocata;
//| -2 nessun valore è scritto in memoria.
//| int FileMappingWriteSimpleFloatValue(const char *pcAddress, // puntatore al byte dell'area di memoria della rappresentazione proiettata del file,
//| // da cui i dati saranno scritti.
//| const double dValue); // numero a doppia precisione da scrivere nel file di mappatura.

//|21. La funzione scrive un numero di tipo DOUBLE dal byte specificato in memoria nel file mappato dall'indirizzo dello spazio iniziale del processo chiamante.
//| La funzione è destinata ad essere usata nei cicli.
//| La funzione ritorna: 1 completamento con successo;
//| 0 altri errori;
//| -1 più dati della memoria allocata;
//| -2 nessun valore è scritto in memoria.
//| int FileMappingWriteSimpleDoubleValue(const char *pcAddress, // puntatore al byte dell'area di memoria della rappresentazione proiettata del file,
//| // da cui i dati saranno scritti.
//| const double dValue); // numero a doppia precisione da scrivere nel file di mappatura.

//|22. La funzione scrive una stringa dal byte specificato in memoria alla mappatura del file all'indirizzo dello spazio iniziale del processo chiamante.
//| La funzione è destinata ad essere usata nei cicli.
//| La funzione ritorna: 1 completamento con successo;
//| 0 altri errori;
//| -1 più dati della memoria allocata;
//| -2 nessun valore è scritto in memoria.
//| int FileMappingWriteSimpleString(const char *pcAddress, // puntatore al byte dell'area di memoria della rappresentazione proiettata del file,
//| // da cui i dati saranno scritti.
//| const char *szString); // Una stringa da scrivere nel file di mappatura.

//| FUNZIONI PER LEGGERE NUMERI E STRINGHE DAL FILE DI MAPPATURA.

//|23. La funzione apre un file mapping e legge da esso un valore logico BOOL dal byte specificato in memoria.
//| Se il file mapping non esiste, viene creato. La funzione restituisce il valore letto o FALSE in caso di errore.
//| bool FileMappingReadBoolValue(const char *szNameFileMapping, //Nome del file da proiettare.
//| const int nMemorySize, // Quantità di memoria da riservare per la mappatura dei file.
//| const int nStartByte); // Numero di byte dall'inizio della memoria allocata, da cui verrà letto il numero.

//|24. La funzione apre un file mapping e legge da esso un numero di tipo CHAR dal byte specificato in memoria.
//| Se non c'è una mappatura dei file, ne viene creata una. La funzione restituisce il valore letto o NULL se c'è un errore.
//| char FileMappingReadCharValue(const char *szNameFileMapping, //Nome del file da proiettare.
//| const int nMemorySize, // Quantità di memoria da riservare per la mappatura dei file.
//| const int nStartByte); // Numero di byte dall'inizio della memoria allocata da cui verrà letto un numero.

//|25. La funzione apre un file mapping e legge da esso un numero di tipo SHORT dal byte specificato in memoria.
//| Se non c'è una mappatura dei file, ne viene creata una. La funzione restituisce il valore letto o NULL se c'è un errore.
//| short FileMappingReadShortValue(const char *szNameFileMapping, //Nome del file da proiettare.
//| const int nMemorySize, // Quantità di memoria da riservare per la mappatura dei file.
//| const int nStartByte); // Numero di byte dall'inizio della memoria allocata, da cui verrà letto un numero.

//|26. La funzione apre un file di mappatura e legge da esso il numero di tipo INT dal byte specificato nella memoria.
//| Se non c'è una mappatura dei file, ne viene creata una. La funzione restituisce il valore letto o NULL in caso di errore.
//| int FileMappingReadIntValue(const char *szNameFileMapping, //Nome del file da proiettare.
//| const int nMemorySize, // Quantità di memoria da riservare per la mappatura dei file.
//| const int nStartByte); // Numero di byte dall'inizio della memoria allocata, da cui verrà letto un numero.

//|27. La funzione apre un file mapping e legge il numero del tipo FLOAT dal byte specificato nella memoria. Se non c'è una mappatura dei file, ne viene creata una.
//| La funzione restituisce il valore letto o NULL in caso di errore. La funzione converte un numero di tipo FLOAT dalla mappatura del file a DOUBLE.
//| double FileMappingReadFloatValue(const char *szNameFileMapping, //Nome del file da proiettare.
//| const int nMemorySize, //Numero di memoria riservata per la mappatura dei file.
//| const int nStartByte); // Numero di byte dall'inizio della memoria allocata, da cui verrà letto il numero.

//|28. La funzione apre un file mapping e legge da esso un numero di tipo DOUBLE dal byte specificato in memoria.
//| Se non esiste una mappatura dei file, ne viene creata una. La funzione restituisce il valore letto o NULL in caso di errore.
//| double FileMappingReadDoubleValue(const char *szNameFileMapping, //Nome del file da proiettare.
//| const int nMemorySize, // Quantità di memoria da riservare per la mappatura dei file.
//| const int nStartByte); // Numero di byte dall'inizio della memoria allocata, da cui verrà letto il numero.

//|29. La funzione apre la mappatura del file e ne legge una riga dal byte specificato in memoria. Se non c'è una mappatura dei file, ne viene creata una.
//| La funzione restituisce un puntatore all'inizio della stringa.
//| In caso di errore, la funzione ritorna: "Error_1" la lunghezza della stringa è più lunga della memoria allocata;
//| "Error_2" indirizzo iniziale non ricevuto;
//| "Error_3" messaggio dalla memoria non letto;
//| "Error_4" errore di mappatura del file.
//| char *FileMappingReadString(const char *szNameFileMapping, //Nome del file proiettato.
//| const int nMemorySize, // Quantità di memoria da riservare per la mappatura dei file.
//| const int nStartByte, // Numero di byte dall'inizio della memoria allocata, da cui la stringa sarà letta.
//| const int nLengthString); // Lunghezza della stringa da leggere in caratteri (byte).

//| FUNZIONI PER LEGGERE NUMERI E STRINGHE DALLA RAPPRESENTAZIONE PROIETTATA DEL FILE NELLO SPAZIO DEGLI INDIRIZZI DEL PROCESSO CHIAMANTE.

//|30. La funzione legge dal file di mappatura allo spazio di indirizzo iniziale del processo chiamante un valore logico BOOL dal byte specificato in memoria.
//| La funzione è destinata ad essere usata nei cicli. La funzione restituisce un valore letto o FALSE in caso di errore.
//| bool FileMappingReadSimpleBoolValue(const char *pcAddress); // Puntatore al byte dell'area di memoria della rappresentazione proiettata del file,
//| // da cui i dati saranno scritti.

//|31. La funzione apre il file mapping e legge da esso il numero del tipo CHAR dal byte indicato nella memoria.
//| La funzione è destinata ad essere usata nei cicli. La funzione restituisce un valore letto o NULL in caso di errore.
//| char FileMappingReadSimpleCharValue(const char *pcAddress); // Puntatore al byte dell'area di memoria della rappresentazione proiettata del file,
//| // da cui i dati saranno scritti.

//|32. La funzione apre il file mapping e legge da esso il numero del tipo SHORT dal byte specificato nella memoria.
//| La funzione è destinata ad essere usata nei cicli. La funzione restituisce un valore letto o NULL in caso di errore.
//| short FileMappingReadSimpleShortValue(const char *pcAddress); // Puntatore al byte dell'area di memoria della rappresentazione proiettata del file,
//| // da cui i dati saranno scritti.

//|33. La funzione apre il file mapping e legge da esso il numero di tipo INT dal byte indicato nella memoria.
//| La funzione è destinata ad essere usata nei cicli. La funzione restituisce il valore letto o NULL in caso di errore.
//| int FileMappingReadSimpleIntValue(const char *pcAddress); // Puntatore al byte dell'area di memoria della rappresentazione proiettata del file,
//| // da cui i dati saranno scritti.

//|33. La funzione apre il file mapping e legge da esso il numero di tipo INT dal byte indicato nella memoria.
//| La funzione è destinata ad essere usata nei cicli. La funzione restituisce il valore letto o NULL in caso di errore.
//| int FileMappingReadSimpleIntValue(const char *pcAddress); // Puntatore al byte dell'area di memoria della rappresentazione proiettata del file,
//| // da cui i dati saranno scritti.

//|34. La funzione apre il file mapping e legge da esso il numero del tipo FLOAT dal byte indicato nella memoria. La funzione è destinata ad essere utilizzata nei cicli.
//| La funzione restituisce il valore letto o NULL in caso di errore. La funzione converte un numero di tipo FLOAT dalla mappatura del file a DOUBLE.
//| double FileMappingReadSimpleFloatValue(const char *pcAddress); // Puntatore al byte dell'area di memoria della rappresentazione proiettata del file,
//| // da cui i dati saranno scritti.

//|35. La funzione apre il file mapping e legge da esso il numero del tipo DOUBLE dal byte indicato nella memoria.
//| La funzione è destinata ad essere usata nei cicli. La funzione restituisce un valore letto o NULL in caso di errore.
//| double FileMappingReadSimpleDoubleValue(const char *pcAddress); // Puntatore al byte dell'area di memoria della rappresentazione proiettata del file,
//| // da cui i dati saranno scritti.

//|36. La funzione apre la mappatura del file e ne legge una riga dal byte indicato nella memoria. La funzione è destinata ad essere utilizzata nei cicli.
//| La funzione restituisce un puntatore all'inizio della stringa.
//| In caso di errore, la funzione ritorna: "Error_1" la lunghezza della stringa supera la memoria allocata;
//| "Error_2" il messaggio dalla memoria non viene letto;
//| char *FileMappingReadSimpleString(const char *pcAddress); // Puntatore al byte dell'area di memoria della rappresentazione proiettata del file,
//| // da cui verrà eseguita la registrazione dei dati.

//| FUNZIONE PER SCRIVERE GLI ARRAY NEL FILE MAPPING.

//|37 La funzione apre un file di mappatura e scrive un array con dati di tipo BOOL in esso dal byte specificato nella memoria.
//| Se non c'è una mappatura dei file, ne viene creata una. La funzione converte i dati dell'array INT in BOOL per la scrittura nel file mapping.
//| La funzione ritorna: 1 completamento con successo;
//| 0 altri errori;
//| -1 numero di celle da scrivere più della dimensione dell'array;
//| -2 numero di dati più della memoria allocata;
//| -3 indirizzo iniziale non ricevuto;
//| -4 array non scritto in memoria;
//| -5 errore di mappatura del file.
//| int FileMappingWriteBoolArray(const char *szNameFileMapping, //nome del file che viene proiettato.
//| const int nMemorySize, // Quantità di memoria riservata per la mappatura dei file.
//| const int nStartByte, // Numero di byte dall'inizio della memoria allocata, da cui sarà scritto l'array.
//| const int *aiArray, // Puntatore all'array con dati logici BOOL da scrivere nel file di mappatura.
//| const int nSizeBuffer); // Dimensione della matrice.

//|38. La funzione apre un file mapping e scrive in esso una matrice con dati di tipo CHAR dal byte specificato in memoria.
Se //| non c'è una mappatura dei file, ne viene creata una. La funzione converte i dati dell'array INT in CHAR per la scrittura nel file mapping.
//| La funzione ritorna: 1 completamento con successo;
//| 0 altri errori;
//| -1 numero di celle da scrivere più della dimensione dell'array;
//| -2 numero di dati più della memoria allocata;
//| -3 indirizzo iniziale non ricevuto;
//| -4 array non scritto in memoria;
//| -5 errore di mappatura del file.
//| int FileMappingWriteCharArray(const char *szNameFileMapping, //Nome del file progettato.
//| const int nMemorySize, // Quantità di memoria riservata per la mappatura dei file.
//| const int nStartByte, // Numero di byte dall'inizio della memoria allocata, da cui sarà scritto l'array.
//| const int *aiArray, // Puntatore all'array con dati di tipo CHAR da scrivere nel file di mappatura.
//| const int nSizeBuffer); // Dimensione della matrice.

//|39. La funzione apre un file di mappatura e scrive in esso un array con dati di tipo SHORT dal byte specificato in memoria.
Se //| non c'è una mappatura dei file, ne viene creata una. La funzione converte i dati dell'array INT in SHORT per la scrittura nel file mapping.
//| La funzione ritorna: 1 completamento con successo;
//| 0 altri errori;
//| -1 numero di celle da scrivere più della dimensione dell'array;
//| -2 numero di dati più della memoria allocata;
//| -3 indirizzo iniziale non ricevuto;
//| -4 array non scritto in memoria;
//| -5 errore di mappatura del file.
//| int FileMappingWriteShortArray(const char *szNameFileMapping, //nome del file proiettato.
//| const int nMemorySize, // Quantità di memoria riservata per la mappatura dei file.
//| const int nStartByte, // Numero di byte dall'inizio della memoria allocata, da cui sarà scritto l'array.
//| const int *aiArray, // Puntatore all'array con dati di tipo SHORT da scrivere nel file mapping.
//| const int nSizeBuffer); // Dimensione della matrice.
 
//|40. La funzione apre un file di mappatura e vi scrive un array con dati di tipo INT dal byte specificato in memoria.
Se //| non c'è una mappatura dei file, viene creata.
//| La funzione ritorna: 1 completamento con successo;
//| 0 altri errori;
//| -1 numero di celle da scrivere più della dimensione dell'array;
//| -2 numero di dati più della memoria allocata;
//| -3 indirizzo iniziale non ricevuto;
//| -4 array non scritto in memoria;
//| -5 annulla mappatura file fallita.
//| int FileMappingWriteIntArray(const char *szNameFileMapping, //nome del file proiettato.
//| const int nMemorySize, // Quantità di memoria riservata per la mappatura dei file.
//| const int nStartByte, // Numero di byte dall'inizio della memoria allocata, da cui sarà scritto l'array.
//| const int *aiArray, // Puntatore all'array con dati di tipo INT da scrivere nel file mapping.
//| const int nSizeBuffer); // Dimensione della matrice.

//|41. La funzione apre la mappatura del file e scrive un array con dati di tipo FLOAT in esso dal byte specificato in memoria.
Se //| non c'è una mappatura dei file, ne viene creata una. La funzione converte i dati dell'array DOUBLE in FLOAT per la scrittura nel file mapping.
//| La funzione ritorna: 1 completamento con successo;
//| 0 altri errori;
//| -1 numero di celle da scrivere più della dimensione dell'array;
//| -2 numero di dati più della memoria allocata;
//| -3 indirizzo iniziale non ricevuto;
//| -4 array non scritto in memoria;
//| -5 errore di mappatura del file.
//| int FileMappingWriteFloatArray(const char *szNameFileMapping, //Nome del file progettato.
//| const int nMemorySize, // Quantità di memoria riservata per la mappatura dei file.
//| const int nStartByte, //Numero di byte dall'inizio della memoria allocata, //dove l'array sarà scritto.
//| const double *adArray, // Puntatore all'array con dati di tipo FLOAT da scrivere nel file mapping.
//| const int nSizeBuffer); // Dimensione della matrice.

//|42. La funzione apre un file di mappatura e scrive in esso un array con dati di tipo DOUBLE dal byte specificato in memoria.
Se //| non c'è una mappatura dei file, ne viene creata una.
//| La funzione ritorna: 1 completamento con successo;
//| 0 altri errori;
//| -1 numero di celle da scrivere più della dimensione dell'array;
//| -2 numero di dati più della memoria allocata;
//| -3 indirizzo iniziale non ricevuto;
//| -4 array non scritto in memoria;
//| -5 annulla mappatura file fallita.
//| int FileMappingWriteDoubleArray(const char *szNameFileMapping, //Nome del file progettato.
//| const int nMemorySize, // Quantità di memoria riservata per la mappatura dei file.
//| const int nStartByte, //Numero di byte dall'inizio della memoria allocata, //dove l'array sarà scritto.
//| const double *adArray, // Puntatore all'array con dati di tipo DOUBLE da scrivere nel file mapping.
//| const int nSizeBuffer); // Dimensione della matrice.

//| FUNZIONI PER SCRIVERE ARRAY NELLA RAPPRESENTAZIONE DI MAPPATURA DEL FILE PROIETTATA NELLO SPAZIO DI INDIRIZZI DEL PROCESSO CHIAMANTE.

//|43. La funzione scrive un array con dati di tipo BOOL dal byte specificato nella memoria nel file mappato dallo spazio di indirizzo iniziale del processo chiamante.
//| La funzione è destinata ad essere usata nei cicli. La funzione converte i dati dell'array INT in BOOL per la scrittura nel file mapping.
//| La funzione ritorna: 1 completamento con successo;
//| 0 altri errori;
//| -1 numero di celle da scrivere più della dimensione dell'array;
//| -2 numero di dati più della memoria allocata;
//| -3 array non scritto in memoria.
//| int FileMappingWriteSimpleBoolArray(const char *pcAddress, // puntatore al byte dell'area di memoria della rappresentazione proiettata del file,
//| // da cui i dati saranno scritti.
//| const int *aiArray, // Puntatore all'array con dati logici BOOL da scrivere nel file di mappatura.
//| const int nSizeBuffer); // Dimensione della matrice.

//|44. La funzione scrive un array con dati di tipo BOOL dal byte specificato nella memoria al file mappato dall'indirizzo dello spazio iniziale del processo chiamante.
//| La funzione è destinata ad essere usata nei cicli. La funzione converte i dati dell'array INT in CHAR per la scrittura nel file mapping.
//| La funzione ritorna: 1 completamento con successo;
//| 0 altri errori;
//| -1 numero di celle da scrivere più della dimensione dell'array;
//| -2 numero di dati più della memoria allocata;
//| -3 array non scritto in memoria.
//| int FileMappingWriteSimpleCharArray(const char *pcAddress, // puntatore al byte dell'area di memoria della rappresentazione proiettata del file,
//| // da cui i dati saranno scritti.
//| const int *aiArray, // puntatore all'array con dati di tipo CHAR da scrivere nel file di mappatura.
//| const int nSizeBuffer); // Dimensione della matrice.

//|45. La funzione scrive un array con dati di tipo BOOL dal byte specificato nella memoria nel file mappato dall'indirizzo dello spazio iniziale del processo chiamante.
//| La funzione è destinata ad essere usata nei cicli. La funzione converte i dati dell'array INT in SHORT per la scrittura nel file mapping.
//| La funzione ritorna: 1 completamento con successo;
//| 0 altri errori;
//| -1 numero di celle da scrivere oltre la dimensione dell'array;
//| -2 numero di dati oltre la memoria allocata;
//| -3 array non scritto in memoria.
//| int FileMappingWriteSimpleShortArray(const char *pcAddress, // puntatore al byte dell'area di memoria della rappresentazione proiettata del file,
//| // da cui i dati saranno scritti.
//| const int *aiArray, // Puntatore all'array con dati di tipo SHORT da scrivere nel file mapping.
//| const int nSizeBuffer); // Dimensione della matrice.

//|46. La funzione scrive un array con dati di tipo INT dal byte specificato in memoria nella mappatura del file sull'indirizzo iniziale dello spazio di processo chiamante. |
//| La funzione è destinata ad essere usata nei cicli.
//| La funzione ritorna: 1 completamento con successo;
//| 0 altri errori;
//| -1 numero di celle da scrivere più della dimensione dell'array;
//| -2 numero di dati più della memoria allocata;
//| -3 array non scritto in memoria.
//| int FileMappingWriteSimpleIntArray(const char *pcAddress, // puntatore al byte dell'area di memoria della rappresentazione proiettata del file,
//| // da cui i dati saranno scritti.
//| const int *aiArray, // puntatore all'array con dati di tipo INT da scrivere nel file di mappatura.
//| const int nSizeBuffer); // Dimensione della matrice.

//|47. La funzione scrive un array con dati di tipo FLOAT nel file di mappatura dal byte specificato nella memoria dall'indirizzo iniziale dello spazio di processo chiamante.
//| La funzione è destinata ad essere usata nei cicli. La funzione converte i dati dell'array DOUBLE in FLOAT per la scrittura nel file mapping.
//| La funzione ritorna: 1 completamento con successo;
//| 0 altri errori;
//| -1 numero di celle da scrivere più della dimensione dell'array;
//| -2 numero di dati più della memoria allocata;
//| -3 nessun array viene scritto in memoria.
//| int FileMappingWriteSimpleFloatArray(const char *pcAddress, // puntatore al byte dell'area di memoria della rappresentazione proiettata del file,
//| // da cui i dati saranno scritti.
//| const double *adArray, // Puntatore all'array con dati di tipo FLOAT da scrivere nel file mapping.
//| const int nSizeBuffer); // Dimensione della matrice.

//|48. La funzione scrive un array con dati di tipo DOUBLE dal byte specificato in memoria al file mappato dall'indirizzo dello spazio iniziale del processo chiamante.
//| La funzione è destinata ad essere usata nei cicli.
//| La funzione ritorna: 1 completamento con successo;
//| 0 altri errori;
//| -1 numero di celle da scrivere più della dimensione dell'array;
//| -2 numero di dati più della memoria allocata;
//| -3 array non scritto in memoria.
//| int FileMappingWriteSimpleDoubleArray(const char *pcAddress, // puntatore al byte dell'area di memoria della rappresentazione proiettata del file,
//| // da cui i dati saranno scritti.
//| const double *adArray, // Puntatore all'array con dati di tipo DOUBLE da scrivere nel file di mappatura.
//| const int nSizeBuffer); // Dimensione della matrice.

//| FUNZIONI PER LEGGERE GLI ARRAY DAL FILE MAPPING.

//|49. La funzione apre un file di mappatura e legge da esso i dati di tipo BOOL in un array dal byte specificato in memoria.
//| Se non esiste una mappatura di file, viene creata una mappatura di file.
//| La funzione ritorna: 1 completamento con successo;
//| 0 altri errori;
//| -1 più dati della memoria allocata;
//| -2 la dimensione del buffer di ricezione non è sufficiente;
//| -3 l'indirizzo iniziale non viene ricevuto;
//| -4 il messaggio dalla memoria non viene letto;
//| -5 annulla la mappatura del file fallita.
//| int FileMappingReadBoolArray(const char *szNameFileMapping, //| nome del file da mappare.
//| const int nMemorySize, // Quantità di memoria da riservare per la mappatura dei file.
//| const int nStartByte, //Numero di byte dall'inizio della memoria allocata da cui sarà scritto l'array.
//| int *aiArray, // Puntatore all'array per leggere i dati logici BOOL dal file di mappatura in esso.
//| const int nSizeBuffer); // Dimensione della matrice.
 
//|50. La funzione apre un file di mappatura e legge i dati di tipo CHAR da esso in un array dal byte specificato in memoria.
Se //| non c'è una mappatura dei file, viene creata.
//| La funzione ritorna: 1 completamento con successo;
//| 0 altri errori;
//| -1 più dati della memoria allocata;
//| -2 la dimensione del buffer di ricezione non è sufficiente;
//| -3 l'indirizzo iniziale non viene ricevuto;
//| -4 il messaggio dalla memoria non viene letto;
//| -5 annulla la mappatura del file fallita.
//| int FileMappingReadCharArray(const char *szNameFileMapping, //nome del file proiettato.
//| const int nMemorySize, // Quantità di memoria riservata per la mappatura dei file.
//| const int nStartByte, //Numero di byte dall'inizio della memoria allocata da cui sarà scritto l'array.
//| int *aiArray, // puntatore all'array per leggere dati di tipo CHAR dalla mappa del file.
//| const int nSizeBuffer); // Dimensione della matrice.

//|51. La funzione apre il file map e legge i dati di tipo SHORT da esso nell'array dal byte specificato in memoria.
Se //| non c'è una mappatura dei file, ne viene creata una.
//| La funzione ritorna: 1 completamento con successo;
//| 0 altri errori;
//| -1 più dati della memoria allocata;
//| -2 la dimensione del buffer di ricezione non è sufficiente;
//| -3 l'indirizzo iniziale non viene ricevuto;
//| -4 il messaggio dalla memoria non viene letto;
//| -5 annulla il file mapping fallito.
//| int FileMappingReadShortArray(const char *szNameFileMapping, //nome del file proiettato.
//| const int nMemorySize, // Quantità di memoria riservata per la mappatura dei file.
//| const int nStartByte, //Numero di byte dall'inizio della memoria allocata da cui sarà scritto l'array.
//| int *aiArray, // Puntatore all'array per leggere i dati SHORT dal file di mappatura.
//| const int nSizeBuffer); // Dimensione della matrice.

//|52. La funzione apre il file map e legge i dati di tipo INT da esso nell'array dal byte specificato in memoria.
//| Se non c'è una mappatura dei file, ne viene creata una.
//| La funzione ritorna: 1 completamento con successo;
//| 0 altri errori;
//| -1 più dati della memoria allocata;
//| -2 la dimensione del buffer di ricezione non è sufficiente;
//| -3 l'indirizzo iniziale non viene ricevuto;
//| -4 il messaggio dalla memoria non viene letto;
//| -5 annulla la mappatura del file fallita.
//| int FileMappingReadIntArray(const char *szNameFileMapping, //| nome del file da mappare.
//| const int nMemorySize, // Quantità di memoria da riservare per la mappatura dei file.
//| const int nStartByte, //Numero di byte dall'inizio della memoria allocata da cui sarà scritto l'array.
//| int *aiArray, // Puntatore all'array per leggere i dati di tipo INT dalla mappatura del file in esso.
//| const int nSizeBuffer); // Dimensione della matrice.

//|53. La funzione apre un file di mappatura e legge i dati di tipo FLOAT da esso nell'array dal byte specificato in memoria.
Se //| non c'è una mappatura dei file, ne viene creata una. La funzione converte i dati di tipo FLOAT dalla mappatura del file in DOUBLE per la lettura nell'array.
//| La funzione ritorna: 1 completamento con successo;
//| 0 altri errori;
//| -1 più dati della memoria allocata;
//| -2 la dimensione del buffer di ricezione non è sufficiente;
//| -3 nessun indirizzo iniziale ricevuto;
//| -4 messaggio dalla memoria non letto;
//| -5 annullamento della mappatura del file fallito.
//| int FileMappingReadFloatArray(const char *szNameFileMapping, //Nome del file proiettato.
//| const int nMemorySize, // Quantità di memoria riservata per la mappatura dei file.
//| const int nStartByte, // Numero di byte dall'inizio della memoria allocata, // da cui l'array sarà scritto.
//| double *adArray, // Puntatore all'array per leggere dati di tipo FLOAT dal file mapping.
//| const int nSizeBuffer); // Dimensione della matrice.

//|54. La funzione apre un file di mappatura e legge i dati di tipo DOUBLE da esso in un array dal byte specificato in memoria.
//| Se non c'è una mappatura dei file, ne viene creata una.
//| La funzione ritorna: 1 completamento con successo;
//| 0 altri errori;
//| -1 più dati della memoria allocata;
//| -2 la dimensione del buffer di ricezione non è sufficiente;
//| -3 l'indirizzo iniziale non viene ricevuto;
//| -4 il messaggio dalla memoria non viene letto;
//| -5 annulla la mappatura del file fallita.
//| int FileMappingReadDoubleArray(const char *szNameFileMapping, //| nome del file proiettato.
//| const int nMemorySize, // Quantità di memoria da riservare per la mappatura dei file.
//| const int nStartByte, // Numero di byte dall'inizio della memoria allocata, // da cui l'array sarà scritto.
//| double *adArray, // Puntatore all'array per leggere i dati DOUBLE dal file mapping.
//| const int nSizeBuffer); // Dimensione della matrice.

//| FUNZIONE PER LEGGERE GLI ARRAY NELLA RAPPRESENTAZIONE DI MAPPATURA DEL FILE PROIETTATA NELLO SPAZIO DEGLI INDIRIZZI DEL PROCESSO CHIAMANTE.

//|55. La funzione legge i dati di tipo BOOL dal file mappato dallo spazio di indirizzo iniziale del processo chiamante in un array dal byte specificato in memoria.
//| La funzione è destinata ad essere usata nei cicli.
//| La funzione ritorna: 1 completamento con successo;
//| 0 altri errori;
//| -1 più dati della memoria allocata;
//| -2 la dimensione del buffer di ricezione non è sufficiente;
//| -3 messaggio dalla memoria non letto.
//| int FileMappingReadSimpleBoolArray(const char *pcAddress, // Puntatore al byte dell'area di memoria della rappresentazione proiettata del file,
//| // da cui i dati saranno scritti.
//| int *aiArray, // puntatore all'array per leggervi dati logici BOOL dal file mapping.
//| const int nSizeBuffer); // Dimensione della matrice.

//|56. La funzione legge i dati di tipo CHAR dal file mappato dall'indirizzo iniziale dello spazio di processo chiamante in un array dal byte specificato nella memoria.
//| La funzione è destinata ad essere usata nei cicli.
//| La funzione ritorna: 1 completamento con successo;
//| 0 altri errori;
//| -1 più dati della memoria allocata;
//| -2 la dimensione del buffer di ricezione non è sufficiente;
//| -3 il messaggio dalla memoria non viene letto.
//| int FileMappingReadSimpleCharArray(const char *pcAddress, // Puntatore al byte dell'area di memoria della rappresentazione proiettata del file,
//| // da cui i dati saranno scritti.
//| int *aiArray, // Puntatore all'array per leggere i dati di tipo CHAR dal file di mappatura.
//| const int nSizeBuffer); // Dimensione della matrice.

//|57. La funzione legge i dati di tipo SHORT dal file mappato dall'indirizzo iniziale dello spazio del processo chiamante nell'array dal byte specificato in memoria.
//| La funzione è destinata ad essere usata nei cicli.
//| La funzione ritorna: 1 completamento con successo;
//| 0 altri errori;
//| -1 più dati della memoria allocata;
//| -2 la dimensione del buffer di ricezione non è sufficiente;
//| -3 il messaggio dalla memoria non viene letto.
//| int FileMappingReadSimpleShortArray(const char *pcAddress, // Puntatore al byte dell'area di memoria della rappresentazione proiettata del file,
//| // da cui i dati saranno scritti.
//| int *aiArray, // Puntatore all'array per leggere i dati di tipo SHORT dalla mappatura del file in esso.
//| const int nSizeBuffer); // Dimensione della matrice.

//|58. La funzione legge i dati di tipo INT dal file mappato dall'indirizzo dello spazio iniziale del processo chiamante nell'array dal byte specificato in memoria.
//| La funzione è destinata ad essere usata nei cicli.
//| La funzione ritorna: 1 completamento con successo;
//| 0 altri errori;
//| -1 più dati della memoria allocata;
//| -2 la dimensione del buffer di ricezione non è sufficiente;
//| -3 il messaggio dalla memoria non viene letto.
//| int FileMappingReadSimpleIntArray(const char *pcAddress, // Puntatore al byte dell'area di memoria della rappresentazione proiettata del file,
//| // da cui i dati saranno scritti.
//| int *aiArray, // Puntatore all'array per leggere i dati di tipo INT dalla mappatura del file in esso.
//| const int nSizeBuffer); // Dimensione della matrice.

//|59. La funzione legge i dati di tipo FLOAT dal file di mappatura dall'indirizzo iniziale dello spazio di processo chiamante nell'array dal byte specificato nella memoria.
//| La funzione è destinata ad essere usata nei cicli. La funzione converte i dati di mappatura del file di tipo FLOAT in DOUBLE per la lettura in una matrice.
//| La funzione ritorna: 1 completamento con successo;
//| 0 altri errori;
//| -1 più dati della memoria allocata;
//| -2 la dimensione del buffer di ricezione non è sufficiente;
//| -3 messaggio dalla memoria non letto.
//| int FileMappingReadSimpleFloatArray(const char *pcAddress, //| puntatore al byte dell'area di memoria della rappresentazione proiettata del file,
//| // da cui i dati saranno scritti.
//| double *adArray, // puntatore all'array per leggere dati di tipo FLOAT dalla mappatura del file in esso.
//| const int nSizeBuffer); // Dimensione della matrice.

//|60. La funzione legge i dati di tipo DOUBLE dal file mappato dall'indirizzo dello spazio iniziale del processo chiamante nell'array dal byte specificato in memoria.
//| La funzione è destinata ad essere usata nei cicli.
//| La funzione ritorna: 1 completamento con successo;
//| 0 altri errori;
//| -1 più dati della memoria allocata;
//| -2 la dimensione del buffer di ricezione non è sufficiente;
//| -3 messaggio dalla memoria non letto.
//| int FileMappingReadSimpleDoubleArray(const char *pcAddress, // puntatore al byte dell'area di memoria della rappresentazione proiettata del file,
//| // da cui i dati saranno scritti.
//| double *adArray, // puntatore all'array per leggere dati di tipo DOUBLE dalla mappatura del file in esso.
//| const int nSizeBuffer); // Dimensione della matrice.
 
Zhunko >>:
Это не исходник, и не DLL. Это офрмленный заголовок исходника DLL, на который потратил больше недели. Написание класса для маппинга заняло неделю. В основном на продумывание структурированности.
А само писание 60 функций заняло 60 минут. Там в каждой функции по паре строчек.
È una biblioteca molto bella. Non puoi condividere i file finiti? O si tratta di un pagamento?
 
Andrei01 >>:
Очень приятная библиотечка. А файлами готовыми Вы не можете поделиться? Или это подразумевает оплату?

Non ancora finito. Tutto è in corso. Sto correggendo gli errori nella descrizione e modificando i nomi delle funzioni, sono troppo lunghi per MQL4.
I test sono molto lontani. La libreria è destinata a lavorare con il mio Toolbox e quindi è protetta. Non vi darò il codice sorgente.
Se volete, potete affittarlo. :-))
Ma, dopo tutto, le cose più preziose che hai esposto. Questa descrizione è più importante del codice sorgente.

 
3/4 testati. Ho capito che dobbiamo aggiungere altre 16 funzioni per i numeri interi senza segno, tranne INT.
Al momento il file di intestazione si presenta così:
File:
 
Finito. 80 funzioni ora. Mettilo nel salvadanaio. Probabilmente apparirà presto.
Il file di intestazione è ora come questo:
File:
 
Zhunko: Всё-таки, общение через файлы это не тот инструмент. Не по назначению.
Файлы придуманы для длительного хранения информации. Зачем терзать диск? Для общения есть ОЗУ.

Se si crea un disco in RAM (RAMdisk), allora il disco rigido non soffrirà e offrire JavaDev ha un certo senso.

E per la biblioteca - grazie mille!!! Proprio un capolavoro!!!