AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte Datei-/Verzeichnisname als DatenTyp
Thema durchsuchen
Ansicht
Themen-Optionen

Datei-/Verzeichnisname als DatenTyp

Ein Thema von Sir Rufo · begonnen am 7. Feb 2011 · letzter Beitrag vom 17. Feb 2020
Antwort Antwort
Benutzerbild von Sir Rufo
Sir Rufo

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

AW: Datei-/Verzeichnisname als DatenTyp

  Alt 7. Feb 2011, 21:03
Zitat:
Trotz der impliziten Umwandlung in einen String akzeptiert die Format-Funktion diesen Record nicht als Parameter. Darum so:
Nja, da Format, bzw. das Open-Variant-Array "mehrere" Typen entgegennehmen kann, weiß der Compiler nicht, welchen Typen er nun genau nehmen soll (so intelligent, um nachzusehen, daß eigentlich nur der eine "String" möglich wäre, ist Delphi anscheinend leider nicht )
War ja auch nur als Hinweis gedacht, damit sich niemand wundert
Delphi-Referenz durchsuchenExpandFileName/MSDN-Library durchsuchenGetFullPathName nimmt leider das aktuelle Arbeitsverzeichnis ... schön wäre es aber, wenn dein Code das Programmverzeichnis (der EXE) als Ausgangspunkt nutzen würde.
> also entweder selber Parsen
> oder das aktuelle Arbeitsverzeichnis ändern (danach natürlich wieder zurück)
- Es gibt leider nichts (zumindestens hab ich noch nichts gefunden),
welches wie GetFullPathName arbeitet und wo man selber einen Ausgangspfad angeben kann (es sei denn da wird ebenfalls geparst)

Wenn am Anfang 'A:\' bis 'Z:\' vorkommt, dann kannst du das GetCurrentDirectory/SetCurrentDirectory notfalls auch überspringen.

PS: MSDN-Library durchsuchenGetLongPathName und MSDN-Library durchsuchenGetShortPathName
Nee, eine Pfadangabe "..\Pfad\Datei.dat" bezieht sich immer und überall auf das aktuelle Arbeitsverzeichnis. Das Verhalten möchte ich nicht ändern. Finde ich immer komisch, wenn auf einem System die gleichen Parameter und Befehle ein anderes Ergebnis liefern.

Für einen relativen Bezug zum Anwendungsverzeichnis nimmt man halt
MyFileName := '$(app)\..\Pfad\Datei.dat';
Und dem Directory könnte man auch einen Enumerator verpassen, um dann voa For-In alle Dateien aufzulisten, bzw. mehrere Enumeratoren als Record-Funktion, für Dateien, Verzeichnisse und mit Parametern zur Auswahl.
das werde ich auf jeden Fall noch übernehmen
[add]
Operatoren, um _FileName und _DirName zu casten wären gut, damit dort die RAW-Werte übergeben werden und nicht über den String-Umweg diese Infos verloren gehn. Wobei man auch alles hätte in einen Typen packen können, um nicht casten zu müssen ... beim Zugriff auf Dir-Eigenschaften, bei einer Datei, einfach eine Exception auslösen.
Öh, die sind doch drin

Delphi-Quellcode:
MyFileName := '$(app)\..\Pfad\Datei.txt';
MyDirName := MyFileName;
ShowMessage( MyDirName.Raw ); // -> $(app)\..\Pfad
MyFileName := 'Datei.txt';
MyFileName := MyDirName;
ShowMessage( MyFileName.Raw ); // -> $(app)\..\Pfad\Datei.txt
Allerdings nur bei der Record-Definition _DirName, was auch ausreicht
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
schlecki

Registriert seit: 11. Apr 2005
Ort: Darmstadt
148 Beiträge
 
Delphi XE2 Enterprise
 
#2

AW: Datei-/Verzeichnisname als DatenTyp

  Alt 20. Apr 2011, 12:25
Hallo,

wo gibt es denn die insSpecialFolders.pas?
  Mit Zitat antworten Zitat
Benutzerbild von s.h.a.r.k
s.h.a.r.k

Registriert seit: 26. Mai 2004
3.159 Beiträge
 
#3

AW: Datei-/Verzeichnisname als DatenTyp

  Alt 20. Apr 2011, 12:31
Schau mal ans Ende des ersten Beitrags. Dort gibt es ein Link für den Download.

Oha, ich ziehe meine Antwort zurück. Hatte gedacht, dass die Datei im angehängten ZIP-File zu finden ist.

ABER: es gibt die Datei hier im Forum, und zwar genau hier
»Remember, the future maintainer is the person you should be writing code for, not the compiler.« (Nick Hodges)

Geändert von s.h.a.r.k (20. Apr 2011 um 12:34 Uhr)
  Mit Zitat antworten Zitat
schlecki

Registriert seit: 11. Apr 2005
Ort: Darmstadt
148 Beiträge
 
Delphi XE2 Enterprise
 
#4

AW: Datei-/Verzeichnisname als DatenTyp

  Alt 20. Apr 2011, 13:25
ABER: es gibt die Datei hier im Forum, und zwar genau hier
danke für den Link, hätte ich auch selbst finden können

Ich glaub, die insSpecialFolders.pas braucht man gar nicht! Einfach aus den uses löschen.
das sieht tatsächlich so aus, aber man kann da vielleicht auch noch was draus gebrauchen
  Mit Zitat antworten Zitat
mytbo

Registriert seit: 8. Jan 2007
479 Beiträge
 
#5

AW: Datei-/Verzeichnisname als DatenTyp

  Alt 17. Feb 2020, 13:32
Hallo!

Vielen Dank für die Units.

In der Version zum Herunterladen sind aber noch Fehler.

Unit insFileName

Es funktioniert nur, wenn USE_SPECIALFOLDERS definiert ist.
In der Funktion class operator _FileName.implicit fehlt ein
{$ELSE}tmp := a.Raw;

Den Funktion _MagicPart.DecIdx und _MagicPart.IncIdx fehlt der
Rückgabewert Result := FIdx.

Bis bald...
Thomas
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#6

AW: Datei-/Verzeichnisname als DatenTyp

  Alt 20. Apr 2011, 12:54
Also irgendwie hast du teilweise das FileSystem-Objekt von VBScript nachprogrammiert.

Man könnte auch direkt die Microsoft Scripting Runtime als Typbibliothek importieren und benützen.
Das wäre mal ein interessanter Job herauszufinden in wie weit man diese ActiveX-DLL direkt in Delphi gebrauchen kann.
Vielleicht noch einige Hilfsfunktionen zu bequemeren Erzeugung der Objekte sowie eine Demo-Anwendung hinzu...
Andreas
  Mit Zitat antworten Zitat
Jens01

Registriert seit: 14. Apr 2009
673 Beiträge
 
#7

AW: Datei-/Verzeichnisname als DatenTyp

  Alt 20. Apr 2011, 12:58
Ich glaub, die insSpecialFolders.pas braucht man gar nicht! Einfach aus den uses löschen.
  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 00: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