Dateien löschen unter Windows 10Pro

Alle Fragen um die Programmierung, die sich sonst nicht kategorisieren lassen. Von Makro bis Codeblock, von IF bis ENDIF

Moderator: Moderatoren

Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9345
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 359 Mal
Kontaktdaten:

Re: Dateien löschen unter Windows 10Pro

Beitrag von Tom »

Hallo, Otto.

Du bist im Jahr 2014 schon mal mit diesem ominösen "SysRefresh" gekommen. Diese Funktion gibt es nur in FiveWin:

http://wiki.fivetechsoft.com/doku.php?i ... sysrefresh

Davon abgesehen ist sie hier auch unangebracht. Falls das Caching-Problem auftritt, kann es nicht zu einem Absturz in Wolfangs Code führen. Und so lange wir nicht wissen, was diesen - wie hier mehrfach überprüft wurde, grundsätzlich und unter fast allen Betriebssystembedinungen funktionierenden - Code wie zum Abstürzen bringt, ist es auch nicht sinnvoll, noch tiefer im Trüben zu fischen. Vor allem in solch einem Trüben, in dem sich überhaupt keine Lösung befinden kann - es geht nämlich nicht um FiveWin. :wink:
Herzlich,
Tom
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Dateien löschen unter Windows 10Pro

Beitrag von brandelh »

Wenn man sich die Beschreibung von SysRefresh() ansieht:
SysRefresh() –> lQuit

SysRefresh() processes all pending messages, letting Windows keep controlling all its pending activities.
We must use SysRefresh() from inside those processes that may be time consuming.
dann ist das im Prinzip ein Sleep(0) oder Sleep(0.1) ... einfach den aktuellen Task anhalten und Windows Zeit für seine Verarbeitung lassen.
Als Beispiel wird eine lange Verarbeitung in Schleifen genannt, wir könnten dafür auch Threads einsetzen.
Gruß
Hubert
Benutzeravatar
azzo
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 483
Registriert: So, 28. Mär 2010 19:21
Danksagung erhalten: 11 Mal

Re: Dateien löschen unter Windows 10Pro

Beitrag von azzo »

Hallo Tom,
>hier auch unangebracht
>im Trüben zu fischen

Tatsache ist, dass dieses Problem bei Windows 10 Fall Creators Update auftreten kann.
Es kann sehr gefährlich sein, wenn man sich auf file() verlässt.

Nachdem http://www.alaska-software.com/scripts/ ... PDRID=6954
sagt:
“Solution:
No Workaround for this problem known!”

habe ich mir erlaubt, auf das Workaround hinzuweisen.

Eventuell kann man ja die Funktion nachbilden.

LG
Otto

--------------------------------------------------------------


Re: Alternative Funktionen?
Beitrag von brandelh » Mo, 28. Jul 2014 9:14
azzo hat geschrieben:Hallo,
Gibt es in xBase eine ähnliche Funktion wie sysrefresh(), Doevents() oder HB_GCall().
mfg
Otto
Inside long loops call use the command Do events to give the operating system the time to process the messages & events.
Inside Harbour, to scans the memory and releases all garbage memory blocks use the function HB_GCALL()
SysRefresh() sagt mir nichts.
DoEvents() dürfte meiner Funktion doEventLoop() entsprechen http://www.xbaseforum.de/viewtopic.php? ... =eventloop*
HB_GCall() brauchen wir nicht, der automatische GarbageCollector macht seine Arbeit einwandfrei.
Wenn man sehr große Strings verwendet, KANN man ihn unterstützen indem man NIL an die Variable zuweist, so weiß er, dass der Speicher freigegeben werden kann.
Gruß
Hubert
Zuletzt geändert von brandelh am Fr, 23. Feb 2018 8:14, insgesamt 1-mal geändert.
Grund: BRANDELH: Ich habe hier mal den eingefügten Beitrag von mir als Kommentar markiert, damit man das besser lesen kann.
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9345
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 359 Mal
Kontaktdaten:

Re: Dateien löschen unter Windows 10Pro

Beitrag von Tom »

Hallo, Otto.

Das Caching-/Latenzproblem unter Windows 10 CU hat nichts mit Wolfgangs Löschproblem zu tun. Und es gibt unter Xbase++ kein "SysRefresh". Das scheint mir auch eine sehr eigentümliche Funktion zu sein. Sie ist jedenfalls kein Workaround für ein Problem, um das es hier überhaupt nicht geht.
Herzlich,
Tom
Benutzeravatar
azzo
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 483
Registriert: So, 28. Mär 2010 19:21
Danksagung erhalten: 11 Mal

Re: Dateien löschen unter Windows 10Pro

Beitrag von azzo »

Hallo Tom,
das Caching-/Latenzproblem ist für uns alle eine große Herausforderung. Wir brauchen hier eine Lösung.
LG
Otto
Benutzeravatar
azzo
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 483
Registriert: So, 28. Mär 2010 19:21
Danksagung erhalten: 11 Mal

Re: Dateien löschen unter Windows 10Pro

Beitrag von azzo »

DelUser01

Re: Dateien löschen unter Windows 10Pro

Beitrag von DelUser01 »

@Wolfgang

warum aktualisierst Du nicht auf 2.x wenn damit das Problem beheben ist?
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Dateien löschen unter Windows 10Pro

Beitrag von brandelh »

Tom hat geschrieben: Do, 22. Feb 2018 17:12 Und es gibt unter Xbase++ kein "SysRefresh". Das scheint mir auch eine sehr eigentümliche Funktion zu sein.
Sie ist jedenfalls kein Workaround für ein Problem, um das es hier überhaupt nicht geht.
wie ich oben schon geschrieben habe, tut diese Funktion laut Beschreibung nichts als den aktuellen Prozess - meist in einer langen Schleife - zu unterbrechen,
um Windows Zeit für seine Verarbeitung zu lassen. Genau dafür haben wir sleep().

Wenn unter Win 10 LOKAL nun auch die bei Win 7 bei REMOTE Zugriffen eingeführten Wartezeiten (siehe SMB2 Patch) kommt,
bis eine Aktion durchgeführt wird, dann kann warten schon helfen, aber natürlich können wir nicht ewig warten ;-)
(10 Sekunden waren es glaube ich unter Win 7)

Ein Workaround gibt es nicht ! (eventuell aber wieder Schalter in der REG ?)

Wir müssen einsehen, dass M$ den Befehl von der Ausführung trennt und auch gesharte Dateien nicht mehr wirklich zuverlässig sind.
Eine Programmsteuerung die auf gelöschten Dateien besteht (was ich ab und an sehr gerne gemacht habe) ist nicht mehr zukunftsfähig !

Ich selbst habe aktuell aber noch keine Probleme festgestellt.
Gruß
Hubert
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: Dateien löschen unter Windows 10Pro

Beitrag von AUGE_OHR »

Roland Gentner hat geschrieben: Do, 22. Feb 2018 22:31warum aktualisierst Du nicht auf 2.x wenn damit das Problem beheben ist?
hast du ein Demo wo du mit v1.9x den von Wolfgang geschilderten Vorgang nachvollziehen kannst welches unter v2.x dann "wundersamer-weise" laufen soll :roll:

auch sehe ich nicht das PDR 6954 behoben wurde, oder :?:
überhaupt tritt das Problem nicht bei jedem auf ... was "andere" wohl anders machen ... :-"

---
azzo hat geschrieben: Do, 22. Feb 2018 18:00 https://support.microsoft.com/en-us/hel ... rsion-1709
YUP ... davor habe ich schon gewarnt viewtopic.php?f=20&t=10103&p=117499

um es zu überprüfen CMD Box öffnen und

Code: Alles auswählen

Powershell Get-SmbServerConfiguration
eingeben. unter

Code: Alles auswählen

EnableSMB1Protocol : False /True
nachsehen was da steht.

aber auch das sollte nicht dafür sorgen das eine Xbase++ App in einer solchen Situation abstürzt (ohne Errorlog / XppFatal ?)
solange Wolfgang uns nicht mehr erzählt was vorher abläuft und "warum" er überhaupt *.PDF "löschen" :!: will :?:
gruss by OHR
Jimmy
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9345
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 359 Mal
Kontaktdaten:

Re: Dateien löschen unter Windows 10Pro

Beitrag von Tom »

Wolfgangs "Problem" existiert nicht. Dieser Code arbeitet, wie in diesem Thread mehrfach nachgewiesen wurde, mit Xbase++ 1.9, 1.9SL1 und 2.0 völlig fehlerfrei, und zwar unter allen Betriebssystemen ab Windows 7. Wenn es ein Problem gibt, dann liegt das nicht an diesem Code, sondern an der speziellen Situation, die dort im Problemfall besteht. Die Wolfgang aber noch nicht skizziert hat, wie er auch noch nicht erklärt hat, worin sein Problem genau besteht. Herrgottsackra. :angry4:
Herzlich,
Tom
DelUser01

Re: Dateien löschen unter Windows 10Pro

Beitrag von DelUser01 »

Dass neu angelegte Dateien im Explorer nicht gleich sichtbar waren hatte ich bei einem Kunden vor vielleicht einem Jahr.
Windows 10 Creators und Win Server 2008 / 2012.
Das Problem war dann nach 1-2 Monaten und ein paar Windows-Updates wieder weg.
Meinen Programme machten aber bezüglich Datei erstelle, finden, löschen keine Probleme.
Das war nur der Explorer - hat die Leute trotzdem geärgert.
Benutzeravatar
azzo
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 483
Registriert: So, 28. Mär 2010 19:21
Danksagung erhalten: 11 Mal

Re: Dateien löschen unter Windows 10Pro

Beitrag von azzo »

Hallo Hubert,
ich glaube, die sysrefresh() Funktion von FW ist ähnlich wie DoEvents() in VB.
LG
Otto
saul
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 284
Registriert: So, 26. Mär 2006 12:23

Re: Dateien löschen unter Windows 10Pro

Beitrag von saul »

Hallo,
Danke für Eure Tipps. Ich habe folgendes rausgefunden:
Ich nutze W10 1703. Da scheint der Bug auch schon drin zu sein. Der Befehl filedelete() hat das gleiche Problem. Ich habe dann mal eingefügt

Code: Alles auswählen

wait"0"
	filedelete("f:\lfzzeit\Test\Haus\*.pdf")
browse()
?ferror()
wait
wait
Der browse() Bildschirm blitzt ganz kurz auf und dann ist das Programm beendet. Es gibt keine log Datei.
Ich habe mir jetzt so weitergeholfen, dass ich die Dateien am Programmende erst lösche.

mfg
Wolfgang
ramses
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2513
Registriert: Mi, 28. Jul 2010 17:16
Hat sich bedankt: 12 Mal
Danksagung erhalten: 77 Mal

Re: Dateien löschen unter Windows 10Pro

Beitrag von ramses »

Hallo Wolfgang

versuche es doch mal mit folgender Funktion. Ich verwende diese seit einiger Zeit.
Der Filename muss komplett mit Laufwerk+Pfad angegeben werden. Fehlende Werte werden durch Default ersetzt.

Code: Alles auswählen

// ---------------------------------------------------------------------------------
// Ersatz für die Alaskafunktion zum löschen mit wildcards  (wegen Problemen)

#include "dll.ch"

function filedelete( cFname )
local adir,a,cPath
local ret_val := .f.

    cFname := iif( "\" $ cFname, cFname, "\"+curdir()+"\"+ cFname )
    cFname := iif( ":" $ cFname, cFname,  curdrive()+":" + cFname )
    cPath  := left( cFname, rat("\",cFname) )

    adir := directory(cFname,"SR")

    AEval( aDir, { |a| setFileAttributesA(cPath+a[1],32),ret_val:=iif(DeleteFileA(cPath+a[1])!=0, .t., ret_val)} )


return(ret_val)

 DLLFUNCTION DeleteFileA( @cSourceDir ) USING STDCALL from KERNEL32.DLL   // error ret = 0
 DLLFUNCTION SetFileAttributesA( @cSfile, @nAttrib  ) USING STDCALL from Kernel32.dll   // error ret != 0



Gruss Carlo
Valar Morghulis

Gruss Carlo
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9345
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 359 Mal
Kontaktdaten:

Re: Dateien löschen unter Windows 10Pro

Beitrag von Tom »

Wenn das Browse noch kurz "aufblitzt", kann der (vermeintliche) Fehler nicht durchs Löschen ausgelöst werden, denn das findet vorher statt. Und, nein, da ist kein "Lösch-Bug" in Windows. Und, nein, es hilft nicht, die Löschfunktionen von Xbase++ durch API-Aufrufe zu ersetzen, denn das kommt auf dasselbe raus - oder wie, denkt Ihr, ist das Löschen von Dateien aus dem jeweiligen Dateisystem in Xbase++ gelöst? Genau so, wie in allen anderen Windows-Sprachen auch. Durch API-Calls.
Herzlich,
Tom
ramses
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2513
Registriert: Mi, 28. Jul 2010 17:16
Hat sich bedankt: 12 Mal
Danksagung erhalten: 77 Mal

Re: Dateien löschen unter Windows 10Pro

Beitrag von ramses »

Hallo Tom

Lass doch Wolfgang diese Funktion versuchen. Sie ersetzt die Funktion Filedelete aus den xbase++Tools.

Entwickelt wurde diese auch nicht einfach so zum Spass sonden weil uns die Originalfunktion aus den XBase-Tools arge Probleme verursachte.
So wie Sie Wolfgang nun auch erlebt. Und ja auch diese verwendet API-Calls ....

Wenn er die Zeile entfernt und damit das Problem entfernt liegt es doch am Inhalt dieser entfernten Zeile die zum Absturz führt.
Und, nein, da ist kein "Lösch-Bug" in Windows. Und, nein, es hilft nicht, die Löschfunktionen von Xbase++ durch API-Aufrufe zu ersetzen,
Richtig, aber es könnte helfen die Funktionen aus den xbase TOOLS zu ersetzten.


Gruss Carlo
Valar Morghulis

Gruss Carlo
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9345
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 359 Mal
Kontaktdaten:

Re: Dateien löschen unter Windows 10Pro

Beitrag von Tom »

Soll er sich meinetwegen ne Senftransfusion legen - wenn das Browse noch aufgerufen wird, kann kein Fehler beim Löschen aufgetreten sein. Punkt. Das grenzt hier an Schamanismus. :wink:
Herzlich,
Tom
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: Dateien löschen unter Windows 10Pro

Beitrag von AUGE_OHR »

bei Ramses sollte man noch die API Function SetFileAttributesA() herausstellen.
wenn ein File "Read-Only" ist kann man es nicht löschen wenn vorher das Attribut nicht geändert wurde.

wie Tom aber sagt : das hat nichts damit zu tun das die App dann abstürzt :!:
gruss by OHR
Jimmy
DelUser01

Re: Dateien löschen unter Windows 10Pro

Beitrag von DelUser01 »

@Otto

vielleicht habe ich das überlesen:
- sprechen wir über ein lokales Laufwerk,
- ein Netzwerklaufwerk,
- oder ist das egel - es einfach tritt immer auf?
ramses
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2513
Registriert: Mi, 28. Jul 2010 17:16
Hat sich bedankt: 12 Mal
Danksagung erhalten: 77 Mal

Re: Dateien löschen unter Windows 10Pro

Beitrag von ramses »

Hallo Tom

Eine "Senftransfusion" könnte das Problem wohl nicht beseitigen.....

Dass das Browse() noch kurz "aufblitzen" könnte ist durchaus denkbar und wäre auch möglich wenn z.B. vorher der Speicher nicht korrekt aufgeräumt wird.... und dies zum Programmabbruch führt.

SetFileAttributesA() hingegen löscht nicht nur das Read-Only Bit wie Jimmy bemerkt hat sondern auch noch einige andere die zu Sorgen führen.

Gruss Carlo
Valar Morghulis

Gruss Carlo
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9345
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 359 Mal
Kontaktdaten:

Re: Dateien löschen unter Windows 10Pro

Beitrag von Tom »

Ich bin raus, ehrlich.
Möglich auch, dass Wolfgangs Rechner von Dämonen besessen ist, oder? :banghead:
Herzlich,
Tom
DelUser01

Re: Dateien löschen unter Windows 10Pro

Beitrag von DelUser01 »

Guten Abend Tom,

ich beobachte seit Tagen mit Sorge Deine Komentare.
Die Kälte scheint Dünnhäutiger zu machen...
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9345
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 359 Mal
Kontaktdaten:

Re: Dateien löschen unter Windows 10Pro

Beitrag von Tom »

Hallo, Roland.

Kein Grund, sich Sorgen zu machen, trotzdem danke.

Es macht mich einfach etwas fassungslos, wie hier im Ultratrüben rund um ein Problem gefischt wird, das noch nicht einmal genau beschrieben ist. Wir haben hier ja schon originelle Threads gehabt, aber dieser hier toppt echt alles.
Herzlich,
Tom
ramses
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2513
Registriert: Mi, 28. Jul 2010 17:16
Hat sich bedankt: 12 Mal
Danksagung erhalten: 77 Mal

Re: Dateien löschen unter Windows 10Pro

Beitrag von ramses »

Hallo Tom

dass im "trüben" gefischt wird kannst du allerdings vorallem Alaska verdanken.
Da wird am 19.10.17 per mail vor Windows 10 1709 bezw. vor Fehlfunktionen in ferase / file gewarnt.
Sogar ein PDR wurde geöffnet. Dass nun 4 Monate später noch nicht mal weitere Infos betreffend der
deutlichen Warnung vorliegen sollte dich fassungslos machen.

Zudem waren viele Funktionen aus den Tools Ursache für viele Probleme und Ärger. Unter anderem genau solche Probleme wie Sie Wolfgang beschreibt.
Nur so aus Spass habe ich mir die Mühe nicht gemacht die Tool Funktionen durch xbasecode zu ersetzten und komplett auf diese (Tools) zu verzichten.
Meine Probleme waren dadurch beseitigt. Ich habe die Tools seit dem nicht mehr verwendet.
Der einzige "Schamanismus" den ich mir vorwerfen muss ist der anzunehmen dass die aktuellen Tools die Probleme noch immer haben.

Zudem hatte ich den Fall das ein Windows-Upgrade auf einigen Files Attribute setzte die beim Versuch diese Files zu löschen zum Abbruch des Programm führten solange diese erweiterten Attribute gesetzt waren.
Deshalb und zum löschen von Read-Only Files setzte ich die Attribute vor jedem löschen auf 32.!!

Gruss Carlo
Valar Morghulis

Gruss Carlo
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9345
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 359 Mal
Kontaktdaten:

Re: Dateien löschen unter Windows 10Pro

Beitrag von Tom »

Hallo, Carlo.

Der Alaska-PDR verweist auf ein Problem, das nur indirekt alle Löschfunktionen betrifft. Dateien werden nicht sofort als gelöscht anerkannt, nachdem sie gelöscht wurden, und zwar ganz egal, wie sie gelöscht wurden. Das führt dazu, dass sie vorübergehend dennoch gefunden werden, obwohl sie gelöscht sind - File(<cFile>) antwortet noch mit "ja", obwohl <cFile> nicht mehr existiert. Das aber führt weder zu einem Laufzeitfehler, noch zu einem letalen Fehler oder sonstwie zu Problemen. Und auch Dateien, die sich nicht löschen lassen, weil sie längst gelöscht sind, weil die Löschrechte fehlen oder Attribute falsch gesetzt sind, führen nicht zu Laufzeitfehlern oder Abbrüchen. Sie werden einfach nicht gelöscht. Da kann man - Rechte vorausgesetzt (wie?) - noch so wild mit Dateiattributen hantieren, das ändert einfach nichts.

Aber gut, das hat ja alles noch irgendwie Sinn. Man lernt was.

Es hat, und das nervt mich, aber nichts mit Wolfgangs Problem zu tun. Hier ist mehrfach und für mehrere Situationen und Betriebssysteme bewiesen worden, dass sein Code nicht zu Crashes führt, ganz egal, was man macht. Und er selbst hat erstens weder den Crash selbst näher skizziert, noch verifiziert, dass er überhaupt beim Löschen auftritt. Ganz im Gegenteil: Jetzt schreibt er, dass sein Browse noch aufflackert, was ein, zwei Zeilen tiefer im Code passiert, also auf Maschinenebene miles away vom Löschen. Da wird dann hier gemutmaßt, der GC wäre noch nicht so weit oder das Fehlersystem würde hinterherhinken oder so. Heilige Scheiße. Nee, das sagt einfach: Der Fehler ist anderswo. Das, was schon seit fünf Dutzend Forennachrichten feststeht. Aber stattdessen kommt noch der nächste geniale Vorschlag, wie man fehlerfreien Code noch fehlerfreier machen kann. Da kriege ich dann langsam zuviel. Der Versuch, zu helfen, macht keinen Spaß mehr.
Herzlich,
Tom
Antworten