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
 
Delphi.Narium

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

AW: Das eigene Programm skripten/fernsteuern/automatisieren

  Alt 19. Aug 2020, 11: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
 


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 16:57 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