Deutsch
Forum

nProc läuft nicht im Process

 

funkheld
Hallo, guten Tag.

Wie kann man bitte eine nProc im Process zum laufen bringen ?

Wenn ich dies unten reinsetze kommt die Meldung : Variable nicht deklariert

nProc teste
endproc

GRuss
 
19.04.2016  
 



Ich schätze, dass das garnicht gehen dürfte -

jedenfalls nicht ohne nachträgliches Anpassen der ENH-Datei.

Roland springt vermutlich gleich in die benannte Proc bei der Funktion "process", somit der notwendige Overhead für den nProc-ASM aber garnicht durchgeführt wird.
 
20.04.2016  
 




funkheld
Ja danke für die Antwort.

Vielleicht nimmt Roland mal eine Anpassung vor?

Gruss
 
20.04.2016  
 




funkheld
..........
 
20.04.2016  
 



Viel einfacher für diesen Zweck nicht "process" verwenden sondern "shell" mit Kommandozeilenparameter - schon kannst Du nProcs nutzen.

[OFFTOPIC]PS: Kannst Beiträge auch löschen:



[/OFFTOPIC]
 
20.04.2016  
 




funkheld
Danke.

Bitte mal ein kleines Beispiel mit Shell den Process Daten hinschieben und zurückholen.

Gruss
 
20.04.2016  
 



Einfach mit FileMap Daten schicken,

Prozess starten mit shell meine.exe -p2

Im Programm gleich zu Beginn: case par$... = "-p2" : dieseProc

In dieseProc sind nProcs möglich.
 
21.04.2016  
 




funkheld
Hmmm..danke.

Zeig mir das bitte einmal kurz auf , was da im Programm passiert mit einem Beispiel.
So ganz habe ich das nicht begriffen.

Danke.
Gruss
 
24.04.2016  
 




Michael
W.
Shell sagt ja, dass das aufrufende Programm weiter läuft. Also sind die Prozesse in Wirklichkeit einfache Programme die zusammen mit dem Hauptprogramm gestartet werden.

(Das impliziert übrigens, das die Prozess-Datei als EXE vorliegen sollte. Wenn's schnell gehen soll ist das ja eh' nichts für den Interpreter.)

das Hauptprogramm (nur ein Schema; nicht lauffähig)

' Hauptprogramm

Declare hFileMap&
Declare Austauschpuffer#
Dim Austauschpuffer#, 1000

' der Tauschpuffer wird unter dem Namen "Tauscher" schon vor den Prozessen angelegt.
hFileMap& = Create("FileMap", "Tauscher", 1000)
' Austauschdatei mit Puffer verbinden
Austauschpuffer# = FileMap("Map", hFileMap&)
' Daten hinein
String Austauschpuffer#,0 = "Init"
' und zu
FileMap("Close", hFileMap&)


' Dann werden Prozesse gestartet, die auch nProcs beinhalten können
Shell "prozesse.exe -p1"
'Shell "prozesse.exe -p2 -p3"

' dann wird eine Schleife aufgebaut und darin das Senden und Empfangen gesteuert.
Cls


While 1
Case Abbruchkriterium% : BREAK
If DatenEmpfangen%
hFileMap& = FileMap("Open", "Tauscher")
Austauschpuffer# = FileMap("Map", hFileMap&)
Print "Empfang: "; String$(Austauschpuffer#,0)
FileMap("Close", hFileMap&)
EndIf
If DatenSenden%
hFileMap& = FileMap("Open", "Tauscher")
Austauschpuffer# = FileMap("Map", hFileMap&)
String Austauschpuffer#,0 = "Init"
FileMap("Close", hFileMap&)
EndIf
EndWhile
Dispose Austauschpuffer#
End

und der Code für Prozesse.exe (nur ein Schema; nicht lauffähig)

' prozesse

' die Parameter verarbeiten
Declare p$, p1%, p2%, p3%
p1% = 0
p2% = 0
p3% = 0
WhileLoop 0, %ParCount
p$ = Par$(&Loop)
Case Upper(p$) = "-P1" : p1% = 1
Case Upper(p$) = "-P2" : p2% = 1
Case Upper(p$) = "-P3" : p3% = 1
EndWhile

' ........Beispiel nur mit einem Prozess........

' einen Puffer aufbauen
Declare hFM&
Declare Puffer#
Dim Puffer#, 1000

Declare Daten$

hFM& = FileMap("Open", "Tauscher")
Puffer# = FileMap("Map", hFM&)
// While 1
// If Abbruchkriterium% : BREAK
// ' Daten aufnehmen
// String Puffer#,0 = nProc1() 'Daten zum Senden
// EndWhile

If p1%
Daten$ = nProc1()
ElseIf p2%
Daten$ = nProc2()
ElseIf p3%
Daten$ = nProc3()
Else
Daten$ = "Wenn Du keinen Prozess angibst, bekommst' auch keine Daten."
EndProc
String Puffer#,0 = Daten$ ' Daten zum Senden
FileMap("Close", hFM&)

nProc proz1
' ...
EndProc

nProc proz2
' ...
EndProc

nProc proz3
' ...
EndProc

Dispose Puffer#
End

Die Prozesse sollten dann vom Hauptprogramm eine Info bekommen, wann Sie sich beenden dürfen. Hier kann man dann auch mit mehreren FileMap-Dateien arbeiten.

So kann das Programm jedem einzelnen Prozess Daten senden und auch jeder Prozess an das Hauptprogramm.

Oder die Prozesse nutzen ein Unterprogramm, das die vom Hauptprogramm empfangenen Daten auswertet und an den richtigen Prozess leitet und auch die Daten von den Prozessen sammelt und an das Hauptprogramm gibt.

Hier hat man dann eine Protokoll-Übertragung.
Der Datenstrom sieht dann etwa so aus:

AN P1: Daten....
AN P2: ABBRUCH
AN P3: WAIT 5000
VON P1: daten.....


So kann dann recht einfach alles schnelle in die nProcs und der Rest landet in normalem XProfan-Code.
 
System: Windows 8/10, XProfan X4
Programmieren, das spannendste Detektivspiel der Welt.
24.04.2016  
 




funkheld
Hallo, vielen dank für die Hilfe.
Jetzt habe ich es begriffen.

Ich dachte es war ein Process der so zb aufgerufen werden muss.

pExec("|Prozess", "A", 100, 100, rgb(rnd(256),rnd(256),rnd(256)), 1, h&[0])

Danke.
Gruss
 
24.04.2016  
 



Antworten


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

9.802 Betrachtungen

Unbenanntvor 0 min.
p.specht02.08.2018
E.T.12.04.2018
Ernst22.06.2016
Torsten Rümker10.05.2016
Mehr...

Themeninformationen

Dieses Thema hat 3 Teilnehmer:

funkheld (6x)
iF (3x)
Michael W. (1x)


Admins  |  AGB  |  Anwendungen  |  Autoren  |  Chat  |  Datenschutz  |  Download  |  Eingangshalle  |  Hilfe  |  Händlerportal  |  Impressum  |  Mart  |  Schnittstellen  |  SDK  |  Services  |  Spiele  |  Suche  |  Support

Ein Projekt aller XProfaner, die es gibt!


Mein XProfan
Private Nachrichten
Eigenes Ablageforum
Themen-Merkliste
Eigene Beiträge
Eigene Themen
Zwischenablage
Abmelden
 Deutsch English Français Español Italia
Übersetzungen

Datenschutz


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie