AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Delphi und schrottige/undurchdachte/chaotische File-APIs?

Delphi und schrottige/undurchdachte/chaotische File-APIs?

Ein Thema von himitsu · begonnen am 22. Mär 2018 · letzter Beitrag vom 23. Mär 2018
Antwort Antwort
Daniel
(Co-Admin)

Registriert seit: 30. Mai 2002
Ort: Hamburg
13.920 Beiträge
 
Delphi 10.4 Sydney
 
#1

AW: Delphi und schrottige/undurchdachte/chaotische File-APIs?

  Alt 22. Mär 2018, 11:12
Wenn ich mal aus einem XE3 zitieren darf:

Delphi-Quellcode:
class function TDirectory.Exists(const Path: string; FollowLink: Boolean = True): Boolean;
begin
  Result := DirectoryExists(Path, FollowLink);
end;
TDirectory.Exists ist nicht mehr als ein Wrapper für die entsprechende Funktion aus der Unit SysUtils.
Ja, man kann sich natürlich auch gleich entrüsten etc. - aber vielleicht schaut man vorher kurz nach.
Daniel R. Wolf
mit Grüßen aus Hamburg
  Mit Zitat antworten Zitat
Benutzerbild von sh17
sh17

Registriert seit: 26. Okt 2005
Ort: Radebeul
1.682 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Delphi und schrottige/undurchdachte/chaotische File-APIs?

  Alt 22. Mär 2018, 11:49
Wenn ich mal aus einem XE3 zitieren darf:

Delphi-Quellcode:
class function TDirectory.Exists(const Path: string; FollowLink: Boolean = True): Boolean;
begin
  Result := DirectoryExists(Path, FollowLink);
end;
TDirectory.Exists ist nicht mehr als ein Wrapper für die entsprechende Funktion aus der Unit SysUtils.
Ja, man kann sich natürlich auch gleich entrüsten etc. - aber vielleicht schaut man vorher kurz nach.
"entrüst", anders herum hätte mehr Sinn gemacht. (geht aber sicher wegen Unitabhängigkeiten nicht)
Sven Harazim
--
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.374 Beiträge
 
Delphi 12 Athens
 
#3

AW: Delphi und schrottige/undurchdachte/chaotische File-APIs?

  Alt 22. Mär 2018, 11:58
Das mit dem unterschiedliechen Verhalten zwischen SysUtils und IOUtils, betrifft vor allem die Funktionen zum Zerlegen von Pfaden. (Drive/Path/Dir/Name/Ext)

Warum das DirectoryExists True liefert, nur im Debugger, hab ich noch nicht untersucht.
Bin an 'nem anderen Fehler dran und brauchte eine schnelle Lösung, für das hier.


System:
Server 20016 R2 (relativ frisch installiert), Delphi XE (noch), IDEFixPack, DDevExtensions, GExperts, CnPack (bei mir Beides zu großen Teilen deaktiviert, weil nervig), DevExpress, Devart PgDAC, FireDAC, DocuInsightPro, Eurekalog, FastReport, TChartPro, ImageEn usw.

AQTime Pro, aber nicht in der IDE installiert und auch das Vorinstalliere aus der IDE rausgeworfen, weil es ständig Probleme macht.
(obwohl es nicht verwendet wird, findet man es innerhalb der IDE überall im Stacktrace, welcher auch manchmal dort abbricht)
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (22. Mär 2018 um 12:02 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.045 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#4

AW: Delphi und schrottige/undurchdachte/chaotische File-APIs?

  Alt 22. Mär 2018, 16:32
Bli bla blubb, TDirectory.Exists ist sogar mit inline markiert, d.h. es kommt exakt derselbe Binärcode heraus, egal ob nun SysUtils.DirectoryExists oder TDirectory.Exists aufgerufen wird.

Aber einfach mal bisschen Cargo cult verbreiten

Ich tipp ja mal auf pebcak
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight

Geändert von Stevie (22. Mär 2018 um 16:35 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.374 Beiträge
 
Delphi 12 Athens
 
#5

AW: Delphi und schrottige/undurchdachte/chaotische File-APIs?

  Alt 22. Mär 2018, 16:47
"Ich" hatte nie gesagt, dass TDirectory.Exists und DirectoryExists sich unterscheiden.

TPath.ChangeExtension und ChangeFileExt
TPath.GetExtension und ExtractFileExt
tuen das aber definitiv

Im Debugger war mir nur leider aufgefallen, dass TDirectory.Exists immer True lieferte, obwohl weder Datei noch Verzeichnis mit diesem Namen existierten. (ergab eine schöne Entlosschleife)

Und weil mich diese sinnlos doppelt Abfrage ala if TDirectory.Exists() or TFile.Exists() sowieso störte und ein Blick in den Code von FileExists und DirectoryExists zeigten, dass es damit auch nur auf ein if FileExists() or DirectoryExists() hinaus liefe, hatte ich das einfach mal schnell durch ein if GetFileAttributes() <> INVALID_FILE_ATTRIBUTES ersetzt und nicht weiter drüber nachgedacht, weil das Problem nun weg war. Dabei war mir nur wieder einmal die Kommentierung bezüglich TPath.ChangeExtension aufgefallen und es hat mich angekotzt, dass schon mehrmals unnötig viel Zeit dafür drauf ging.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#6

AW: Delphi und schrottige/undurchdachte/chaotische File-APIs?

  Alt 22. Mär 2018, 20:26
Im Debugger war mir nur leider aufgefallen, dass TDirectory.Exists immer True lieferte, obwohl weder Datei noch Verzeichnis mit diesem Namen existierten. (ergab eine schöne Entlosschleife)
Sicher?

if not(directoryexists(blabla) then forcedirectory(blub) Funktioniert vollkommen richtig

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.374 Beiträge
 
Delphi 12 Athens
 
#7

AW: Delphi und schrottige/undurchdachte/chaotische File-APIs?

  Alt 23. Mär 2018, 00:23
ForceDirectory prüft intern ebenfalls auf Exists.

Und ja, sicher.
Zwei Mal beim Debuggen aufgefallen und auch nochmal nach Beenden und Neustart von IDE+Programm war das Verhalten noch so.

Hier im Debugger des XE3 nicht nachstellbar, obwohl ja praktisch noch der selbe Code.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Benutzerbild von Sherlock
Sherlock

Registriert seit: 10. Jan 2006
Ort: Offenbach
3.811 Beiträge
 
Delphi 12 Athens
 
#8

AW: Delphi und schrottige/undurchdachte/chaotische File-APIs?

  Alt 23. Mär 2018, 07:49
Wäre es nicht hilfreich, die betroffene (veraltete) Delphi-Version etwas deutlicher hervorzuheben? Schließlich könnte man sich diesen Thread dann in einer ruhigen Minuten gönnen, ohne gleich in Schockstarre zu verfallen.

Sherlock
Oliver
Geändert von Sherlock (Morgen um 16:78 Uhr) Grund: Weil ich es kann
  Mit Zitat antworten Zitat
Antwort Antwort

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 07: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