AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi Kann Datei oder Ordner nicht löschen

Kann Datei oder Ordner nicht löschen

Ein Thema von EWeiss · begonnen am 30. Nov 2018 · letzter Beitrag vom 1. Dez 2018
Thema geschlossen
Benutzerbild von Dalai
Dalai

Registriert seit: 9. Apr 2006
1.684 Beiträge
 
Delphi 5 Professional
 
#1

AW: Kann Datei oder Ordner nicht löschen

  Alt 30. Nov 2018, 17:05
Kann es sein, dass deine eigene Anwendung in diesem Verzeichnis noch unterwegs ist (durch den Aufruf von ShellExecute)? Delphi-Referenz durchsuchenGetCurrentDir sollte dir das sagen können; ggf. aufrufen vor und nach dem ShellExecute, um zu ermitteln, ob selbiges für das eigene Programm irgendwas am CurrentDir ändert (auch wenn das seltsam wäre).

Grüße
Dalai
 
EWeiss
(Gast)

n/a Beiträge
 
#2

AW: Kann Datei oder Ordner nicht löschen

  Alt 30. Nov 2018, 17:15
Kann es sein, dass deine eigene Anwendung in diesem Verzeichnis noch unterwegs ist (durch den Aufruf von ShellExecute)? Delphi-Referenz durchsuchenGetCurrentDir sollte dir das sagen können; ggf. aufrufen vor und nach dem ShellExecute, um zu ermitteln, ob selbiges für das eigene Programm irgendwas am CurrentDir ändert (auch wenn das seltsam wäre).

Grüße
Dalai
Was ich sagen kann ist das ich die Directory setze mit dem Programm was das andere aufruft.
Das Aufgerufene ist ja Platt mehr oder weniger wenn es beendet ist.
Eventuell das Problem?

SetCurrentDirectory(PWideChar(sFullPath));

OK! Danke denke das war's habe es entfernt ist nicht unbedingt nötig.
Mitunter sitzt das Problem vor dem Bildschirm

gruss

Geändert von EWeiss (30. Nov 2018 um 17:22 Uhr)
 
Benutzerbild von Dalai
Dalai

Registriert seit: 9. Apr 2006
1.684 Beiträge
 
Delphi 5 Professional
 
#3

AW: Kann Datei oder Ordner nicht löschen

  Alt 30. Nov 2018, 19:48
Eventuell das Problem?

SetCurrentDirectory(PWideChar(sFullPath));
Jep, das ist ein Problem. Sinnvoller/besser ist es, wenn du ShellExecute das Arbeitsverzeichnis in lpDirectory übergibst. Oder gibt es einen Grund, warum dein Programm ebenfalls dieses Verzeichnis als aktuelles Verzeichnis setzen müsste?

Grüße
Dalai
 
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.277 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: Kann Datei oder Ordner nicht löschen

  Alt 1. Dez 2018, 01:18
Hallo,
Zitat:
Was kann den Zugriff auf die Datei blockieren? Obwohl diese geschlossen wurde.
Wüsste jetzt nichts darüber das ShellExecute den Zugriff auf Dateien verwehrt nachdem diese geschlossen wurde.
Hm, dann war dir schon klar, dass deine eigene Anwendung Schuld ist,
deren Quellcode wir nicht kennen.
Eine Auskommentieren des ShellExecute hätte Dir gezeigt, dass es nicht dieser Befehl ist.

Wenn Du hier Hilfe erwartest, erwarten wir den freundlichen Fragesteller
und nicht den aggressiven "Ich würde dich gern blocken" Antworter.

PS:
Wir haben gerade das gleiche Problem mit einem USB-Stick,
der sich nach dem Schreiben einer Datei (ohne vorheriges SetCurrentDirectory) nicht freigeben läßt.
Ich hänge der Kollegin diesen Thread-Link mal an
Heiko

Geändert von hoika ( 1. Dez 2018 um 01:31 Uhr)
 
EWeiss
(Gast)

n/a Beiträge
 
#5

AW: Kann Datei oder Ordner nicht löschen

  Alt 1. Dez 2018, 07:18
Zitat:
Oder gibt es einen Grund, warum dein Programm ebenfalls dieses Verzeichnis als aktuelles Verzeichnis setzen müsste?
Wie du schon schreibst es ist das Arbeitsverzeichnis des Programms das ich über einen *.lnk oder direkt starte.
Den weise ich dann zu.
Einen anderen Grund dafür gibt es nicht.

Zitat:
Hm, dann war dir schon klar, dass deine eigene Anwendung Schuld ist, deren Quellcode wir nicht kennen.
Den hatte ich hier schon des Öfteren hochgeladen "OTTB"

Und ja wenn ich eine andere Anwendung starte und anschießend der Pfad dieser geblockt wird kann es nur die eigene Anwendung sein die das Problem verursacht.
Da brauche ich kein Spy-Werkzeug was mir sagt welches Handle\Prozess zugriff auf den Ordner hat.

Zitat:
Eine Auskommentieren des ShellExecute hätte Dir gezeigt, dass es nicht dieser Befehl ist.
Nein hätte es nicht, denn wenn ich die fremde Anwendung nicht vorher starte wird der Ordner auch nicht geblockt.

Zitat:
Sinnvoller/besser ist es, wenn du ShellExecute das Arbeitsverzeichnis in lpDirectory übergibst.
Delphi-Quellcode:
// SetCurrentDirectory(PWideChar(sFullPath));
...
ShellExecuteW(0, nil, PWideChar(sShellTo), PWideChar(sCmdLine), PWideChar(sFullPath),
  Sprite.ShowCmd);
Das tue ich ja..

Nach dem Auskommentieren von SetCurrentDirectory funktioniert es ja jetzt.
Danke! @Dali

gruss

Geändert von EWeiss ( 1. Dez 2018 um 08:44 Uhr)
 
Daniel
(Co-Admin)

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

AW: Kann Datei oder Ordner nicht löschen

  Alt 1. Dez 2018, 08:50
Nach dem Auskommentieren von SetCurrentDirectory funktioniert es ja jetzt.
Na Gott sei Dank.
Ich mache hier mal zu.
Daniel R. Wolf
mit Grüßen aus Hamburg
 
Thema geschlossen

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