| |
|
|
GDL | Hi,
in dem Zusammenhang von der Runtimegröße bin ich wieder auf ein altes Problem gestoßen. KompilierenMarkierenSeparieren Von den obigen Befehlen geht nur der letzte shell Befehl. Alle anderen starten das gerade laufende Programm neu.
Der einzige Unterschied des Moduls betrieb.exe zu den anderen Modulen ist der, dass betrieb.exe mit einem Ladedialog startet.
Servus Georg |
|
|
| |
|
|
|
Jörg Sellmeyer | Hallo Georg, So funktioniert es bei mir:
Hauptprogramm KompilierenMarkierenSeparierenUserMessages 16
WinDowStyle $21A
Cls
Declare Test$
Test$ = Dies ist ein Test
Print Test$
Print Ich bin das Hauptprogramm.
Start mit qShellq: 2 für Programm2 oder 3 für Programm3 drücken.
Print Start mit qWinexecq: 4 für Programm2 oder 5 für Programm3 drücken.
Print Start mit qWinexecWaitq: 6 für Programm2 oder 7 für Programm3 drücken.
SetTimer 1
While 1
WaitInput
Case (%Umessage = 16) | (%ScanKey = 48):Break
Case %wmtimer: WindowTitle Time$(0) + : + Time$(1)
If %ScanKey = (50)2
WaitInput
Shell Par$(0) + Prog2.prc
ElseIf %ScanKey = (51)3
Shell Par$(0) + Prog3.prc
ElseIf %ScanKey = (52)4
WinExec(Par$(0) + Prog2.prc,1)
ElseIf %ScanKey = (53)5
WinExec(Par$(0) + Prog3.prc,1)
ElseIf %ScanKey = (54)6
WinExecWait(Par$(0) + Prog2.prc,1)
ElseIf %ScanKey = (55)7
WinExecWait(Par$(0) + Prog3.prc,1)
ElseIf %ScanKey = (56)8
Print Diese Variante funktioniert natürlich nur, wenn für prc im System das Profanprogramm angemeldet ist!.
ShellExec(Prog2.prc,Open,1)
ElseIf %ScanKey = (57)9
Print Diese Variante funktioniert natürlich nur, wenn für prc im System das Profanprogramm angemeldet ist!.
ShellExec(Prog3.prc,Open,1)
EndIf
Wend
KillTimer
Programm zwei:prog2.prc KompilierenMarkierenSeparieren Programm drei:prog3.prc KompilierenMarkierenSeparieren Die beiden letzten müssen kompiliert im gleichen Verzeichnis wie die Exe aus dem Hauptprogramm liegen. |
|
|
| Windows XP SP2 XProfan X4... und hier mal was ganz anderes als Profan ... | 07.11.2007 ▲ |
|
|
|
|
Jörg Sellmeyer | Ich hab noch was korrigiert! |
|
|
| Windows XP SP2 XProfan X4... und hier mal was ganz anderes als Profan ... | 07.11.2007 ▲ |
|
|
|
|
GDL | Hallo Jörg,
mein obiges Beispiel geht auch ohne dem prc nicht.Ein einfaches winexex(blabla.exe,1) geht nicht, wenn blabla.exe mit nem Ladedialog beginnt.
und auch was roland mit
WinExec(startmenue.exe diagnose_ports.prc, 1) meinte,
geht nur wenn beide Programme unterschiedliche Variablennamen nutzen. Bei declare hdll& in startmenu.prf und declare hdll& in xyz.prf usw. hagelts ständig fehlermeldungen mit doppelt declariert. Anscheinend sind die Programme doch nicht 100%ig auseinander dann.Noch interessanter wird es wenn noch ein drittes unabhängiges Programm dann benötigt wird. Ich werde nur noch überschüttet mit doppelten declarationen. Ich habe Monate gebraucht dass ich möglichst schnell laufend Einleseergebnisse von ausserhalb bekomme. Jetzt wo es endlich einigermassen geht zerreiß ich das ganze nimmer.
Servus Georg |
|
|
| |
|
|
|
Jörg Sellmeyer | Ich habs nochmal aktualisiert. Da gibts aber keine Meckereien wg. doppelter Variablen Du mußt Dir wahrscheinlich mal ein Struktogramm machen, um zu sehen, was Deine einzelnen Module machen sollen.
Achja, wenn Du Dein eigenes Programm nochmal aufrufen willst, bist Du mit Par$(0) immer auf der richtigen Seite! |
|
|
| Windows XP SP2 XProfan X4... und hier mal was ganz anderes als Profan ... | 07.11.2007 ▲ |
|
|
|
|
Thomas Freier | Laufen die Programme auch mit XProfan 9 ? Da ist die doppelte Declarierung nicht so streng oder es war bei XProfan 8. |
|
|
| |
|
|
|
GDL | Das Problem ist das das total unterschiedliche in sich abgeschlossene Programme sind, die als prc von einer anderen exe aus gestartet werden sollen.
Aber um zu meinem ursprünglichen Problem zurückzukommen.
In startmenue.exe rufe ich in der Hauptschleife betrieb.exe auf KompilierenMarkierenSeparieren Dies geht aber nur mit shell ..... Nehme ich winexec......... wird komischerweise startmenue ein 2tes mal statt betrieb.exe gestartet.
Ich kann alle Programme einwandfrei mit winexec starten, solange die aufzurufenden Programme nicht mit einem Ladedialog in irgendeinem Zusammenhang starten. Lass ich den Ladedialog weg lässt sich betrieb.exe auch mit winexec starten.
ich habe jetzt nur diese Zeilen zur betrieb.exe gemacht. KompilierenMarkierenSeparieren ich kann diese zeilen als exe nur mit shell aufrufen.Winexec und winexecwait gehen nicht. Was noch geht ist mittels run aufzurufen.
Servus Georg |
|
|
| |
|
|
|
GDL | @Jörg,
vielleicht reden wir einander vorbei.Meine Module sind kommplett eigenständige Exe Dateien in einem Komplettprogramm aus 10 Exen. Programm bezieht sich bei mir nicht auf eine einzelne EXE sondern auf mehrere eigenständige Unterprogramme jede als exe.
Servus Georg |
|
|
| |
|
|
|
Jörg Sellmeyer | Genau, aber Du willst doch die Exen nicht, sondern stattdessen prc-Dateien, oder? Also brauchst Du nur noch Startmenü.exe und der Rest besteht aus betrieb.prc, diagnose_ports.prc, Gleisbau.prc oder was auch immer. Wenn eins dieser Module gestartet werden soll, brauchst Du es nur mit KompilierenMarkierenSeparieren starten. Oder eben mit Shell, WinExecWait... |
|
|
| Windows XP SP2 XProfan X4... und hier mal was ganz anderes als Profan ... | 07.11.2007 ▲ |
|
|
|
|
RGH | Hallo Georg,
das klingt alles äußerst seltsam. Was steht denn bei Dir in der Variablen astart$ drin? Ich nehme an der Programmpfad mit abschließendem Backslash.
Gruß Roland |
|
|
| Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4 | 07.11.2007 ▲ |
|
|
|
|
RGH | Hallo Georg,
ich kann Deine Probleme nicht nachvollziehen: Ich habe Dein BETRIEB.EXE exakt so, wie Du es oben gelistet hast, erzeugt. Folgendes Programm funktioniert bei allen drei Aufrufen völlig problemlos: KompilierenMarkierenSeparieren Gruß Roland |
|
|
| Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4 | 07.11.2007 ▲ |
|
|
|
|
GDL | Genau und jetzt schliesst sich wida der Kreis.
Sobald die prf Code der einzelnen Module die selben Variablennamen haben hagelts bei mir Fehlermeldungen mit Doppelte declarationen.
Und dieser codeteil als exe oder als prc lässt sich gar nicht öffnen KompilierenMarkierenSeparieren In diesem Fall startet das aufrufende Programm ein 2tes mal. Dieser Codeteil läßt sich nur als exe und nur mit shell starten.
Beispiel für oben
Programm start.prf hat declare a& Programm bunt.prf hat declare a&
Programm start wird zur exe gelinkt und und Programm bunt zu pcr compiliert.
gebe ich im Code start dann ein
winexec(start.exe bunt.prc,1) kommt sofort beim Starten von bunt die Fehlermeldung Doppelte declaration a&
Servus Georg
Servus Georg |
|
|
| |
|
|