AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

WorkingDirectory festlegen

Ein Thema von Johannes013 · begonnen am 21. Aug 2009 · letzter Beitrag vom 24. Aug 2009
Antwort Antwort
Seite 2 von 2     12
invalid_operation
(Gast)

n/a Beiträge
 
#11

Re: WorkingDirectory festlegen

  Alt 22. Aug 2009, 00:01
Zitat von Johannes013:
Ich weiß, dass man keine relativen Pfadangaben machen soll.
IMHO sollte man keine absoluten Pfadangaben machen

Anscheinend sind die Fachleute in diesem Thread seltsamerweise anderer Meinung

Wird man durch die Schweinegrippe denn wirklich sofort ...
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.534 Beiträge
 
Delphi 11 Alexandria
 
#12

Re: WorkingDirectory festlegen

  Alt 22. Aug 2009, 00:05
Vielleicht ist Deine Definition von relativen und absoluten Pfadangaben zu unserer einfach nur inkompatibel
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
invalid_operation
(Gast)

n/a Beiträge
 
#13

Re: WorkingDirectory festlegen

  Alt 22. Aug 2009, 00:12
Zitat von jaenicke:
Es gibt die Delphifunktion SetCurrentDir und die API-Funktion SetCurrentDirectory.

Allerdings muss dir klar sein, dass sich das Verzeichnis jederzeit ändern kann, deshalb sind absolute Pfadangaben in 99,99% aller Fälle die einzige wirklich sinnvolle Möglichkeit...
99,99% sind für absolute Pfadangaben garantiert, oder?

Der Rest von uns programmiert für 100-99,99

LG und gute Nacht für's heutige Mitlesen
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

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

Re: WorkingDirectory festlegen

  Alt 22. Aug 2009, 04:17
Zitat von Johannes013:
ich habe keine Ahnung wie ich einen String mit PChar verbinden kann.
Wenn du einen PChar brauchst:PChar(DeinString + DeinPChar) Und wenn du einen String brauchst, dann einfach nur mit +, dann brauchst du das PChar() nicht.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#15

Re: WorkingDirectory festlegen

  Alt 22. Aug 2009, 06:18
Ich verwende ausschließlich relative Pfadangaben in Stringkonstanten, und zwar relativ zu einem benutzerdefinierten Stammverzeichnis. Absolute Pfadangaben in einer Anwendung sind irgendwie unflexibel. Allerdings ist jede Pfadangabe letztendlich ja eine Absolute, auch wenn sie implizit auf einem per SetCurrentDir gesetzten Standardverzeichnis aufbaut.

Auf jeden Fall steht dieses Stammverzeichnis in der Registry oder in einer INI-Datei im Benutzerpfad für Applikationsdaten. Wenn das Zielsystem es erfordert, schmeisse ich die INI-Datei in das Verzeichnis der EXE oder definiere einfach, das das Stammverzeichnis identisch mit dem Verzeichnis der EXE ist. Dann hat der Anwender eben keine Wahl. Ja ja, letzteres soll man ja angeblich nie machen, aber bei embedded Maschinenanwendungen fällt man auf die Schnautze, wenn der Techniker eine neue Flashcard einbaut und nur das Programmvezeichnis gesichtert hat, nicht jedoch die Applikationsdaten bzw. die Registry.

Das Stammverzeichnis und alle anderen Verzeichnisse widerum sind öffentliche Eigenschaften eines Applikationsdatenmoduls. Jede meiner Anwendungen hat mindestens so ein Ding. Dort sind alle Einstellungen und daraus ableitbare Daten enthalten, die das Verhalten und Aussehen meiner Anwendung steuern. Dazu gehören neben den Verzeichnissen auch Optionen, Farben usw. usw.

Ich würde niemals auf die Idee kommen, mit SetCurrentDir zu arbeiten, dafür ist mir mein AppDataModule einfach zu übersichtlich. Ich weiss immer genau, wo meine Daten stehen.

Ein Applikationsdatenmodul könnte so aussehen:
Delphi-Quellcode:
Type
  TAppData = Class
  private
    fStammverzeichnis : String;
  Public
    Procedure Load;
    Constructor Create;
    Function Stammverzeichnis : String;
    Function Datenverzeichnis : String;
  End;

Implementation
Const
  DATENUNTERVERZEICHNIS = 'Daten';

Procedure TAppData.Load;
Begin
  fStammverzeichnis := ExtractFilePath(ParamStr(0));
// Und falls das Stammverzeichnis in einer INI-Datei oder der Registry liegt, lese ich es eben von da aus.
// Und falls das Stammverzeichnis doch knallhart auf 'D:\Programmdaten' gesetzt werden soll (Himmel hilf!), setze ich das eben hier
End;

Constructor TAppData.Create;
Begin
  Load;
End;

Function TAppData.Stammverzeichnis : String;;
Begin
  Result := IncludeTrailingPathDelimiter (fStammverzeichnis);
End;

Function TAppData.Datenverzeichnis : String;
Begin
  Result := IncludeTrailingPathDelimiter (Stammverzeichnis+DATENUNTERVERZEICHNIS);
End;
...
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

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

Re: WorkingDirectory festlegen

  Alt 22. Aug 2009, 07:12
Und wenn es fast ganz ohne eigenen Aufwand sein soll:
http://www.delphipraxis.net/internal....php?p=1042717
Die Klasse verwaltet Einstellungen oder andere Daten automatisch, man kann entweder fest festlegen, dass es z.B. das Anwendungsdatenverzeichnis sein soll oder dem Benutzer die Wahl lassen, usw.

Zitat von alzaimar:
Absolute Pfadangaben in einer Anwendung sind irgendwie unflexibel.
Mit absoluten Angaben meinte ich natürlich solche, die aus einem Basisverzeichnis wie dem Anwendungsdatenverzeichnis oder bei portablen Anwendungen oder Datenzugriffen dem der Exe und ggf. einem Unterverzeichnis gebildet werden.
Das meinte ich als Abgrenzung gegen den von dir auch genannten impliziten Bezug auf das aktuelle Arbeitsverzeichnis, das ja schon ein simpler Dateidialog ändert, nicht als festen Pfad wie "c:\...".
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
Johannes013

Registriert seit: 2. Jun 2009
179 Beiträge
 
Delphi 5 Standard
 
#17

Re: WorkingDirectory festlegen

  Alt 24. Aug 2009, 18:17
Danke, jetzt gehts.........
Johannes
Der folgende Satz ist richtig.
Der vorherige Satz ist falsch.
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 17:30 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