Auftragsverwaltung
Nicht nur Standard Abläufe wie Angebot-Auftrag-Lieferschein-Rechnung können erstellt werden, über frei Konfigurierbare Auftragstypen können viele Prozesse im Unternehmen abgebildet werden.
mehr

image01

Multiprojektverwaltung
mit der Aufgaben weder Nutzer noch Projektgebunden sind. Termine und Abhängigkeiten können über mehrere Projekte hinweg gesetzt werden.
mehr

image01

Dokumentenmanagement
Dateien und Verzeichnisse können an jedem Element verwaltet werden. Alte Dateistände, Datenbankweite Verknüpfungen, Sepzielle Aktionen sind möglich.
mehr

image01

Nachrichtenverwaltung
e-Mail, RSS Feeds,SMS u.ä. können hier verwaltet werden.
mehr

image01

Unit:Exec (uses Exec;)

Sie können wenn Sie in die uses Anweisung des Scrits exec hinzufügen, direkt aus dem Script externe Programme ausführen

Funktionen:
function Exec(cmd : string) : Integer;
Mit dieser Funktion können Sie ein externes Programm starten, cmd gibt den Befel an.
function ExecAndWatch(cmd : string;OnWriteln : TWriteStringEvent) : Integer
Mit dieser Funktion können Sie ein externes Programm starten, cmd gibt den Befel an.OnWriteln wird jedesmal aufgerufen wenn vom Kommandozeilenprogramm eine Zeile ausgegeben wurde. Es ist wiefolgt deklariert:
TWriteStringEvent = procedure (Sender: TObject;s : string)

function ExecActive(Pid : Integer) : Boolean;
Mit dieser Funktion prüfen Sie ob das Programm noch läuft und lesen die Ausgaben des Programms ein. Wenn eine neue Zeile in den Ausgaben aufgetaucht ist, wird die Funktion LineReceived mit einem string als Parameter aufgerufen.

function ExecResult(Pid : Integer) : Integer;
Mit dieser Funktion können Sie den Rückgabewert des Programms holen, nachdem es gelaufen ist.

procedure ExecWrite(Pid : Integer;s : string);
Mit dieser Funktion können Sie auf dei Consele des laufenden Programms schreiben (Eingaben senden).

function Kill(Pid : Integer) : Boolean;
Mit dieser Funktion brechen Sie die Programmausführung sofort ab.

Beispiel:Test.Exec
uses Exec;
procedure ExecLineReceived(s : string);
begin
writeln(s);
end;
var pid : Integer;
begin
pid := Exec('ls -l');
while ExecActive(pid) do;
end.

Dieses Beispiel führt auf Unixen ls -l aus (Dateiliste des aktuellen Verzeichnisses erstellen) und gibt jede Zeile aus.

Beispiel mit OnWriteln:
uses Exec;
procedure ExecLineReceived(Sender : TObject;s : string);
begin
writeln(s);
end;
var pid : Integer;
begin
pid := ExecAndWatch('ls -l',@ExecLineReceived);
while ExecActive(pid) do;
end.