Werte an ein anderes Programm weitergeben

Anfängerfragen zum Programmieren mit PureBasic.
sobi
Beiträge: 170
Registriert: 05.02.2005 23:41
Wohnort: passau
Kontaktdaten:

Werte an ein anderes Programm weitergeben

Beitrag von sobi »

Hallo,
ist es möglich, variablen an ein anderes Programm weiter zu geben, dass mit runprogram() gestartet wird?
LG - Simon
Sorgen sind wie Blumen, wenn man sie nicht gießt, gehen sie ein.
a14xerus
Beiträge: 1440
Registriert: 14.12.2005 15:51
Wohnort: Aachen

Beitrag von a14xerus »

als parameter senden und mit progamparameter () empfangen
sobi
Beiträge: 170
Registriert: 05.02.2005 23:41
Wohnort: passau
Kontaktdaten:

Beitrag von sobi »

a14xerus hat geschrieben:als parameter senden und mit progamparameter () empfangen
hmmm und wie lege ich einen Parameter fest?
wenn ich

Code: Alles auswählen

RunProgram("program.exe", "parameter")
verwende klappt das nicht...
Sorgen sind wie Blumen, wenn man sie nicht gießt, gehen sie ein.
a14xerus
Beiträge: 1440
Registriert: 14.12.2005 15:51
Wohnort: Aachen

Beitrag von a14xerus »

Code: Alles auswählen

;Parameter - By Alexander N for PB 4.0
;#########################################
;für 1 parameter:
;prog 1: (name egal)
RunProgram("prog.exe","test","")

;#########################################
;prog 2: (prog.exe / gleiches verzeichnis)
Debug ProgramParameter()

;#########################################
;#########################################
;#########################################

;für mehrere Parameter:
;prog 1: (name egal)
para.s = ""
para + Chr(34) + "parameter 1"+Chr(34) + " "
para + Chr(34) + "parameter 2"+Chr(34) + " "
para + Chr(34) + "parameter 3"+Chr(34) + " "
RunProgram("prog.exe",para,"")

;#########################################
;prog 2: (prog.exe / gleiches verzeichnis)
anzahl = CountProgramParameters()
i = 0
Repeat
  Debug ProgramParameter()
  i + 1
Until i >= anzahl
;#########################################
/edit: nicht getestet, müsste aber klappen
Benutzeravatar
AND51
Beiträge: 5220
Registriert: 01.10.2005 13:15

Beitrag von AND51 »

Du könntest ruhig ersteinmal selber in die Hilfe gucken, dann siehst du, dass du ab PB 4 auch Umgebngsvariablen an dein Programm weitergeben kannst!

SetEnvironmentVariable() (glaub ich). Schau einfach mal in die process-Library.
PB 4.30

Code: Alles auswählen

Macro Happy
 ;-)
EndMacro

Happy End
Benutzeravatar
rolaf
Beiträge: 3843
Registriert: 10.03.2005 14:01

Beitrag von rolaf »

Möglichkeit 2, die zu übergebenden Daten in eine INI-Datei oder in der Zwischenablage speichern und vom anderen Programm wieder abholen.
:::: WIN 10 :: PB 5.73 :: (x64) ::::
Benutzeravatar
AND51
Beiträge: 5220
Registriert: 01.10.2005 13:15

Beitrag von AND51 »

Das fällt dann aber schon in die Kategorie "2 Programme kommunizieren". Dazu gibt es schon recihlich Threds (man könnte z. B. die Netzwerk Befehele benutzen).

zwischenablage? Das wird dann aber die meisten benutzer sehr verärgern, wenn sie wegen einem dummen programm ihre zwisschenablage nicht benutzen könnten.
PB 4.30

Code: Alles auswählen

Macro Happy
 ;-)
EndMacro

Happy End
sobi
Beiträge: 170
Registriert: 05.02.2005 23:41
Wohnort: passau
Kontaktdaten:

Beitrag von sobi »

[quote="AND51"]Du könntest ruhig ersteinmal selber in die Hilfe gucken, dann siehst du, dass du ab PB 4 auch Umgebngsvariablen an dein Programm weitergeben kannst![quote]

Einfach so davon ausgehen, dass ich nicht in die Hilfe gekuckt habe, entspricht nicht der Wahrheit... :) Manchmal kommt man einfach, trotz Hilfe nicht weiter. - Und da bin ich sehr froh darüber, dass es ein Forum gibt, wo fähige Leute (wie zb. in diesem Fall a14xerus sind, die einem weiter helfen) - Ist ja auch der Sinn und Zweck eines Forums... :)

Deswegen hier noch mal ausdrücklich vielen Dank an a14xerus, mein Fehler war, dass ich die Verzeichnis nicht festgelegt habe... :))

Über INI - Datein habe auch nachgedacht, fand das aber nicht ganz so "elegant" :)
Schönen Sonntag und danke für die Hilfe,
Simon
Sorgen sind wie Blumen, wenn man sie nicht gießt, gehen sie ein.
super_castle
Beiträge: 557
Registriert: 29.11.2005 15:05

Beitrag von super_castle »

man könnte z. B. die Netzwerk Befehele benutzen
das interessiert mich einmal. ich kenne mich mit der netzwerkprogrammierung überhaupt nicht aus.

wäre nett, wenn du mal 2 einfache beispiele schreiben könntest, die einfach einen wert von einem laufenden programm an das andere übergeben mit den vorhandenen netzwerkbefehlen.

danke.

mfg
Benutzeravatar
AND51
Beiträge: 5220
Registriert: 01.10.2005 13:15

Beitrag von AND51 »

super_castle hat geschrieben:
man könnte z. B. die Netzwerk Befehele benutzen
das interessiert mich einmal. ich kenne mich mit der netzwerkprogrammierung überhaupt nicht aus.

wäre nett, wenn du mal 2 einfache beispiele schreiben könntest, die einfach einen wert von einem laufenden programm an das andere übergeben mit den vorhandenen netzwerkbefehlen.
En Beispiel befindet sich bereits auf deinem PC!

Schau dir bitte mal die Beispieldateien im Kapitel "Network" an. beim Server sieht du die Zeile ReceiveNetworkData(). Dies ist der Kernbefehl zum Empfangen von Daten. Empfangene Daten müssen in einen MemorySpeicher oder eine Variable mit pointer eingelesen werden.

Beim Client siehst du SendNetworkString (die Anfänger-freundliche-Variante) oder SendNetworkData() (die Profi-Variante). Diese Befehle dient natürlich zum Sneden von Daten.

Bevor du Daten zwischen zwei Programmen senden kannst, müssen beide Programme erfolgreich InitNetwork() ausführen. Eines der Programme öffnet dabei einen Server (CreateNetworkServer()), das andere Programm muss sich zu dem Server verbinden (OpenNetworkCOnnection()). befinden sich beide Programme (wie in diesem Thread verlangt wird) auf demselben computer, reicht die IP 127.0.0.1. Man kann aber auch Ip Adressen anderer Server im LAN angeben (sofern auf dem dortigen Computer ein Server offen ist) oder sogar einen Computer anvisieren, der überrs Internet bereit steht!

Bitte schau dir die Beispiele ersteinmal an, parallel dazu die aufgeschlagene Hilfedatei. Du wirst feststellen, dass das Kapitel Network gar nicht so schwierig ist! Ich persönlich finde die Netzwerk-befehle einfacherer als z. B. alle Sprite oder 3D Befehle.

Tipp: Wenn man es geschickt anstellt und z. B. Schleifen benutzt kann man auch ganze Arrays oder LinkedLists versenden. Ich bin mir grad nicht sicher, aber da man ja Pointer angeben muss, wo die Daten dann ausgelesen werden, müsste es sogar ohne Schleifen möglich sein, ganze Arrays zu verschicken.
PB 4.30

Code: Alles auswählen

Macro Happy
 ;-)
EndMacro

Happy End
Antworten