AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Zwischen Test- und Datenverzeichnis unterscheiden.
Thema durchsuchen
Ansicht
Themen-Optionen

Zwischen Test- und Datenverzeichnis unterscheiden.

Ein Thema von RaSoWa1 · begonnen am 26. Mär 2009 · letzter Beitrag vom 27. Mär 2009
Antwort Antwort
Seite 1 von 2  1 2      
RaSoWa1

Registriert seit: 1. Jun 2006
Ort: Halle/Saale
140 Beiträge
 
Delphi 2010 Professional
 
#1

Zwischen Test- und Datenverzeichnis unterscheiden.

  Alt 26. Mär 2009, 20:11
Hallo,

vor kurzem mußte ich auf Windows Vista umsteigen. Ich bin jetzt dabei die Datenspeicherung meiner Programme "Vista-tauglich" zu machen.
In meinen Programmen speichern jetzt die Daten in "SpecialDirectory(CSIDL_APPDATA)" ab.
Ich bin ein Hobby-Programmierer und schreibe die Programme mit Delphi 6 hauptsächlich um mir das Leben etwas leichter zu machen.
D.h. die Programme werden auf dem gleichen Rechner entwickelt und genutzt.

Nun das Problem:
Beim Testen arbeite ich nun mit meinen echten Daten! Auch die Testversionen speichern ja nun nicht mehr im Prog-Path sondern in AppData!

Ich könnte zwar prüfen in welchem Verzeichnis das Programm läuft (Delpi-Project-Path oder Programm Files) und entsprechen reagieren.
Ich finde, das ist keine gute Lösung. Aber was besseres fällt mir zur Zeit nicht ein.

Hat vielleicht von euch jemand eine bessere Idee?

Ich bin für jeden Ratschlag dankbar.

Gruß Klaus
Klaus
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

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

Re: Zwischen Test- und Datenverzeichnis unterscheiden.

  Alt 26. Mär 2009, 20:18
Such einfach zuerst im eigenen Verzeichnis nach einer Einstellungsdatei und dann erst in den Anwendungsdaten.

Liegt keine Datei in einem der Verzeichnisse, dann zeig einen Einstellungsassitenten an, der den Benutzer u.a. fragt wo die Einstellungen hin sollen, portabel oder ins Anwendungsdatenverzeichnis.
Du kannst ja da auch testen, ob das Programm keine Adminrechte hat gerade und wenn nein, ob es überhaupt ins eigene Verzeichnis schreiben könnte (wenn es welche hätte, könnte es eh schreiben, deshalb musst du die aktuellen Rechte prüfen). Dann brauchst du die Option gar nicht anzubieten, wenn das gar nicht geht.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
RaSoWa1

Registriert seit: 1. Jun 2006
Ort: Halle/Saale
140 Beiträge
 
Delphi 2010 Professional
 
#3

Re: Zwischen Test- und Datenverzeichnis unterscheiden.

  Alt 26. Mär 2009, 22:04
Hallo,

im Prinzip mache ich es schon so wie du vorgeschlagen hast. Zuerst suche ich Dateien im eigenen Verzeichnis (wegen der Abwärtskompatibilität), dann in "C:\Users\Name\AppData". Das Ergebnis der Benutzerabfrage muß ich ja auch in einem dieser Verzeichnisse speichern, damit ich es wiederfinde. Die Restry möchte ich nach Möglichkeit vermeiden.

Das Problem ist:
Ich habe die Programme auf dem Rechner 2 x installiert. Einmal als Vollversion in "C:\Program Files" und einmal als Testversion im Delphi-Verzeichnis.
Die Vollversion speichern die Daten Standardmäßig unter "C:\Users\Name\AppData\ProgrammName", da sie keinen Schreibrechte in "C:\Program Files" hat. Die Testversion benutzt demzuvolge auch das Verzeichnis "C:\Users\Name\AppData\ProgrammName" für die Daten. D.h. ich teste eine neue Version mit den original Daten.

Wie kann ich auf eine einfache Art und Weise erreichen, daß nur das Testprogramm die Daten nach z.B.: "C:\Users\Name\AppData\Test\ProgrammName" speichert?

Gruß Klaus.
Klaus
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

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

Re: Zwischen Test- und Datenverzeichnis unterscheiden.

  Alt 26. Mär 2009, 22:53
Eine Möglichkeit wäre eine Compilerdirektive. Du könntest eine entsprechende Direktive ggf. in einer .inc Datei definieren:{$define UseTestDir} Und in der Unit dann:
Delphi-Quellcode:
{$I MyDefines.inc}

...

SaveFileName := AppDataDir + 'Autor\Programm{$ifdef UseTestDir} + '\Test'{$endif} + 'FileName.ini';
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
Satty67

Registriert seit: 24. Feb 2007
Ort: Baden
1.566 Beiträge
 
Delphi 2007 Professional
 
#5

Re: Zwischen Test- und Datenverzeichnis unterscheiden.

  Alt 26. Mär 2009, 23:00
Ich gebe bei sowas einfach ENTWICKLUNG als Parameter in den Start-Optionen an (Start->Parameter).

Das frage ich dann ab mit:
Delphi-Quellcode:
If ParamStr(1) = 'ENTWICKLUNGthen begin

end else begin

end;
Wobei {$define... schöner aussieht und keinen doppelten Code in der EXE lässt. Gibt es eine Standard-Direktive, die von der IDE (nur in der IDE) gesetzt wird?
  Mit Zitat antworten Zitat
Benutzerbild von Die Muhkuh
Die Muhkuh

Registriert seit: 21. Aug 2003
7.332 Beiträge
 
Delphi 2009 Professional
 
#6

Re: Zwischen Test- und Datenverzeichnis unterscheiden.

  Alt 26. Mär 2009, 23:01
Was sollte es bringen?

Wenn Du kompilierst wäre die Direktive ja existent, also wird auch der Code, der von dieser Direktive beeinflusst wird, in die Exe geschrieben.

Wenn Du die Exe danach außerhalb der IDE aufrufst, ist ja der Code trotzdem drin.
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

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

Re: Zwischen Test- und Datenverzeichnis unterscheiden.

  Alt 26. Mär 2009, 23:03
Richtig, in den Projektoptionen kann man ja auch die Direktiven setzen, das habe ich vergessen, dann braucht man gar keine extra Datei oder so.

Das geht über Projekt --> Optionen --> Verzeichnisse / Bedingungen, unten ist dafür ein Feld.

// EDIT:
Klar ist der Code drin, das soll er ja auch sein. Und in der echten Version wird vor dem Kompilieren die Direktive entfernt.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
Satty67

Registriert seit: 24. Feb 2007
Ort: Baden
1.566 Beiträge
 
Delphi 2007 Professional
 
#8

Re: Zwischen Test- und Datenverzeichnis unterscheiden.

  Alt 26. Mär 2009, 23:03
@Die Muhkuh: Ok, Denkfehler. Da hatte ich wohl Debug und Release Compilierung im Kopf. Muss man dann halt von Hand umschalten.
  Mit Zitat antworten Zitat
Benutzerbild von Die Muhkuh
Die Muhkuh

Registriert seit: 21. Aug 2003
7.332 Beiträge
 
Delphi 2009 Professional
 
#9

Re: Zwischen Test- und Datenverzeichnis unterscheiden.

  Alt 26. Mär 2009, 23:04
Darf man dann aber nicht vergessen, da finde ich es mit der Datei schneller ersichtlich.

Aber wie gesagt: Die Direktive beeinflusst den Code beim Kompilieren und nicht immer zur Laufzeit.
  Mit Zitat antworten Zitat
RaSoWa1

Registriert seit: 1. Jun 2006
Ort: Halle/Saale
140 Beiträge
 
Delphi 2010 Professional
 
#10

Re: Zwischen Test- und Datenverzeichnis unterscheiden.

  Alt 27. Mär 2009, 09:09
Danke an Alle.

Ich hatte auf eine automatische Lösung gehofft. Ich weis genau, dass ich die manuelle Umschaltung ab und zu mal vergessen werde.
Das kleinere Übel ist dann doch der Vorschlag aus meinem 1. Thread. Die zwei Code-Zeilen werde ich dann als Ballast mit herumschleppen. Das ist mir sicherer.

Gruß Klaus.
Klaus
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 11:36 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