Freigabe von Daten-Arrays zwischen zwei Anwendungen in Delphi

8

Ich möchte Array-Daten zwischen zwei Anwendungen teilen. Meiner Meinung nach erstellt das erste Programm das Array und das zweite Programm kann das Array aus dem bereits zugewiesenen Speicherbereich lesen. Das Array ist kein dynamisches Array.

Ich habe einen Weg gefunden, den Zeiger mit OpenFileMapping und MapViewOfFile zu teilen. Ich habe kein Glück Array-Sharing zu implementieren und ich denke, ich möchte IPC-Methode noch nicht verwenden.

Ist es möglich, ein solches Schema zu planen (Sharing Array)? Mein Zweck ist es, Speicherverbrauch zu minimieren und Daten schnell zu lesen.

    
user 13.04.2011, 08:08
quelle

2 Antworten

16

Ich habe meinen Kopf zerkratzt und darüber nachgedacht, was ein kurzes, aber vollständiges Beispiel für die gemeinsame Nutzung von Speicher zwischen zwei Anwendungen sein könnte. Die einzige Option ist eine Konsolenanwendung, GUI-Anwendungen benötigen mindestens 3 Dateien (DPR + PAS + DFM). Also habe ich mir ein kleines Beispiel ausgedacht, in dem ein Integer-Array unter Verwendung einer Memory-Mapped-Datei geteilt wird (unterstützt durch die Page-Datei, so dass ich keine physikalische Datei auf der Festplatte haben muss, damit dies funktioniert). Die Konsolenanwendung reagiert auf 3 Befehle:

  • BEENDEN
  • SET NUM VALUE Ändert den Wert im Index NUM im Array zu VALUE
  • DUMP NUM zeigt den Wert im Array im Index NUM an
  • DUMP ALL zeigt das gesamte Array
  • an

Natürlich nimmt der Befehlsverarbeitungscode ungefähr 80% der gesamten Anwendung ein. Um dies zu testen, kompiliere die folgende Konsolenanwendung, finde die ausführbare Datei und starte sie zweimal . Gehe zum ersten Fenster und gib Folgendes ein:

%Vor%

Gehe zur zweiten Konsole und gib folgendes ein:

%Vor%

Gehe zur ersten Konsole und gib folgendes ein:

%Vor%

Da haben Sie es, Sie haben gerade gesehen, wie Sie Speicher zwischen zwei Anwendungen teilen.

%Vor%     
Cosmin Prund 13.04.2011, 08:48
quelle
5

Eine Benannte Dateizuordnung wäre die einfachste Lösung , hier ist ein kurzer Beispielcode. In diesem Beispiel gibt es ein Hauptprogramm, das einige Daten und Leser schreibt, die nur davon lesen.

Haupt:

%Vor%

Leser:

%Vor%     
Remko 13.04.2011 09:38
quelle

Tags und Links