DataLab ist ein kompaktes Statistikprogramm zur explorativen Datenanalyse. Weitere Informationen finden Sie auf den DataLab Webseiten ....



Steuerung durch externe Programme

DataLab kann durch andere Programme gesteuert werden, in dem eine WM_CopyData Message an DataLab gesendet wird, die entweder einen Dateinamen enthält (.IDT- und .ASC-Files werden unterstützt) oder den Namen einer DataLab-Skript-Datei (Endung .ISC). Enthält die Message keinen gültigen Dateinamen, so wird je nach Einstellung des Schalters "Fehlermeldungen für externe Steuerung anzeigen" die Message entweder ignoriert, oder aber eine entsprechende Fehlermeldung ausgegeben.

Der Dateiname kann entweder absolut (voll spezifiziert mit Laufwerksbuchstabe, Pfad und Namen) oder ohne Pfad angegeben werden. Bei Angabe ohne Pfad nimmt DataLab an, dass eine Datei aus dem momentanen Arbeitsverzeichnis verwendet werden soll.

Falls der Dateiname die Endung '.IDT' oder '.ASC' enthält, wird das entspechende Datenfile geladen. Ist die Datei ein Skript (Endung '.ISC') so wird dieses geladen und ausgeführt.

Zur Steuerung von DataLab durch ein externes Programm muss dieses zuerst ein DataLab-Skript erzeugen und den Dateinamen dieses Skripts dann an DataLab senden.

Nach dem Senden der Message an DataLab wird ein Fehlercode zurückgegeben:

Fehlernummer Erklärung
99 die in der Message spezifierte Datei existiert nicht
4 unbekannter Befehl
3 fehlendes Argument
2 eckige Klammern stimmen nicht überein
1 fehlender Variablenindex
0 alles OK, die Daten wurden geladen, bzw. das Skript erfolgreich ausgeführt
-1 fehlende Zuweisung in einer mathematischen Formel
-2 ungültiger Bezeichner für die Zielvariable
-3 linke Seite der Gleichung ist falsch
-4 die Klammern auf der rechten Seite der Gleichung stimmen nicht überein
-5 arithmetischer Fehler (z.B. Division durch Null)
-6 Variablenzuweisung nicht komplett
-7 Die Zielvariable ist kategorial

Beispiel: Die folgende Delphi-Routine zeigt ein Beispiel zur Ansteuerung von DataLab durch ein externes Programm:
(**************************************************************************)
function TForm1.SendMsgToDataLab (DLMsg: string): integer;
(**************************************************************************)

var
  copyDataStruct : TCopyDataStruct;
  receiverHandle : THandle;

begin
copyDataStruct.dwData := 0;
copyDataStruct.cbData := 1 + Length(DLMsg);
copyDataStruct.lpData := PChar(DLMsg);
receiverHandle := FindWindow(PChar('TFrmDataLab'), nil);
if receiverHandle = 0
  then result := -9999
  else result := SendMessage (receiverHandle, WM_COPYDATA,
                             Integer(Handle), Integer(@copyDataStruct)) ;
end;


Last Update: 2012-Aug-05