goldtrader: non è una situazione di conflitto quando un EA apre un file per la scrittura e mentre il file è ancora aperto, un altro EA apre (o cerca di aprire) lo stesso file per la lettura?
Io, come persona fiduciosa nel potere della scienza, trovo la situazione un po' drammatica. Si può leggere quanto dieci persone, ma per scrivere si possono usare controlli, vietare le bandiere, ecc. È una questione puramente tecnica e non un ostacolo. Questa è una questione puramente tecnica e non è un ostacolo, i file da qualsiasi luogo sono stati letti e scritti a lungo usando API. Sono interessanti altri modi per trasferire informazioni tra i terminali, che non sono stati utilizzati prima. Per esempio, per trasferire informazioni sotto forma di una variabile d'ambiente di Windows.
Sono d'accordo. Vorrei anche fare la trasmissione dei dati senza file, è più veloce e più affidabile. Ma non credo che qualcuno abbia ancora qualcosa da dire al riguardo, ecco perché tutti si fissano sul trasferimento attraverso un file((((
Non c'è nessun problema perché un EA continua a scrivere nel file e l'altro EA continua a leggere dal file e non importa in quale ordine avviene. Per controllare la rilevanza dei dati ho usato l'ora locale, cioè le citazioni vengono scritte ogni 100 millisecondi e poi vengono controllate per la rilevanza in base all'ora locale.
Non è una situazione di conflitto, quando un EA apre un file per la scrittura e mentre è ancora aperto, un altro EA apre (o cerca di aprire) lo stesso file per la lettura?
No, non è un conflitto, perché si può leggere un file in qualsiasi momento, anche se è aperto per la scrittura. Ma se lo stesso file è aperto per la scrittura due volte allo stesso tempo, allora ci sarà un conflitto.
Vorrei anche fare il trasferimento dei dati senza file, è più veloce e più affidabile. Ma penso che finora nessuno abbia niente da dire a riguardo, ecco perché tutti sono bloccati nel trasferimento attraverso un file(((
È possibile riservare uno spazio di memoria con il diritto di accedervi per 2 applicazioni?
È anche una sorta di chiaro conflitto, con errori provocatori di questo tipo:
0009 0x0009 Indirizzo di gestione della memoria non valido
0998 0x03E6 Tentativo di accesso all'indirizzo di memoria non valido
Una delle applicazioni cercherà di accedere a un indirizzo di memoria a cui non ha diritti di accesso
Il problemaè questo: il problema non è risolto in primo luogo:
Voglio passare i dati anche senza file, è più veloce e più affidabile. Ma non credo che qualcuno abbia ancora qualcosa da dire al riguardo, ecco perché tutti si fissano sul trasferimento attraverso un file((((
È possibile riservare uno spazio di memoria con il diritto di accedervi per 2 applicazioni?
È anche una sorta di chiaro conflitto, con errori provocatori di questo tipo:
0009 0x0009 Indirizzo di gestione della memoria non valido
0998 0x03E6 Tentativo di accesso all'indirizzo di memoria non valido
Una delle applicazioni cercherà di accedere a un indirizzo di memoria a cui non ha diritti di accesso
Forse non si può, non lo so per certo. Qui, in questo thread https://forum.mql4.com/ru/3393 hanno scritto di GlobalAddAtom. Se ho capito bene, in questo modo una variabile può essere passata senza un file, cioè attraverso la memoria. Ma non so come fare((((
Hai anche fatto un esempio, puoi dirmi come hai cercato di farlo?
Oh, un pensiero mi è saltato in mente di nuovo - gli appunti di Windows sono accessibili in lettura-scrittura dalle applicazioni senza alcuna restrizione di indirizzo di memoria!
Буфер обмена (clipboard)- набор функций и сообщений, который делает возможным передачу данных в прикладные программы, разработанные при помощи Microsoft ® Win32 ® прикладного программного интерфейса (API). Поскольку все прикладные программы имеют доступ к буферу обмена, данные могут быть легко перемещаемы между приложениями или внутри прикладной программы.
Ma ecco un altro piccolo bastone nella ruota:
La clipboard è controllata dall'utente. La finestra deve trasferire dati agli o dagli appunti solo in risposta a un comando dell'utente. La finestra non deve usare gli appunti per trasferire dati senza avvisare l'utente.
Oh, mi è venuto in mente di nuovo un pensiero: la clipboard di Windows è accessibile in lettura-scrittura dalle applicazioni senza alcuna restrizione di indirizzo di memoria!
Unaclipboard è un insieme di funzioni e messaggi che permette di trasferire dati ai programmi applicativi progettati utilizzando l'interfaccia di programmazione delle applicazioni( API) di Microsoft® Win32®. Poiché tutti i programmi applicativi hanno accesso agli appunti, i dati possono essere facilmente spostati tra le applicazioni o all'interno di un programma applicativo.
Ma ecco un altro piccolo bastone nella ruota:
La clipboard è controllata dall'utente. La finestra dovrebbe trasferire dati agli o dagli appunti solo in risposta a un comando dell'utente. La finestra non dovrebbe usare gli appunti per trasferire dati senza avvisare l'utente.
Quindi, solo l'API :^(
Sembra chiaro, ma come implementarlo, puoi essere più specifico?
Non c'è nessun problema perché un EA continua a scrivere nel file e l'altro EA continua a leggere dal file e non importa in quale ordine avviene. Per controllare la rilevanza dei dati ho usato l'ora locale, cioè le citazioni vengono scritte ogni 100 millisecondi e poi vengono controllate per la rilevanza in base all'ora locale.
Per informazione, se cliccate su terminal.exe 4 volte, si apriranno due copie dello stesso terminale, e i percorsi devono essere gli stessi.
È possibile riservare uno spazio di memoria con il diritto di accedervi per 2 applicazioni?
È anche una sorta di chiaro conflitto, con errori provocatori di questo tipo:
0009 0x0009 Indirizzo di gestione della memoria non valido
0998 0x03E6 Tentativo di accesso all'indirizzo di memoria non valido
Una delle applicazioni cercherà di accedere a un indirizzo di memoria a cui non ha diritti di accesso
È possibile riservare uno spazio di memoria con il diritto di accedervi per 2 applicazioni?
È anche una sorta di chiaro conflitto, con errori provocatori di questo tipo:
0009 0x0009 Indirizzo di gestione della memoria non valido
0998 0x03E6 Tentativo di accesso all'indirizzo di memoria non valido
Una delle applicazioni cercherà di accedere a un indirizzo di memoria a cui non ha diritti di accesso
Forse non si può, non lo so per certo. Qui, in questo thread https://forum.mql4.com/ru/3393 hanno scritto di GlobalAddAtom. Se ho capito bene, in questo modo una variabile può essere passata senza un file, cioè attraverso la memoria. Ma non so come fare((((
Hai anche fatto un esempio, puoi dirmi come hai cercato di farlo?
Oh, un pensiero mi è saltato in mente di nuovo - gli appunti di Windows sono accessibili in lettura-scrittura dalle applicazioni senza alcuna restrizione di indirizzo di memoria!
Буфер обмена (clipboard)- набор функций и сообщений, который делает возможным передачу данных в прикладные программы, разработанные при помощи Microsoft ® Win32 ® прикладного программного интерфейса (API). Поскольку все прикладные программы имеют доступ к буферу обмена, данные могут быть легко перемещаемы между приложениями или внутри прикладной программы.
Ma ecco un altro piccolo bastone nella ruota:
La clipboard è controllata dall'utente. La finestra deve trasferire dati agli o dagli appunti solo in risposta a un comando dell'utente. La finestra non deve usare gli appunti per trasferire dati senza avvisare l'utente.
Quindi, solo l'API :^(
Oh, mi è venuto in mente di nuovo un pensiero: la clipboard di Windows è accessibile in lettura-scrittura dalle applicazioni senza alcuna restrizione di indirizzo di memoria!
Unaclipboard è un insieme di funzioni e messaggi che permette di trasferire dati ai programmi applicativi progettati utilizzando l'interfaccia di programmazione delle applicazioni( API) di Microsoft® Win32®. Poiché tutti i programmi applicativi hanno accesso agli appunti, i dati possono essere facilmente spostati tra le applicazioni o all'interno di un programma applicativo.
Ma ecco un altro piccolo bastone nella ruota:
La clipboard è controllata dall'utente. La finestra dovrebbe trasferire dati agli o dagli appunti solo in risposta a un comando dell'utente. La finestra non dovrebbe usare gli appunti per trasferire dati senza avvisare l'utente.
Quindi, solo l'API :^(
O impari l'API di Win 32 da solo, o trovi un codificatore che accetti il lavoro. Non c'è molta scelta qui.
Ma secondo me, questo sistema non vale il costo.
Per la cronaca, se clicchi su terminal.exe 4 volte, si apriranno due copie dello stesso terminale, e i percorsi dovrebbero essere gli stessi.