Variablen austausch zwischen zwei Programmen?

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
GreyEnt
Beiträge: 376
Registriert: 20.07.2006 19:41

Variablen austausch zwischen zwei Programmen?

Beitrag von GreyEnt »

Hallo Jungs,
Wenn ich ein Zweites Programm mittels RunProgramm(...) starte, kann ich dann mit den Befehlen ReadProgramString(...) bzw. WriteProgramString(...) Variable austauschen?

Oder gibt es evtl. eine Art SharedMemory wo beide Programme drauf zugreifen können?

Vielen dank schonmal.
MfG
Dieter
Ich progge PureBasic weil Jägermeister nen dicken Kopf macht.
Benutzeravatar
Kiffi
Beiträge: 10711
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: Variablen austausch zwischen zwei Programmen?

Beitrag von Kiffi »

GreyEnt hat geschrieben:Oder gibt es evtl. eine Art SharedMemory wo beide Programme drauf zugreifen können?
jetzt rate mal, was an Treffern zurückkommt, wenn man hier im Board nach
'SharedMemory' sucht ;-)

Grüße ... Kiffi
a²+b²=mc²
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

>> ReadProgramString(...) bzw. WriteProgramString(...)

>> SharedMemory

das kommt immer drauf an, was für Programme das sind und was du machen willst.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
GreyEnt
Beiträge: 376
Registriert: 20.07.2006 19:41

Beitrag von GreyEnt »

@Kiffi
sorry wuste nicht das SharedMemory ein regulärer PB Begriff ist.
Recht haste ja. Nicht wissen schützt vor strafe nicht. :oops:

@Frosch
Es geht um eine Anwendung mit WindowedScreen. Einen Map Editor.
Diese Anwendung braucht beim starten verdächtig lange zum aufbau der Gadgets. Und unter Linux bekomme ich es garnicht hin zu starten.

Da wolte ich mal probieren:
Ein Main-Programm was die ganze arbeit verrichtet. Und ein Screen-Programm was "nur" die Tiles darstellt.
Ich progge PureBasic weil Jägermeister nen dicken Kopf macht.
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

kannst du mir das projekt mal zukommen lassen?
... vielleicht find ich ja nen knackpunkt ...


bei deiner problemstellung brauchst du nicht unbedingt in zwei exe trennen,
du kannst das auch in einer Exe in zwei threads machen.

allerdings musst du drauf achten, dass du dann die Fenster-Geschichten in einen thread auslagerst,
(mit nem screen gabs da irgendwelche probleme, bin jetzt aber nicht sicher, welche)
und dass du ALLES was Fenster und Gadgets betrifft im SELBEN thread händelst.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
Ja!
Beiträge: 271
Registriert: 02.01.2006 16:13
Wohnort: Stuttgart

Beitrag von Ja! »

Hi,

wenn ich meinen Senf zugeben darf..
Habe meinen Mapeditor einfach mit nem MDI-Gadget gemacht.
Funktioniert wunderbar u ist schnell.
Ohne Threads. :-)

Aber ich vermute auch wie Kaeru, daß da iwo ein Fehler bei Dir hockt..

Gruß
Udo
PureBasic 3.94 ; 4.2 ; 4.3
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7028
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Beitrag von STARGÅTE »

wahrscheinlich hat er FlipBuffers() und das ganze zeug zusammen mit den WindowsEvents in einer schleife, denn dann laggen die Gadget wirklich extrem.

es sollte immer so sein :

Code: Alles auswählen

Repeat
 Repeat
  Event = WaitWindowEvent(1)
  ; ...
 Until Not Event
 ClearScreen()
 ; ...
 FlipBuffers()
 ; ...
Until ...
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Benutzeravatar
GreyEnt
Beiträge: 376
Registriert: 20.07.2006 19:41

Beitrag von GreyEnt »

vielen dank.
hier erstmal der Link:
http://home.arcor.de/platzke/

Bitte auf MDVMapedit klcken.

@Stargate: Das muß ich mal sofort untersuchen. Mir ist ja so ziemlich alles zuzutrauen.
Ich progge PureBasic weil Jägermeister nen dicken Kopf macht.
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

STARGÅTE hat geschrieben:wahrscheinlich hat er FlipBuffers() und das ganze zeug zusammen mit den WindowsEvents in einer schleife, denn dann laggen die Gadget wirklich extrem.

es sollte immer so sein :

Code: Alles auswählen

Repeat
 Repeat
  Event = WaitWindowEvent(1)
  ; ...
 Until Not Event
 ClearScreen()
 ; ...
 FlipBuffers()
 ; ...
Until ...
Wenns dann nur für Windows ist, wäre ein Timercallback noch
zuverlässiger. Dann flippt es auch, wenn zum Beispiel das Fenster
verschoben wird. :wink:
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
Ja!
Beiträge: 271
Registriert: 02.01.2006 16:13
Wohnort: Stuttgart

Beitrag von Ja! »

So hab mir Dein Programm mal angeschaut..

Erstens würde ich das Delay(30) rausmachen und besser
das WindowEvent mit Timeout (siehe Hilfe) verwenden.


Aber das Problem mit dem langsamen Start (Gadgetaufbau) liegt,
wie Stargate schon schrieb, tatsächlich an Deinem FlipBuffers.
Das solltest Du anders lösen..z.B. FlipBuffers nur alle paar ms aufrufen
oder noch besser, Du rufst es nur gezielt auf, und zwar sobald der Screen
geändert wurde, also ein Tile gesetzt wurde o.ä.


Gruß
Udo
PureBasic 3.94 ; 4.2 ; 4.3
Antworten