Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Speicherort ändert sich selbstständig (https://www.delphipraxis.net/173473-speicherort-aendert-sich-selbststaendig.html)

masta 26. Feb 2013 21:05

Speicherort ändert sich selbstständig
 
Tagchen!

Ich bin dabei ein Programm für eine Einsatzleitung einer Feuerwehr zu programmieren. Dabei sollten alle Daten abgespeichert werden. ich habe den pfad komplett angegeben. Jedoch, wenn ich die exe Datei starte, werden die Dateien an einen anderen Ort abgespeichert.

Zuerst wird ein Ordner für jeden Einsatz erstellt:
der befehl ist :
ForceDirectories('C:\Program Files (x86)\Delphi7SE\Projects\Einsatzleitung\Daten\'+la bel1.caption);
funktioniert auch ohne Probleme, wenn ich es von Delphi aus compiliere.

Wenn ich die, wie gesagt, .exe wähle wird alles in

C:\Users\Bernhard\AppData\Local\VirtualStore\Progr am Files (x86)\Delphi7SE\Projects\Einsatzleitung\Daten\'Dat einame'

gespeichert. Das Problem ist, dass andere (selbst erstellten) Programme auf die Daten zugreifen und weiter bearbeiten bzw. ergänzen.

Weiß irgendjemand wo der Fehler liegt?? bzw. wie ich es anders lösen könnte?

cookie22 26. Feb 2013 21:13

AW: Speicherort ändert sich selbstständig
 
Stichwort Virtualisierung.

Du hast im Programmordner nichts zu speichern, gespeichert wird in "%HOMEPATH%\AppData\Roaming\Dein Programm" bzw. in "%APPDATA%\Dein Programm".

masta 26. Feb 2013 21:30

AW: Speicherort ändert sich selbstständig
 
Bleibt das ganze dann dort auch gespeichert? oder verschwindet das dann, wenn ich das Programm schließe?

jfheins 26. Feb 2013 22:09

AW: Speicherort ändert sich selbstständig
 
So gut wie alles auf der Festplatte außerhalb des Temp Ordners bleibt da bis es jemand löscht und verschwindet nicht "einfach so" ;-)

Popov 26. Feb 2013 22:51

AW: Speicherort ändert sich selbstständig
 
Vergiss am besten gleich den Unsinn mit der Virtualisierung. Microsoft hat vor 18 Jahren Misst gebaut, vor 12 Jahren waren sie auf dem richtigen Weg den Fehler zu korrigieren, haben sich dann aber vor paar Jahren entschlossen den Fehler lieber zu kaschieren. Dass heißt, wenn früher ein Programmierer Misst gemacht hat, dann funktionierte das Programm nicht und der Programmierer war gezwungen in der nächsten Version den Fehler zu korrigieren und ein fehlerfreies Programm zu schreiben. Dank der Virtualisierung fängt Windows (ich glaube ab Vista) den Fehler ab, allerdings mit den von dir genannten Konsequenzen ab.

Mach es lieber gleich richtig. Seit 12 Jahren, aber auch schon vorher, nur in etwas anderen Art, gibt es einen extra Ort um die Daten abzulegen. Es ist der, wie cookie22 es schon angedeutet hat, der Appdata Ordner. Mit der richtigen Funktion liefert Windows den Ordner und da hat man Schreibrechte und nie Probleme.

Such mal Themen zum Thema SpecialDirectorys oder SpecialFolders.

masta 27. Feb 2013 08:55

AW: Speicherort ändert sich selbstständig
 
Vielen Dank für die schnelle Antwort. Werd mich auf die Suche machen. :-)

SebastianZ 27. Feb 2013 16:35

AW: Speicherort ändert sich selbstständig
 
Ich vermute mal, das Problem tritt unter Windows Vista oder höher auf.

Wenn es sich um Einstellungen handelt, die du in eine Datei speicherst ist es am einfachsten C:\programdata\... zu verwenden, da die UAC C:\programme(x86)\virtualisiert.
Wenn es eine Datei ist, die der Benutzer selbst weiter verwenden soll, lass ihn entscheiden wohin die Datei wandert.


Kann mich da meinen Vorredner bezüglich "SpecialDirectorys" und "SpecialFolders" nur anschließen

Dalai 27. Feb 2013 17:29

AW: Speicherort ändert sich selbstständig
 
Zitat:

Zitat von SebastianZ (Beitrag 1205286)
Wenn es sich um Einstellungen handelt, die du in eine Datei speicherst ist es am einfachsten C:\programdata\... zu verwenden [...]

Im Prinzip schon, aber bitte ohne hartkodierte Pfade! Jemandem, der sowas verwendet
Delphi-Quellcode:
ForceDirectories('C:\Program Files (x86)\Delphi7SE\Projects\Einsatzleitung\Daten\'+la bel1.caption);
gehört der Compiler weggenommen, so hart das klingen mag!

Absolute Pfade ja, aber niemals hartkodiert! Dazu gibt es entsprechende API-Funktionen (schon mehrfach erwähntes Stichwort SpecialFolders), die die je nach System passenden Pfade zurückgeben. Ich finde es ehrlich gesagt schlimm, dass man sowas heutzutage immer noch antrifft...

MfG Dalai

p80286 27. Feb 2013 21:30

AW: Speicherort ändert sich selbstständig
 
Naja wenn man bedenkt, daß D7 standardmäßig unter
Delphi-Quellcode:
c:\programme\borland\Delphi\Projekte
speichern will, ist mastas Ansinnen ja nicht so abwegig.

Trotzdem ist das nicht zur Nachahmung zu empfehlen.

Gruß
K-H

Lemmy 27. Feb 2013 22:02

AW: Speicherort ändert sich selbstständig
 
Zitat:

Zitat von p80286 (Beitrag 1205318)
Naja wenn man bedenkt, daß D7 standardmäßig unter
Delphi-Quellcode:
c:\programme\borland\Delphi\Projekte
speichern will, ist mastas Ansinnen ja nicht so abwegig.

doch ist es.. genauso könnte ich MS DOS 6 zur Begründung verwenden, dass es total normal ist Programme direkt unter C:\ zu installieren.

Grüße


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:10 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz