AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi Das eigene Programm skripten/fernsteuern/automatisieren
Thema durchsuchen
Ansicht
Themen-Optionen

Das eigene Programm skripten/fernsteuern/automatisieren

Ein Thema von TigerLilly · begonnen am 19. Aug 2020 · letzter Beitrag vom 19. Aug 2020
Antwort Antwort
Seite 1 von 2  1 2      
TigerLilly

Registriert seit: 24. Mai 2017
Ort: Wien, Österreich
1.205 Beiträge
 
Delphi 11 Alexandria
 
#1

Das eigene Programm skripten/fernsteuern/automatisieren

  Alt 19. Aug 2020, 11:06
Könnt Ihr mir bitte mal beim Ideen sammeln helfen?

Ich möchte einzelne Funktionen meines Programm automatisiert ausführen lassen. Da gibt es zB eine Funktion, um Dateien von einem FTP Server downzuloaden, eine andere, um diese Dateien dann zu importieren, wieder eine andere um Ergebnisse wieder hochzuladen. Das möchte ich jetzt von außen parametrisiert anstoßen können.

Vielleicht sowas wie
CommandDispatcher.Add(sVerb : String; Action : TProc);

CommandDispatcher.Execute;
Und das schaut, ob via ParamString Aktionen übergeben wurden + führt dann die Actions aus.
Parameter und Fehlerbehandlung braucht es natürlich auch noch.

Anderen Ideen oder Input?

Danke!
  Mit Zitat antworten Zitat
Jumpy

Registriert seit: 9. Dez 2010
Ort: Mönchengladbach
1.736 Beiträge
 
Delphi 6 Enterprise
 
#2

AW: Das eigene Programm skripten/fernsteuern/automatisieren

  Alt 19. Aug 2020, 11:29
Soll das Programm mit einem Parameter gestartet werden und die entsprechende Aktion machen und sich dann wieder beenden?
Oder soll es die ganze Zeit laufen und von außen Befehle bekommen, was es machen soll?
Ralph
  Mit Zitat antworten Zitat
TigerLilly

Registriert seit: 24. Mai 2017
Ort: Wien, Österreich
1.205 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Das eigene Programm skripten/fernsteuern/automatisieren

  Alt 19. Aug 2020, 11:31
Ah, ja, gute Frage.

Das Programm soll starten, abarbeiten und sich beenden.
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Das eigene Programm skripten/fernsteuern/automatisieren

  Alt 19. Aug 2020, 11:34
Wenn es ein laufender Process ist kann man IPC oder MMF ganz gut verwenden.


Roter Text besagt das gegenteil.
Dann simpel über Parameter auswertung.
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.453 Beiträge
 
Delphi 12 Athens
 
#5

AW: Das eigene Programm skripten/fernsteuern/automatisieren

  Alt 19. Aug 2020, 11:41
Das Programm soll starten, abarbeiten und sich beenden.
Ich erstellen in so einem Fall in der Regel eine eigene Kommandozeilenversion. Wenn die einzelnen Funktionalitäten sauber in eigenen Units (unabhängig von Forms) implementiert sind, ist der Pflegeaufwand nur minimal. Das ist immer noch besser, als eine GUI-Anwendung künstlich wie eine Kommandozeilenanwendung agieren zu lassen.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von dummzeuch
dummzeuch

Registriert seit: 11. Aug 2012
Ort: Essen
1.604 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#6

AW: Das eigene Programm skripten/fernsteuern/automatisieren

  Alt 19. Aug 2020, 11:50
Vielleicht wäre auch eine Scriting-Engine eine Idee?

Z.B. mittels DelphiWebScript oder der Scripting-Engine von FastReport?
Thomas Mueller
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.490 Beiträge
 
Delphi 7 Professional
 
#7

AW: Das eigene Programm skripten/fernsteuern/automatisieren

  Alt 19. Aug 2020, 12:12
Habe das mal so gemacht:

Programmstart ohne Parameter = Gui für den Anwender und der kann machen was er will.

Programmstart mit Parameter:

Der Parameter ist eine Inidatei.

In der Inidatei steht drinne, was gemacht werden soll.

Alles, was von außen gesteuert werden konnte, war in einer TAction einer TActionList "gekapselt".

In der Ini stehen die Namen der auszuführenden TActions in der Reihenfolge, in der sie ausgeführt werden sollen.

Z. B.:
Code:
[AutoStart]
ActionFTPDownload
ActionImport
Der Quelltext im Programm sieht dann in etwa so aus:
Delphi-Quellcode:
procedure TFormMain.ActionAutostartExecute(Sender: TObject);
var
  i : Integer;
  k : Integer;
  Ini : TIniFile;
  sl : TStrings;
begin
  sl := TStrings.Create;
  Ini := TIniFile.Create(ChangeFileExt(Application.ExeName,'.ini'));
  ini.ReadSection('Autostart',sl);
  Ini.Free;
  for k := 0 to sl.Count do begin
    for i := 0 to ActionList.ActionCount - 1 do begin
      if ActionList.Actions[i].Name = sl[k] then begin
        if Assigned(tAction(ActionList.Actions[i]).OnExecute) then begin
          tAction(ActionList.Actions[i]).OnExecute(Nil);
        end;
      end;
    end;
  end;
  sl.Free;
  Close;
end;
in der DPR wird es in etwa so aussehen:
Delphi-Quellcode:
begin
  Application.Initialize;
  Application.CreateForm(TFormMain, FormMain);
  if ParamCount > 0 then begin
    FormMain.ActionAutostartExecute(Nil);
  end else begin
    Application.Run;
  end;
end.
Du hast damit ein Programm "für alles" und benötigst keine Scriptengine (wobei ich hier PascalScript von RemObjects nehmen würde).

Wenn es im Programm mal eine oder n neue Actions gibt, brauchst Du diese für die Batchverarbeitung nicht extra nochmal implementieren, einfach in die INI eintragen und gut is.

Und wenn die Executemethoden der Actions nichts weiter als den Aufruf von bereits vorhanden Routinen enthalten, ist das auch ausreichend. Die Programmlogik muss also nicht zwingend in den Actions "abgefackelt" werden.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.063 Beiträge
 
Delphi 12 Athens
 
#8

AW: Das eigene Programm skripten/fernsteuern/automatisieren

  Alt 19. Aug 2020, 12:37
In einer EXE geht schon.
Als GUI Anwendung erstellen und beim Start prüfen, ob aus Konsole gestartet.
Wenn ja, dann dort die Statusausgabe und ansonsten die GUI starten/anzeigen.
Außer man will die Fortschrittsanzeige wirklich dennoch immer in der GUI haben, egal ob mit Parameter aus einem Link, Start>Windows>Ausführen oder aus einer Console oder Batch gestartet. (aus einem Konsolenfenster oder mit StdOut-Umleitung oder ohne)


Ich hoffe das in etwa ist nicht ganz wörtlich gemeint.

sl.Count-1
try-finally ?
TStrings.Create ?
warum OnExecute aufrufen, anstatt Execute?
und die Groß-/Kleinschreibung zu ignorieren kann nicht schaden

Komisch ist auch, dass die ActionList keine FindAction(Name)-Methode bietet und man die Items selbst durchlaufen muß.

Delphi-Quellcode:
var
  i : Integer;
  S : string;
  Ini : TIniFile;
  sl : TStrings;
begin
  sl := TStringList.Create;
  try
    Ini := TIniFile.Create(ChangeFileExt(Application.ExeName, '.ini'));
    Ini.ReadSection('Autostart', sl);
    for S in sl do //for k := 0 to sl.Count - 1 do
      for i := 0 to ActionList1.ActionCount - 1 do
        if SameText(ActionList1.Actions[i].Name, S) then
          ActionList1.Actions[i].Execute;
  finally
    Ini.Free;
    sl.Free;
    Close;
  end;
end;
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.490 Beiträge
 
Delphi 7 Professional
 
#9

AW: Das eigene Programm skripten/fernsteuern/automatisieren

  Alt 19. Aug 2020, 12:44
Es ging um 'ne Idee und nicht um 'nen fertigen Code.

Hab' nich' ma' probiert, ob's kompiliert werden kann.

Dass man dazu eine vernünftige Fehlerbehandlung braucht, sollte für Profis eigentlich klar sein. Die entsprechende Transferleistung von der Idee zu vollständigen und korrekter Implementierung erwarte ich da einfach.
  Mit Zitat antworten Zitat
hoika

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

AW: Das eigene Programm skripten/fernsteuern/automatisieren

  Alt 19. Aug 2020, 12:47
Hallo,
ich würde ich eine Ini und/oder einen Parameter nehmen,
je nachdem, wie viele Daten für die automatische Funktion benötigt werden.
Heiko
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 21:39 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