AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi ✔ Kann über WinApi kein Verzeichnis erstellen, über Explorer schon

✔ Kann über WinApi kein Verzeichnis erstellen, über Explorer schon

Ein Thema von Der schöne Günther · begonnen am 13. Nov 2020 · letzter Beitrag vom 13. Nov 2020
Antwort Antwort
Der schöne Günther

Registriert seit: 6. Mär 2013
6.167 Beiträge
 
Delphi 10 Seattle Enterprise
 
#1

✔ Kann über WinApi kein Verzeichnis erstellen, über Explorer schon

  Alt 13. Nov 2020, 17:35
Folgendes Programm kann kein Verzeichnis erstellen:

Delphi-Quellcode:
program Project1;
{$APPTYPE CONSOLE}


uses
  System.SysUtils,
  System.IOUtils,
  WinApi.Windows;

const
   name = 'helloWorld';
begin
   TFile.Create(name);

   if not System.SysUtils.CreateDir(name) then
      WriteLn( SysErrorMessage( GetLastError() ) );

   ReadLn;
end.
System.SysUtils.CreateDir(..) ist im Endeffekt nur ein Alias für Winapi.Windows.CreateDirectoryW(PChar(name), nil) .
Es gibt False zurück und meint die Datei würde schon existieren. Richtig, die Datei existiert. Sollte aber niemanden stören, schließlich will ich ein Verzeichnis anlegen, keine Datei!

Im Explorer hingegen kann ich problemlos ein Verzeichnis mit dem Namen "helloWorld" anlegen. Was stimmt hier nicht?

Ich habe in der Doku zu CreateDirectory keinen Hinweis finden können

Geändert von Der schöne Günther (13. Nov 2020 um 17:47 Uhr)
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.769 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: Kann über WinApi kein Verzeichnis erstellen, über Explorer schon

  Alt 13. Nov 2020, 17:40
Im Explorer geht das auch nicht, wenn eine Datei mit gleichem Namen im Ordner existister.

Die Datei heißt bei Dir helloWorld ohne irgendwelche Extension.

Grüße
Klaus
Miniaturansicht angehängter Grafiken
explorer.png  
Klaus
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.167 Beiträge
 
Delphi 10 Seattle Enterprise
 
#3

AW: Kann über WinApi kein Verzeichnis erstellen, über Explorer schon

  Alt 13. Nov 2020, 17:46
Ich muss irgend etwas Dummes übersehen haben, tatsächlich.

Vielen Dank, wieder was gelernt.
  Mit Zitat antworten Zitat
Benutzerbild von Dalai
Dalai

Registriert seit: 9. Apr 2006
1.682 Beiträge
 
Delphi 5 Professional
 
#4

AW: Kann über WinApi kein Verzeichnis erstellen, über Explorer schon

  Alt 13. Nov 2020, 17:49
Es kann in einem Verzeichnis immer nur ein Objekt mit demselben Namen geben, sei es Datei, Verzeichnis, Symlink oder Hardlink. Wie sollte sonst eine Referenzierung eines Objekts möglich sein, wenn mehrere mit demselben Namen existieren, die Referenzierung aber per Name passiert? Das geht schlicht nicht. Daher ist es nicht möglich, in einem Verzeichnis mehrere Objekte desselben Namens anzulegen. Und ich kenne auch keine Plattform und Dateisystem, bei dem das ginge, solange das Objekt ausschließlich per Name angesprochen wird.

BTW: Ein Verzeichnis ist letztlich auch nur eine Datei mit einem zusätzlichen Attribut.

Grüße
Dalai
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: ✔ Kann über WinApi kein Verzeichnis erstellen, über Explorer schon

  Alt 13. Nov 2020, 18:11
Nicht nur dass eine gleichnamige Datei existiert ... die ist/bleibt auch noch geöffnet.
TFile.Create ohne Freigabe des Streams?

Und relative Pfade, ohne definiertem Urspung (CurrentDirectory), sind sowieso immer eine echt dumme Idee.



Zitat:
Es kann in einem Verzeichnis immer nur ein Objekt mit demselben Namen geben
Physisch ja, "optisch" nein.

In einem deutschen Windows gibt es C:\Programm Files, welches als C:\Programme angezeigt wird, und es gibt auch nochmal ein C:\Programme als unsichtbaren "Link" (hidden+system), damit keiner auf die blöde Idee kommt etwas in C:\Programme speichern zu wollen.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PosEx im Delphi viel seltener praktiziert.

Geändert von himitsu (13. Nov 2020 um 18:17 Uhr)
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.167 Beiträge
 
Delphi 10 Seattle Enterprise
 
#6

AW: ✔ Kann über WinApi kein Verzeichnis erstellen, über Explorer schon

  Alt 13. Nov 2020, 18:48
Nicht nur dass eine gleichnamige Datei existiert ... die ist/bleibt auch noch geöffnet.
TFile.Create ohne Freigabe des Streams?
Das war ja nur ein Test. Dass das keine komplette, ernst gemeinte Software war fand ich offensichtlich 😉
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

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

AW: Kann über WinApi kein Verzeichnis erstellen, über Explorer schon

  Alt 13. Nov 2020, 21:50
Ich muss irgend etwas Dummes übersehen haben, tatsächlich.
Leider werden Dateierweiterungen nach wie vor von Windows standardmäßig ausgeblendet, was meist der Grund für solche Irrtümer ist.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  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 00:44 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