AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Algorithmen, Datenstrukturen und Klassendesign Delphi Mehrere Instanzen, aber Identische TempDaten vermeiden.
Thema durchsuchen
Ansicht
Themen-Optionen

Mehrere Instanzen, aber Identische TempDaten vermeiden.

Ein Thema von Bjoerk · begonnen am 20. Jul 2015 · letzter Beitrag vom 21. Jul 2015
Antwort Antwort
Bjoerk

Registriert seit: 28. Feb 2011
Ort: Mannheim
1.384 Beiträge
 
Delphi 10.4 Sydney
 
#1

Mehrere Instanzen, aber Identische TempDaten vermeiden.

  Alt 20. Jul 2015, 21:10
Ich hab ein Programm, das besteht aus mehren Apps, die hintereinander gestartet werden. Die erste App ist die Oberfläche, wo der Anwender die Daten eingibt. Die letzte App ist die Darstellung der Ergebnisses. Im Verlauf der Berechnung werden umfangreiche TempDaten angelegt die jeweils von den NachfolgeApp‘s benötigt werden. Die TempDaten werden anhand des OpenDialog.FileName‘s von App1 gesetzt. App1 starte auch die weiteren Apps.

Beispiel:
FileName: C:\Users\Thomas\Documents\Abel\Beispiel\Test.stw
TempDaten C:\ProgramData\Abel\Temp\Users_Toni_Documents_Abel _Beispiel_Test_stw.tmp

Wie macht man das nun, wenn der User zum Beispiel das gleiche Programm mit dem gleichen FileName ausführt? Die TempDaten der 1.Instanz müssen dabei erhalten bleiben weil die Ergbnisdarstellung zur Laufzeit darauf zugreift. Ein Instanzzähler bringt da also wohl nichts?

Jemand eine Idee?
  Mit Zitat antworten Zitat
redox
(Gast)

n/a Beiträge
 
#2

AW: Mehrere Instanzen, aber Identische TempDaten vermeiden.

  Alt 20. Jul 2015, 21:41
if FileExists(OpenDialog.FileName) then Fehlermeldung?
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#3

AW: Mehrere Instanzen, aber Identische TempDaten vermeiden.

  Alt 20. Jul 2015, 23:04
MSDN-Library durchsuchenGetTempFileName
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: Mehrere Instanzen, aber Identische TempDaten vermeiden.

  Alt 21. Jul 2015, 04:46
Hallo,
das ist mir etwas unverständlich.
Wieso sind das verschiedene Apps, warum nicht ein Programm?

Was passiert denn, wenn der "User" App2 startet, wenn App1 noch gar nicht mit der Berechnung fertig ist?

Wenn du das beibehalten willst, solltest du vielleicht verhindern, das App2
überhaupt einfach so gestartet wird, z.B. durch Übergabe eines Parameters.
Nur, wenn App2 mit Parameter gestartet wird, macht sie etwas sinnvolles.

Heiko
Heiko
  Mit Zitat antworten Zitat
Bjoerk

Registriert seit: 28. Feb 2011
Ort: Mannheim
1.384 Beiträge
 
Delphi 10.4 Sydney
 
#5

AW: Mehrere Instanzen, aber Identische TempDaten vermeiden.

  Alt 21. Jul 2015, 12:49
Ob Instanzen von Klassen oder Apps ist für diese Problem unerheblich. Vielleicht nochmal zum besseren Verständnis. Es gibt ca. 200 Apps. Davon sind für den User ca. 80 sichtbar. Nennen wir diese Apps1. Der User kann diese 80 Apps1 querbeet ausführen. Das ist kein Problem weil sich die TempDatenFileNames jeweils unterscheiden. Einzige Ausnahme. Dieselbe App1 wird mehrfach mit derselben Datei ausgeführt. Wie macht das denn z.B. Word?
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#6

AW: Mehrere Instanzen, aber Identische TempDaten vermeiden.

  Alt 21. Jul 2015, 12:55
Jede Anwendungs-Instanz erzeugt sich eine temp. Datei und gibt diesen Dateinamen an die daran folgenden Instanzen weiter.

Jetzt kannst du die Anwendungen starten wie du lustig bist, weil du nicht mehr an den Namen der Ursprungsdatei gekettet bis.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#7

AW: Mehrere Instanzen, aber Identische TempDaten vermeiden.

  Alt 21. Jul 2015, 12:59
Ob Instanzen von Klassen oder Apps ist für diese Problem unerheblich. Vielleicht nochmal zum besseren Verständnis. Es gibt ca. 200 Apps. Davon sind für den User ca. 80 sichtbar. Nennen wir diese Apps1. Der User kann diese 80 Apps1 querbeet ausführen. Das ist kein Problem weil sich die TempDatenFileNames jeweils unterscheiden. Einzige Ausnahme. Dieselbe App1 wird mehrfach mit derselben Datei ausgeführt. Wie macht das denn z.B. Word?
liest sich wie Chaos pur.........
Word blockiert die geöffnete Datei, jeder weitere Versuch des Öffnens wird mir "readonly" bestraft.

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Bjoerk

Registriert seit: 28. Feb 2011
Ort: Mannheim
1.384 Beiträge
 
Delphi 10.4 Sydney
 
#8

AW: Mehrere Instanzen, aber Identische TempDaten vermeiden.

  Alt 21. Jul 2015, 13:15
Nein, kein Chaos. Diese Dateien werden auch wieder sauber entfernt. Mal ne Statik unter Zeitdruck gemacht? Da hat man so 10 Apps gleichzeitig offen, völlig normal..

Sir Rufo, als Parameter ginge natürlich. Dann kann ich auch ggf. besser einen SubPath mitschicken, wäre vermutlich dann einfacher. Wollte eigentlich nur wissen ob es da evtl. einen speziellen Trick bei gibt.. Thanx!
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.346 Beiträge
 
Delphi 11 Alexandria
 
#9

AW: Mehrere Instanzen, aber Identische TempDaten vermeiden.

  Alt 21. Jul 2015, 13:58
Du kannst beim Starten einer zweiten Anwendung auch einfach das schon geöffnete Handle zu der Datei mitgeben, wenn du bei CreateProcess InheritHandles auf True gesetzt hast. Wenn du dazu noch eine MMF benutzt, brauchst du gar keine temporären Dateien mehr. Und sobald das letzte Handle geschlossen ist, wird der Speicherbereich automatisch aufgeräumt.

Du kannst auch eine benannte MMF benutzen, dann kannst du statt des Handles auch deren Namen weitergeben.

Einziger Fallstrick: Beim Start der nächsten Anwendung musst du sicherstellen, dass diese das Handle auch schon geöffnet hat, damit es nicht zu früh aufgeräumt wird.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:53 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz