Forum: Object-Pascal / Delphi-Language
by Moombas,
8. Jun 2020
Ok, das mit den Parametern kenne/weiß ich. Das mit dem umbenennen war mir neu, weil mir das bisher noch nie als use-case aufgetreten ist.
Wenn ich @Jaenicke also richtig verstehe: Programm starten -> In diesem benennt die Update-Prozedur die eigene Exe um, kopiert die neue rein und startet diese und beendet die alte.
Die neue löscht dann wiederum die umbenannte exe und alles ist schick mit...
Forum: Object-Pascal / Delphi-Language
by Moombas,
8. Jun 2020
Du kannst ja eine Datei nicht überschreiben, während diese noch läuft. Daher kommst du über eine separate Exe (oder ähnliches) nicht drum herum.
Aber eben diese würde ich trotzdem halt in Delphi schreiben, weil es für dich "Training" bedeutet und der Umfang dessen mit der Zeit steigen wird (je nach Programmumfang).
Es ist zudem einfacher, ein solches Programm mit wachsen zu lassen, als dieses...
Forum: Object-Pascal / Delphi-Language
by Moombas,
8. Jun 2020
@Kratos: Da dein Problem behoben zu sein scheint, möchte ich nochmal hier drauf eingehen (s.o.).
Das hört sich nach einer Update-Routine an.
Klingt evtl. etwas merkwürdig aber ich würde es (gerade zum Lernen) an deiner Stelle auch in Delphi schreiben.
Insbesondere wenn solche Update-Routinen später etwas umfangreicher werden, z.B. mit der Einbindung einer Möglichkeit des Rollback, falls das...
Forum: Object-Pascal / Delphi-Language
by Moombas,
8. Jun 2020
Naja Detailreich fand ich sie nun nicht.
Generell kann ich dir bei soetwas nur empfehlen, wie es Günther schrieb: Schau dir das wo es nicht funktioniert im Debugger an und/oder gebe einfach mal aus (hier der Pfad+Dateiname), was du an eine Funktion übergibst (sofern generiert und nicht fix übergeben).
Dann wird man in der Regel schnell fündig wo der Hase im Pfeffer liegt.
Forum: Object-Pascal / Delphi-Language
by Moombas,
8. Jun 2020
Nein :) Das war ein Beispiel um zu zeigen, das diese nicht ausgeführt werden kann, weil der Name falsch zusammen gesetzt wird.
Deine .Bat behält deinen gewünschten Namen (_DELETE_COPY_EXECUTE.bat).
Du kannst zur Kontrolle auch temporär dir die Zusammensetzung mal ausgeben lassen (hilft evtl. dabei das zu verstehen):
procedure TForm5.pnlUpdateMessageClick(Sender: TObject);
var
...
Forum: Object-Pascal / Delphi-Language
by Moombas,
8. Jun 2020
@Kratos du wendest es ja auch falsch an:
So wäre es richtig:
procedure TForm5.pnlUpdateMessageClick(Sender: TObject);
var
ExecResult: Integer;
begin
try
ExecResult := ShellExecute(0, 'open', 'cmd', PChar('/c ' + ExtractFilePath(ParamStr(0)) + '_DELETE_COPY_EXECUTE.bat'), nil, SW_SHOWNORMAL);
Forum: Object-Pascal / Delphi-Language
by Moombas,
8. Jun 2020
Anmerkung: ParamStr(0) gibt einem doch folgendes aus (Pfad ist Beispielhaft): C:\PROGRAM FILES\BORLAND\DELPHI7\PROJECTS\PROJECT1.EXE
Somit kann er die Batch nicht ausführen, denn daraus würde sich ergeben:
(Pfad ist Beispielhaft) C:\PROGRAM FILES\BORLAND\DELPHI7\PROJECTS\PROJECT1.EXE_DELETE_COPY_EXECUTE.bat
Ersetze ParamStr(0) durch ExtractFilePath(ParamStr(0)).
Dann sollte es...