Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   CreateDir legt kein Verzeichnis an (https://www.delphipraxis.net/164126-createdir-legt-kein-verzeichnis.html)

marcibaer 29. Okt 2011 16:51

CreateDir legt kein Verzeichnis an
 
Hallo zusammen,

ich habe einen Fehler, den ich mir nicht erklären kann:

Delphi-Quellcode:
      Nummer := 0;
      REPEAT
        ok := CreateDir(Verzeichnis);
        IF not ok THEN
          begin
            Inc(Nummer);
            o := Pos('~',Verzeichnis);
            if (o > 0) then
              Delete(Verzeichnis,o,255);
            Verzeichnis := Verzeichnis+'~'+IntToStr(Nummer);
          end;
      UNTIL ok;
Klappt bei mir hervorragend, bei 2 Nutzern, die genau so XP benutzen, wie ich, allerdings nicht!:(
D.h. die Routine wird abgearbeitet, CreateDir MUSS also mal TRUE geliefert haben, aber es gibt KEIN
Verzeichnis - Rechnersuche nach einer Datei, die dann IN dem Verzeichnis sein sollte, brachte kein Ergebnis.

Kann das irgendetwas mit Benutzerrechten zu tun haben?!

Iegendwelche Vorschläge!?

Marc

mkinzler 29. Okt 2011 16:53

AW: CreateDir legt kein Verzeichnis an
 
Verwendest du Windos Wista oder Windows 7 und versuchst einen Ordner in einem Verzeichnis anzulegen, in dem du keine Schreibrechtre verfügst? (Dateisystemvirtualisierung)

himitsu 29. Okt 2011 17:04

AW: CreateDir legt kein Verzeichnis an
 
Zitat:

die genau so XP benutzen
Aber Dateirechte gab es da auch schon.
Bei fehlenden Rechten sollte CreateDir es allerdings False zurückliefen.

Wie heißen denn die Verzeichnisse und wo sollen sie erstellt werden?


Test:
Delphi-Quellcode:
      Nummer := 0;
      REPEAT
        ok := CreateDir(Verzeichnis);
        IF not ok THEN
          begin
            ShowMessage('OK');
            ...
          end
        ELSE
          ShowMessage(SysErrorMessage(GetLastError));
      UNTIL ok;

mkinzler 29. Okt 2011 17:05

AW: CreateDir legt kein Verzeichnis an
 
Bei XP kam aber ein Fehler bei fehlenden Rechten und ab Vista ( mit aktiver UAC) wird der Schreibzugriff umgelenkt.

himitsu 29. Okt 2011 17:11

AW: CreateDir legt kein Verzeichnis an
 
Das umlenken geschieht aber nur in bestimmten Verzeichnissen.
Darum auch die Frage nach den Verzeichnisnamen.
Wobei das in XP ja noch kein Problem darstellen sollte.

Zitat:

CreateDir MUSS also mal TRUE geliefert haben, aber es gibt KEIN
Entweder debuggen und nachsehn, was tatsächlich passiert und keine blosen VERMUTUNGEN anstellen,
oder die Funktion loggen, also z.B. Statuswerte und Abarbeitungspunkte abspeichern und dann auswerten.

jaenicke 29. Okt 2011 17:57

AW: CreateDir legt kein Verzeichnis an
 
Vielleicht fehlt auch einfach ein Teil des Pfades, d.h. vielleicht ist es einfach nur ein relativer Pfad. Dann wäre es ja mehr oder weniger Zufall wo das Verzeichnis landet oder eben nicht, wenn man nicht genau weiß was man da tut.

marcibaer 29. Okt 2011 18:11

AW: CreateDir legt kein Verzeichnis an
 
Hi zuammen!

Fehler bei 2x WinXP und 1xWin7.
Ich benutze WinXP und da klappt's.

Zitat:

Aber Dateirechte gab es da auch schon.
Bei fehlenden Rechten sollte CreateDir es allerdings False zurückliefen.
Davon bin ich auch ausgegangen.

Zitat:

Wie heißen denn die Verzeichnisse und wo sollen sie erstellt werden?
Die Verzeichnisse werden NUR im Verzeichnis des Programms angelegt - Namensgebung ist frei.

Zitat:

PS: CreateDir gibt auch True zurück, wenn das Verzeichnis schon vorher existierte.
Das wird vorher überprüft und nur zugelassen, wenn nicht existent.

Zitat:

Bei XP kam aber ein Fehler bei fehlenden Rechten und ab Vista ( mit aktiver UAC) wird der Schreibzugriff umgelenkt.
Wo kann ich die Rechte nachgucken!?

Zitat:

Das umlenken geschieht aber nur in bestimmten Verzeichnissen.
Darum auch die Frage nach den Verzeichnisnamen.
Na, es passiert ja nur folgendes:
existiert im aktuellen Verzeichnis z.B. schon das Verzeichnis A, das nun eigentlich angelegt werden soll, so wird Verzeichnis A~1 draus, existiert das, so Verzeichnis A~2 etc.

Marc

Luckie 29. Okt 2011 18:21

AW: CreateDir legt kein Verzeichnis an
 
Zitat:

Zitat von marcibaer (Beitrag 1133437)
Fehler bei 2x WinXP und 1xWin7.
Ich benutze WinXP und da klappt's.

Und

Zitat:

Die Verzeichnisse werden NUR im Verzeichnis des Programms angelegt - Namensgebung ist frei.
Vermutung, du arbeitest an deinem Rechner als Administrator, die beiden anderen Benutzer nicht, wie man es auch machen sollte.

himitsu 29. Okt 2011 18:39

AW: CreateDir legt kein Verzeichnis an
 
Zitat:

im Verzeichnis des Programms angelegt
Wenn du damit das "Programme"-Verzeichnis meinst, dann (wie Luckie schon sagte) hat dort schon seit vielen Jahren, auch schon zu Zeiten von XP, ein normaler "Benutzer" keine Schreibrechte (zu Recht hat er das nicht, wegen Viren, Trojaner und Co.).

Egal was du machst ... dort speichert man nichts ab.

Unter Win7 und mit aktivem UAC leitet Windows diese Schreibzugriffe in den "virtual store" um, damit auch schrottig programmierte Programme noch "funktionieren".
In Vista hatten sich Viele ja aufgeregt, daß Vista scheiße sei, da viele Programme nicht funktionieren, dabei war das eigentlich nur die Schuld der Programmierer dieser schlechten Programme.

marcibaer 29. Okt 2011 20:31

AW: CreateDir legt kein Verzeichnis an
 
Zitat:

Bei fehlenden Rechten sollte CreateDir es allerdings False zurückliefen.
Tut es aber wohl nicht ... ich habe einem User das Programm mit
Delphi-Quellcode:
  Nummer := 0;
      REPEAT
        ok := CreateDir(Verzeichnis);
        IF not ok THEN
          begin
            ShowMessage('OK');
            ...
          end
        ELSE
          ShowMessage(SysErrorMessage(GetLastError));
      UNTIL ok;
geschickt. Seine Antwort:
Zitat:

klappt leider nicht! Gibt zwar "ok" aus, legt aber kein Verzeichnis an!
Wo legt man denn sinvollerweise die Programmdaten ab?!
"Dokumente und Einstellungen/Username"?
Und wie komme ich daran!?

Marc

Bummi 29. Okt 2011 20:38

AW: CreateDir legt kein Verzeichnis an
 
Zitat:

ok := CreateDir(Verzeichnis);
IF not ok THEN
begin
ShowMessage('OK');
im Ernst <)))<

himitsu 29. Okt 2011 20:50

AW: CreateDir legt kein Verzeichnis an
 
Ups, das NOT hab'sch doch glatt übersehn, also beide Messages austauschen.

Und es werden Verzeichnisse (mit UAC) angelgt ... nur eben umgeleitet im VirtualStore.


Und das Wo findet man dort in einigen der Themen > Hier im Forum suchenBenutzerverzeichnis

marcibaer 30. Okt 2011 13:55

AW: CreateDir legt kein Verzeichnis an
 
Hallo zusammen,

der Fehler ist gefunden - lag GANZ woanders! :)
Trotzdem danke ... dass mit dem Benutzerverzeichnis werde ich mir mal angucken - danke!
Auch wenn das Programm nur von Privatpersonen benutzt wird und die anscheinend alle als Admin eingelockt sind - aber man weiss ja nie und unter Win7 scheint es ja wohl "strenger" geworden sein ...

Marc

himitsu 30. Okt 2011 14:02

AW: CreateDir legt kein Verzeichnis an
 
Scheint?

Das ist Absicht :thumb:,
weil immernoch welche unverbesserlich als Admin rumrennen, obwohl es fast nie nötig ist.
Da meckern alle Windows solle sicherer werden, aber eigentlich ist es vorwiegend wegen sowas unsicher.

Du rennst zwar vielleicht in Win7 als Admin rum, aber dennoch haben nicht automatisch gleich alle deine Programme volle Adminrechte.




Und wo lag er nun, bzw. wie wirkte es sich auf dieses Verzeichnisproblem aus?

marcibaer 4. Nov 2011 09:26

AW: CreateDir legt kein Verzeichnis an
 
Hi!

Tja, der Fehler trat auf, wenn man einige Buttons in einer speziellen Rehenfolge gedrückt hat.
Dabei wurde dann eine Liste, in der die neu angelegten Verzeichnisse vermerkt wurden, nicht geleert, so dass sie beim Beenden des Dialogs wieder entfernt wurden - also nix mit Benutzerrechten o.ä.
Die Reihenfolge hatte ich übersehen, denn sonst klappte es immer - deshalb mein Verdacht.

Trotzdem vielen Dank für die Hilfe.

Hab ich das denn richtig gelesen, dass, um das mit den Benutzerrechten korrekt zu machen, in dem Programmverzeichnis NUR die exe-Datei, die Hilfe-Datei und die delhizip-dll verbleiben?!
Alles andere dann unter "Einstellungen und Dokumente/<Username>/Anwendungsdaten\<Programm>?
Also auch die ini-Datei!?

Marc

Luckie 4. Nov 2011 09:31

AW: CreateDir legt kein Verzeichnis an
 
Zitat:

Zitat von marcibaer (Beitrag 1134438)
Hab ich das denn richtig gelesen, dass, um das mit den Benutzerrechten korrekt zu machen, in dem Programmverzeichnis NUR die exe-Datei, die Hilfe-Datei und die delhizip-dll verbleiben?!
Alles andere dann unter "Einstellungen und Dokumente/<Username>/Anwendungsdaten\<Programm>?
Also auch die ini-Datei!?

Hast du.

p80286 4. Nov 2011 10:06

AW: CreateDir legt kein Verzeichnis an
 
Anders ausgedrückt, alle Dateien in die das Programm schreiben will/muß gehören in das Benutzerverzeichnis.
ggf. wird auch das "all Users"-Verzeichnis genutzt.

Gruß
K-H


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:03 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