Per Batch-Aufruf erstelle Datei lässt sich nicht löschen.
-
Hallo zusammen,
in einem Programm erzeuge ich eine Batch-Datei, die Systeminformationen ausliest und in eine Datei "installierte Stimme.txt" schreibt. Alles funktioniert wie gewünscht.
Jedoch lässt sich die Datei "installierte Stimme.txt" im Windows Explorer nicht löschen.Erstelle ich die Datei dagegen per manuellem Batch-Aufruf, ist das Löschen kein Problem.
Woran liegt das?Batch-Datei:
cmd /k Balabolka\balcon -l > "installierte Stimme.txt"
Programmcode:
AnsiString asDatei = "temp.bat"; AnsiString asBatchzeile = "cmd /k Balabolka\\balcon -l > \"installierte Stimme.txt\""; TStringList* sl = new TStringList(); sl->Add(asBatchzeile); sl->SaveToFile(asDatei); sl->Free(); ShellExecute(NULL, "open", asDatei.c_str(), "", NULL, SW_HIDE);
Gruß Leo
-
Schreib mal lieber
delete s1;
statt
s1->Free();
-
Warum überhaupt eine
TStringList
zum Beschreiben einer Batch-Datei?Wenn schon VCL (anstatt über die C++ Standard Library), dann wohl eher TFileStream oder TTextWriter.
-
@Burkhi sagte in Per Batch-Aufruf erstelle Datei lässt sich nicht löschen.:
Schreib mal lieber
delete s1;
statt
s1->Free();
Warum
new
in the first place?
-
Die meisten VCL-Objekte müssen mit
new
erstellt werden (nur Basisdatentypen wie z.B.(Ansi)String
können auch auf dem Stack abgelegt werden) - hat damit zu tun, daß die VCL selbst größenteils in Delphi geschrieben ist.
Es gibt ansonsten auch vom C++ Compiler eine Fehlermeldung (weiß aber nicht mehr, wie die heißt).
-
Mit welchen Rechten wird das Programm gestartet, welches das batch file aufruft?
Bzw. welche Rechte/Besitzer hat das File wenn es vom Programm angelegt wurde.Vermutlich wird das Programm unter einem anderen Benutzer gestartet und dadurch ist der Besitzer der Datei auch dieser Benutzer (da das Batch file im kontext des Programms gestartet wurde)
-
@Th69 sagte in Per Batch-Aufruf erstelle Datei lässt sich nicht löschen.:
Die meisten VCL-Objekte müssen mit
new
erstellt werden (nur Basisdatentypen wie z.B.(Ansi)String
können auch auf dem Stack abgelegt werden) - hat damit zu tun, daß die VCL selbst größenteils in Delphi geschrieben ist.
Es gibt ansonsten auch vom C++ Compiler eine Fehlermeldung (weiß aber nicht mehr, wie die heißt).C++ error : Delphi-style classes must be allocated with 'new'
-
@Th69 sagte in Per Batch-Aufruf erstelle Datei lässt sich nicht löschen.:
Die meisten VCL-Objekte müssen mit
new
erstellt werdenYes, no, is clear.
-
@Swordfish
Das ist tatsächlich so. Wenn du die aufm Stack erstellen willst bekommste ne Fehlermeldung, dass sie nicht auf´m Stack erzeugt werden können. Und als Bonus kommen die auch nicht mitmake_shared
klar.
-
@DocShoe Ok. Dann wegwerfen. Gaaaaanz weit.
-
@Swordfish sagte in Per Batch-Aufruf erstelle Datei lässt sich nicht löschen.:
@DocShoe Ok. Dann wegwerfen. Gaaaaanz weit.
Du ahnst nicht, wie gern ich das tun würde... Embarcadero/Idera (aktuellen Besitzer bitte hier eintragen) feiern ihren Mist wie Geschnittenes Brot in Scheiben. Und es gibt immer noch Leute, die den Scheiß auch noch kaufen.
-
@DocShoe sagte in Per Batch-Aufruf erstelle Datei lässt sich nicht löschen.:
aktuellen Besitzer bitte hier eintragen
ich kenne den Mist noch von Zeiten als er Borland hieß. Trotzdem wegwerfen.
-
@firefly Der angemeldete User hat Administratoren-Recte, das heißt Vollzugriff. Auch bcb.exe, das Hauptprogramm BatchLabor.exe, temp.bat sowie 'installierte Stimme.txt' verfügen über Vollzugriff.
Die Datei 'installierte Stimme.txt' kann ich erst nach Neustart löschen. So etwas habe ich bisher nicht erlebt.
Irgendwelche andere Ideen?!
-
@Leo-Freitag sagte in Per Batch-Aufruf erstelle Datei lässt sich nicht löschen.:
Irgendwelche andere Ideen?!
nein
-
LockHunter installieren und gucken, welcher Prozess das verhindert.
-
@Th69 Könntest vielleicht mit einem oder zwei weiteren Sätzen erklären, warum "(...) wohl eher TFileStream oder TTextWriter"?!
-
@DocShoe Danke für den Tipp. Habe LockHunter installiert und finde heraus, dass cmd.exe das Löschen verhindert.
-
@Swordfish sagte in Per Batch-Aufruf erstelle Datei lässt sich nicht löschen.:
@Leo-Freitag sagte in Per Batch-Aufruf erstelle Datei lässt sich nicht löschen.:
Irgendwelche andere Ideen?!
nein
Wenn du nichts zu sagen hast, dann lass es doch einfach.