Il mio approccio. Il nucleo è il motore. - pagina 98

 
Come suggerimento su come potete fare questo, guardate la struttura di un archivio zip. Consiste di strutture e dati semplici. Una struttura simile potrebbe essere ottima per il trasferimento dei dati. Si noti che non c'è una sola riga nell'archivio zip, il che non impedisce di visualizzare perfettamente un filesystem in miniatura con centinaia di file con nomi diversi.
 
Vasiliy Sokolov:
Come suggerimento su come farlo, guardate la struttura degli archivi zip. Consiste di strutture e dati semplici. Una tale struttura potrebbe essere ottima per il trasferimento dei dati. Si noti che non c'è una sola riga nell'archivio zip, il che non impedisce di visualizzare perfettamente un filesystem in miniatura con centinaia di file con nomi diversi.

Sono d'accordo con la sua visione professionale del compito. Il trasferimento di byte sembra più serio del trasferimento di stringhe tramite oggetti MT.

La questione è quanto sia fattibile da implementare.

Le dimensioni e i tipi di dati da trasferire non sono noti in anticipo. Come implementarlo?

 
Реter Konow:

Sono d'accordo con la sua visione professionale del compito. Il trasferimento di byte sembra più serio del trasferimento di stringhe tramite oggetti MT.

La questione è quanto sia fattibile da implementare.

Le dimensioni e i tipi di dati da trasferire non sono noti in anticipo. Come implementare l'unione?

È possibile.

Per favore, studiate la struttura del vostro zip in dettaglio. Arriverà una comprensione. La dimensione dei file impacchettati prima del confezionamento non è nota. I nomi dei file possono essere di lunghezza diversa. Il numero di file può anche essere molto diverso. Indipendentemente da ciò, lo zip rappresenta un insieme strettamente tipizzato di strutture finite che fanno riferimento ai dati.

Una volta che sapete con quali strutture avete bisogno di lavorare, non ci sono problemi con l'unione, perché l'unione è semplicemente una rappresentazione di quelle strutture come byte.

 
Vasiliy Sokolov:

Possibile.

Studia la struttura della zip in dettaglio. Arriverà una comprensione. La dimensione dei file impacchettati prima dell'impacchettamento è sconosciuta lì. I nomi dei file possono essere di molte lunghezze diverse. Il numero di file può anche essere molto diverso. Indipendentemente da ciò, lo zip rappresenta un insieme strettamente tipizzato di strutture finite che fanno riferimento ai dati.

Quando capite con quali strutture avete bisogno di lavorare, non avrete problemi perché potete semplicemente rappresentare queste strutture come byte.

Ok, ma perché non si fa a meno di un sindacato, per esempio?

Ad ogni evento, l'EA raccoglie una stringa di messaggi, che include tutti i parametri modificati e i loro valori di tutti i tipi. Poi convertiamo questa stringa in un array di byte usando StringToChar, e la scriviamo in una risorsa. Poi, facciamo lo spacchettamento al contrario.

Inizialmente, avevo immaginato una tale soluzione con la risorsa. Ma ha bisogno di assemblare e dividere la stringa.

 
Non puoi comunque fare a meno di una risorsa nella tua soluzione. Quindi la domanda è come aggirare il parsing della stringa. Lei pensa che sia possibile. Onestamente ne dubito. Ma non lo escluderei...
 
Реter Konow:

Ok, ma perché non fare a meno del sindacato, per esempio.

Ad ogni evento, l'EA raccoglie una stringa di messaggio che include tutti i parametri modificati e i loro valori di tutti i tipi. Poi convertiamo questa stringa in un array di byte usando StringToChar, e la scriviamo in una risorsa. Poi, facciamo lo spacchettamento al contrario.

Inizialmente, avevo immaginato una tale soluzione con la risorsa. Ma ha bisogno di assemblare e dividere la stringa.

L'unione è una rappresentazione simultanea di strutture come byte o int, che è la stessa cosa. Union sembra proiettare strutture su un array di byte mentre l'array di byte è contemporaneamente un insieme di strutture. Se la risorsa è un array di int, non è necessario eseguire la procedura aggiuntiva di conversione di un array di byte in un array di strutture e l'operazione inversa. Questo fa risparmiare tempo.

p.s. Con questo schema, la fonte del messaggio non copia i dati nella risorsa, cambia direttamente i dati, e questi cambiamenti appaiono nella risorsa in una volta sola. Così, invece di infinite conversioni di stringhe in array, e di array in stringhe con successivo parsing, si lavora direttamente con i dati. Questi dati sono copiati solo ai destinatari che usano ResourceReadImage.

 
Vasiliy Sokolov:

L'unione è la rappresentazione simultanea di strutture come byte o int, che è la stessa cosa. Union proietta le strutture su un array di byte, e un array di byte è contemporaneamente un insieme di strutture. Se la risorsa è un array di int, non è necessario eseguire la procedura aggiuntiva di conversione di un array di byte in un array di strutture e l'operazione inversa. Permette di risparmiare tempo.

Ho bisogno di pensarci... Forse hai ragione, ed è possibile implementare con l'unione.

Per esempio, se ogni impostazione di un valore di parametro, convertirebbe quel valore in un array di byte. Più precisamente, tutti i parametri utente, dovrebbero appartenere all'unione. Poi, la loro copia riflessa in byte sarà immediatamente disponibile per la scrittura sulla risorsa.

 
Реter Konow:

Per esempio, se ogni impostazione di un valore di parametro, convertirà quel valore in un array di byte. Più precisamente, tutti i parametri utente devono appartenere all'unione. Poi, la loro copia riflessa dal byte sarebbe immediatamente disponibile per la scrittura nella risorsa.

Sì, esattamente, ho già risposto in ps al post precedente, quando l'hai scritto :) Cioè non stiamo lavorando con un lungo copia e converti, ma esattamente la mappatura.

 
In breve, ogni volta che il valore di un parametro utente viene cambiato, il valore deve essere convertito nel valore di una variabile unitaria e immediatamente salvato in un comune array di byte, che può poi essere convertito in uint e scritto in una risorsa.
 
Vasiliy Sokolov:

Sì, esattamente, ho già risposto nel ps al post precedente quando hai scritto questo:) Cioè non stiamo lavorando con una lunga copia e conversione, ma esattamente la mappatura.

Ok, ma che dire dei testi?

Devono essere convertiti in byte tramiteStringToChar(). Non puoi usare l'unione, giusto?