AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Dateipfad in Variable speichern?

Ein Thema von Kevinpptx · begonnen am 19. Okt 2022 · letzter Beitrag vom 19. Okt 2022
Antwort Antwort
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#1

AW: Dateipfad in Variable speichern?

  Alt 19. Okt 2022, 13:02
Bin mir gerade nicht sicher was ForceDirectory macht, falls das Verzeichnis bereits existiert. Es kann dann ja nicht erzeugt werden. Ist das Ergebnis dann auch False? Dann wäre die Kapselung in einer Function, wie ich es vorgeschlagen habe, besser. Abgesehen davon muss man berücksichtigen, das ForceDirectory immer einen voll qualifizierten Pfad benötigt (steht auch in der Doku). Das ist im Beispiel des TE zwar gegeben, sollte aber beachtet werden.
Wenn die Bedingungen erfüllt sind, würde ich auch ForceDirectory bevorzugen. Ein Try..Except ist dennoch sinnvoll, falls mal ein Leerstring übergeben wird, da ForceDirectory in dem Fall eine Exception bringt. Aber es kann auch sein, dass DirectoryExists dann auch schon einen Fehler produziert. Müsste man mal prüfen.
Es gibt True zurück wenn es den Pfad erstellen konnte bzw wenn der Pfad bereits existiert.
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
Kevinpptx

Registriert seit: 10. Okt 2022
Ort: Sachsen
29 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Dateipfad in Variable speichern?

  Alt 19. Okt 2022, 13:34
Danke für die ganzen Ideen! Ich konnte einiges umsetzen
  Mit Zitat antworten Zitat
Benutzerbild von Harry Stahl
Harry Stahl

Registriert seit: 2. Apr 2004
Ort: Bonn
2.561 Beiträge
 
Delphi 12 Athens
 
#3

AW: Dateipfad in Variable speichern?

  Alt 19. Okt 2022, 14:41
Alternativ könnte man das auch so machen (Unit System.IOUtils wird benötigt):

Delphi-Quellcode:
type
  TProfiles = (p1, p2, p3, p4);

var
  Basepath : String = 'H:\testend\profil';

  SelectedPath: String;

var
  Form26: TForm26;

implementation

{$R *.dfm}

function ExistsOrCreateDir (APath: String): Boolean;
begin
    try
    if not TDirectory.Exists(APath) then begin
      System.IOUtils.TDirectory.CreateDirectory(APath);
    end;
  finally
    Result := TDirectory.Exists (APath);
  end;
end;


procedure TForm26.Button1Click(Sender: TObject);
begin
  SelectedPath := BasePath + Succ (Ord (p1)).tostring;
  if ExistsOrCreateDir (SelectedPath) then begin
    //...
  end;
end;
Die Verwendung von TDirectory ist Plattformübergreifend und erhöht somit die Wiederverwendbarkeit des Codes.
Intern verwendet TDirectory ForceDirectories, wenn erforderlich und schmeißt eine Exception mit einem entsprechenden veständlichen Hinweis, wenn z.B. ein nicht existierendes Laufwerk im Basepath verwendet wird.

Mit dieser Variante kann man Basepath leicht abändern und das ganze flexibel auf einem anderen Laufwerk einsetzen.

Je nach dem, könnte man auch eine eigene Klasse bilden (hängt vom sonstigen Code ab).

Edit: Kurz nach dem Post fiel mir auf, dass Du ja noch den ausgewählten Path für weitere Aktionen brauchst, daher hier noch etwas abgeändert.

Geändert von Harry Stahl (19. Okt 2022 um 15:26 Uhr)
  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 09:38 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