| Autor |
Beitrag |
delphijanka
      
Beiträge: 151
WinXP
D 2009 Arc., Java, C
|
Verfasst: Fr 02.10.09 11:43
Hallo.
ich versuche gerade in meinem Programm einige Sachen mit gnuplot darzustellen. Das heißt, der Befehlssatz sowie die Parameter und Koordinaten werden in einer Textdatei geschrieben, welche aus gnuplot heraus aufgerufen werden soll, um Grafik zu erzeugen.
Angenommen, die Datei ist bereits vorhanden. Was ich wissen möchte, wie ich diese mit gnuplot.exe aufrufe.
Die Funktion ShellExecute kenne ich, aber wie übergebe ich außer der exe-datei noch die auszuführende datei?
Danke.
|
|
delphijanka 
      
Beiträge: 151
WinXP
D 2009 Arc., Java, C
|
Verfasst: Fr 02.10.09 11:49
habe gefunden im Net:
"Open SomeText.txt with Notepad
ShellExecute(Handle,'open', 'c:\windows\notepad.exe','c:\SomeText.txt', nil, SW_SHOWNORMAL) ;"
|
|
delphijanka 
      
Beiträge: 151
WinXP
D 2009 Arc., Java, C
|
Verfasst: Mo 12.10.09 13:09
Bin auf ein Problem gestossen: Gnuplot führt die übergebene Datei nicht aus. Ich habe mal gelesen, dass man gnuplot in Umgebungsvariablen bekannt machen soll bzw eine komische LIB-Datei mit allen benutzten Verzeichnissen.
Weiß jemand, wie ich das mache, insbesondere wie ich den Pfad in Umgebungsvariablen mit ner Prozedur hinzufüge?
Danke.
|
|
dummzeuch
      
Beiträge: 593
Erhaltene Danke: 5
Delphi 5 ent, Delphi 6 bis Delphi XE8 pro
|
Verfasst: Di 13.10.09 19:45
delphijanka hat folgendes geschrieben : | Bin auf ein Problem gestossen: Gnuplot führt die übergebene Datei nicht aus. Ich habe mal gelesen, dass man gnuplot in Umgebungsvariablen bekannt machen soll bzw eine komische LIB-Datei mit allen benutzten Verzeichnissen.
|
Hast Du schonmal versucht, ob ein manueller Aufruf aus der Kommandozeile funktioniert:
gnuplot datei.txt
Wenn das funktioniert, dann sollte auch ein Aufruf aus Deinem Programm funktionieren, ohne sonstigen Schnickschnack.
twm
|
|
delphijanka 
      
Beiträge: 151
WinXP
D 2009 Arc., Java, C
|
Verfasst: Mi 14.10.09 11:22
@dummzeuch
Ja, die Datei wird geöffnet, aber nicht ausgeführt. Im Programm gibt es auch zwei Funktionen, einmal öffnen, einmal ausführen.
|
|
dummzeuch
      
Beiträge: 593
Erhaltene Danke: 5
Delphi 5 ent, Delphi 6 bis Delphi XE8 pro
|
Verfasst: Mi 14.10.09 12:33
delphijanka hat folgendes geschrieben : | @dummzeuch
Ja, die Datei wird geöffnet, aber nicht ausgeführt. Im Programm gibt es auch zwei Funktionen, einmal öffnen, einmal ausführen. |
Laut Anleitung laedt gnuplot die Datei und fuehrt die darin aufgefuehrten Befehle aus. Steht denn in der Datei auch ein plot-Befehl, der etwas anzeigt?
twm
|
|
delphijanka 
      
Beiträge: 151
WinXP
D 2009 Arc., Java, C
|
Verfasst: Do 15.10.09 10:44
@dummzeuch
Bei gnuplot gibt es einmal die Funktion open, die nur die Datei öffnet und somit die momentanen internen Daten - den Zustand - aktualisiert. Dann gibt es die Funktion load, die die Daten ausführt. Tut man "load" zusammen mit Datei ausführen, wird also beides gleichzeitig gemacht. Wenn ich aus Delphi heraus die Datei mit gnuplot öffne, dann passiert anscheinend nur "open", aber nicht "load". Im Bereich "Delphi CLX... (3er von oben)" läuft gerade ein Thread (Author: Roboman), wo das Problem diskutiert wird: es lässt sich mittels der Umgebungsvariable und einer LIB-Datei lösen. Aber wie?
Die Lösung des Problems soll natürlich in dem oben genannten Thread gegeben werden, hier in diesem Thread nur die Beschreibung, wie man mittels WinAPI ein Pfad in der "System->Umgebungsvariable" unterbringt.
|
|
jaenicke
      
Beiträge: 19336
Erhaltene Danke: 1751
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Do 15.10.09 10:47
delphijanka hat folgendes geschrieben : | | hier in diesem Thread nur die Beschreibung, wie man mittels WinAPI ein Pfad in der "System->Umgebungsvariable" unterbringt. |
Mittels API gar nicht. Es gibt leider dafür keine Funktion. Ich habe selbst danach einige Monate gesucht.
Funktionieren tut es über die Registry wie hier in der Library beschrieben ist:
www.delphi-library.d...ewtopic.php?p=108571
Bei einem selbst gestarteten Programm könnte man theoretisch auch den Environment Block direkt modifizieren, aber das wäre aufwändiger.
|
|
|