Mein Ansatz. Der Kern ist der Motor. - Seite 98

 
Als Tipp, wie Sie dies tun können, sehen Sie sich die Struktur eines Zip-Archivs an. Sie besteht aus einfachen Strukturen und Daten. Eine ähnliche Struktur eignet sich hervorragend für die Datenübermittlung. Beachten Sie, dass das Zip-Archiv keine einzige Zeile enthält, was es aber nicht daran hindert, ein Miniatur-Dateisystem mit Hunderten von Dateien mit unterschiedlichen Namen perfekt darzustellen.
 
Vasiliy Sokolov:
Als Hinweis, wie man es macht, sehen Sie sich die Struktur eines Zip-Archivs an. Sie besteht aus einfachen Strukturen und Daten. Eine ähnliche Struktur könnte sich auch für die Datenübertragung eignen. Beachten Sie, dass das Zip-Archiv keine einzige Zeile enthält, was es aber nicht daran hindert, ein Miniatur-Dateisystem mit Hunderten von Dateien mit unterschiedlichen Namen perfekt darzustellen.

Ich stimme mit Ihrer professionellen Sichtweise der Aufgabe überein. Der Byte-Transfer sieht ernster aus als der String-Transfer über MT-Objekte.

Die Frage ist, wie realisierbar sie ist.

Der Umfang und die Art der zu übertragenden Daten sind im Voraus nicht bekannt. Wie wird sie umgesetzt?

 
Реter Konow:

Ich stimme mit Ihrer professionellen Sichtweise der Aufgabe überein. Der Byte-Transfer sieht ernster aus als der String-Transfer über MT-Objekte.

Die Frage ist, wie realisierbar sie ist.

Der Umfang und die Art der zu übertragenden Daten sind im Voraus nicht bekannt. Wie kann die Gewerkschaft umgesetzt werden?

Das ist möglich.

Bitte studieren Sie die Struktur Ihres Reißverschlusses genau. Eine Verständigung wird kommen. Die Größe der gepackten Dateien vor dem Packen ist nicht bekannt. Die Namen der Dateien können unterschiedlich lang sein. Auch die Anzahl der Dateien kann sehr unterschiedlich sein. Unabhängig davon stellt das zip eine streng typisierte Menge endlicher Strukturen dar, die auf die Daten verweisen.

Wenn Sie wissen, mit welchen Strukturen Sie arbeiten müssen, gibt es kein Problem mit Union, denn Union ist einfach eine Darstellung dieser Strukturen als Bytes.

 
Vasiliy Sokolov:

Möglich.

Studieren Sie die Struktur des Reißverschlusses im Detail. Eine Verständigung wird kommen. Die Größe der gepackten Dateien vor dem Packen ist dort unbekannt. Dateinamen können sehr unterschiedlich lang sein. Auch die Anzahl der Dateien kann sehr unterschiedlich sein. Unabhängig davon stellt das zip eine streng typisierte Menge endlicher Strukturen dar, die auf die Daten verweisen.

Wenn Sie herausgefunden haben, mit welchen Strukturen Sie arbeiten müssen, werden Sie keine Probleme mehr haben, da Sie diese Strukturen einfach als Bytes darstellen können.

Okay, aber warum verzichten Sie zum Beispiel nicht auf eine Gewerkschaft?

Bei jedem Ereignis sammelt der EA einen Nachrichtenstring, der alle geänderten Parameter und ihre Werte aller Typen enthält. Dann wandeln wir diese Zeichenfolge mit StringToChar in ein Byte-Array um und schreiben sie in eine Ressource. Dann packen wir umgekehrt aus.

Ursprünglich hatte ich mir eine solche Lösung mit der Ressource vorgestellt. Aber es muss die Zeichenfolge zusammensetzen und aufteilen.

 
Auf eine Ressource in Ihrer Lösung können Sie ohnehin nicht verzichten. Die Frage ist also, wie man das Parsen der Zeichenkette umgehen kann. Sie halten es für möglich. Das bezweifle ich ehrlich gesagt. Aber ich würde es nicht ausschließen...
 
Реter Konow:

OK, aber warum nicht zum Beispiel auf die Gewerkschaft verzichten?

Bei jedem Ereignis sammelt der EA einen Nachrichtenstring, der alle geänderten Parameter und ihre Werte aller Typen enthält. Dann konvertieren wir diese Zeichenkette mit StringToChar in ein Byte-Array und schreiben sie in eine Ressource. Dann packen wir umgekehrt aus.

Ursprünglich hatte ich mir eine solche Lösung mit der Ressource vorgestellt. Allerdings muss die Zeichenfolge zusammengesetzt und aufgeteilt werden.

Union ist eine gleichzeitige Darstellung von Strukturen als Bytes oder Int, was dasselbe ist. Union scheint Strukturen auf ein Byte-Array zu projizieren, während das Byte-Array gleichzeitig ein Satz von Strukturen ist. Handelt es sich bei der Ressource um ein int-Array, entfällt die zusätzliche Prozedur der Umwandlung eines Arrays von Bytes in ein Array von Strukturen und die umgekehrte Operation. Das spart Zeit.

p.s. Bei diesem Schema kopiert die Nachrichtenquelle keine Daten in die Ressource, sondern ändert die Daten direkt, und diese Änderungen erscheinen sofort in der Ressource. Statt endloser Konvertierungen von Strings in Arrays und Arrays in Strings mit anschließendem Parsing arbeiten Sie also direkt mit den Daten. Diese Daten werden nur zu Empfängern kopiert, die ResourceReadImage verwenden.

 
Vasiliy Sokolov:

Union ist die gleichzeitige Darstellung von Strukturen als Bytes oder Int, was dasselbe ist. Union projiziert Strukturen auf ein Byte-Array, und ein Byte-Array ist gleichzeitig eine Menge von Strukturen. Handelt es sich bei der Ressource um ein int-Array, entfällt die zusätzliche Prozedur der Umwandlung eines Arrays von Bytes in ein Array von Strukturen und die umgekehrte Operation. Es spart Zeit.

Ich werde darüber nachdenken müssen... Vielleicht haben Sie recht, und es ist möglich, mit der Gewerkschaft zu arbeiten.

Wenn zum Beispiel jede Einstellung eines Parameterwertes diesen Wert in ein Array von Bytes umwandeln würde. Genauer gesagt, sollten alle Benutzerparameter zu der Vereinigung gehören. Dann steht ihre in Bytes ausgedrückte Kopie sofort zum Schreiben in die Ressource zur Verfügung.

 
Реter Konow:

Wenn zum Beispiel jede Einstellung eines Parameterwertes diesen Wert in ein Array von Bytes umwandelt. Genauer gesagt, müssen alle Benutzerparameter zu der Vereinigung gehören. Dann wäre ihre bytegespiegelte Kopie sofort zum Schreiben in die Ressource verfügbar.

Ja, genau, ich habe bereits in ps auf den vorherigen Beitrag geantwortet, als Sie ihn geschrieben haben :) D.h. wir arbeiten nicht mit langem Kopieren und Konvertieren, sondern mit exaktem Mapping.

 
Kurz gesagt, jedes Mal, wenn ein Benutzerparameterwert geändert wird, muss der Wert in den Wert einer Einheitsvariablen umgewandelt und sofort in einem gemeinsamen Byte-Array gespeichert werden, das dann in uint umgewandelt und in eine Ressource geschrieben werden kann.
 
Vasiliy Sokolov:

Ja, genau, ich habe bereits in den ps auf den vorherigen Beitrag geantwortet, als Sie dies geschrieben haben:) Das heißt, wir arbeiten nicht mit langem Kopieren und Konvertieren, sondern mit exaktem Mapping.

OK, aber was ist mit Texten?

Sie müssen mitStringToChar() in Bytes umgewandelt werden. Sie können keine Gewerkschaft verwenden, richtig?