Dienste und Bildschirmausgaben

Alle Fragen um die Programmierung, die sich sonst nicht kategorisieren lassen. Von Makro bis Codeblock, von IF bis ENDIF

Moderator: Moderatoren

Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Dienste und Bildschirmausgaben

Beitrag von brandelh »

und das betrifft auch unseren Runshell Aufruf für PDF Dateien, der bei mir die normale Hilfe ersetzt ...

Pfade stehen in der INI und werden so gesetzt ...

Code: Alles auswählen

INI ...
[Allgemein]
   IsCitrixAktiv=1
   ; 1 -> Citrix ist aktiv, sonst 0
   IsAutoLogon=1
   ; 1 -> Logon nutzt Windowsuser

[CitrixPfade]
   ; die jeweiligen kompletten Pfade OHNE Anführungszeichen etc.
   HilfsTabellenVerzeichnis = \\SERVER\FREIGABE\ANWENDUNG\
   DatenVerzeichnisWorkDat  = \\SERVER\FREIGABE\ANWENDUNG\WORKDAT\
   DatenVerzeichnisTestDat  = \\SERVER\FREIGABE\ANWENDUNG\TESTDAT\

[LANPfade]
   ; die jeweiligen kompletten Pfade OHNE Anführungszeichen etc.
   HilfsTabellenVerzeichnis = daten
   DatenVerzeichnisWorkDat  = daten
   DatenVerzeichnisTestDat  = daten
...

PRG ... Aufruf aus MAIN()

   oDlg := SetAppWindow()
   oDlg:IsCitrixAktiv := ( "1" = GetProgIni("Allgemein","IsCitrixAktiv","0") )   // SIEHE IN INI !!!
...
   if oDlg:IsCitrixAktiv                      // Citrix steuert auch die Verwendung der Citrix-Datenpfade
      oDlg:RunInReadOnlyMode := .t.  
...

*------------------------------------------------------------- LAN_TestDatenVerzeichnis() ---------------
function LAN_TestDatenVerzeichnis()
   local lFehler := .f., cHilfsVerz, cDatenTest, cDatenWork
   do case
      case SetAppWindow():IsCitrixAktiv // #########################
           cHilfsVerz := GetProgIni("CitrixPfade","HilfsTabellenVerzeichnis","")
           cDatenTest := GetProgIni("CitrixPfade","DatenVerzeichnisTestDat","")
           cDatenWork := GetProgIni("CitrixPfade","DatenVerzeichnisWorkDat","")
...
           HilfsTabellenVerzeichnis(cHilfsVerz)
           if TestModus()
              DatenVerzeichnis(cDatenTest)
           else
              DatenVerzeichnis(cDatenWork)
           endif
...

Aufruf der PDF aus der EXE für Hilfeanzeige ... funktioniert wunderbar seit Jahren, auch nach Umstellung auf neue Server

... im Menü ...
      soMenu:addItem({  "Hinweistexte anzeigen", {|| ZeigHinweise() }  })
...
*------------------------------------------------------------- ZeigHinweise() -------------------------
FUNCTION ZeigHinweise()
   LOCAL aHinweise, aPDFDateien, aTemp
   aTemp := directory(Hilfstabellenverzeichnis()+"*.PDF")
   IF ! empty(aTemp)
      aPDFDateien := {}       // tatsächlicher Dateiname
      aEval(aTemp,{|aFileInfo| aadd(aPDFDateien,convToOEMCP(aFileInfo[1])) })
   ELSE
      InfoBox("Es wurden keine Hinweise hinterlegt.")
   ENDIF
   IF ! empty(aPDFDateien)
      aHinweise := Auswahlliste(aPDFDateien,"Hinweistexte")
   ENDIF
   IF ! empty(aHinweise)
      IF " " $ aHinweise[1]
         infobox("Der Dateiname '"+aHinweise[1]+"' enthält Leerzeichen."+CRLF+;
                 "Dies ist nicht erlaubt. Bitte R3-Brandel anrufen (1288) !")
      ELSE
         RunShell( '/C START '+Hilfstabellenverzeichnis()+convToANSICP(aHinweise[1]),,.T.,.T. )
      ENDIF
   ENDIF
RETURN NIL
Wir nutzen aktuell den Adobe Reader DC ... mit den UNC Namen
Gruß
Hubert
ramses
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2513
Registriert: Mi, 28. Jul 2010 17:16
Hat sich bedankt: 12 Mal
Danksagung erhalten: 77 Mal

Re: Dienste und Bildschirmausgaben

Beitrag von ramses »

Hallo Hubert

ja, UNC wäre schon schön. Aber auf einem System bezw. in einer App sollte alles den selben Aufbau der Dateipfade nutzen. Also nur eine Variante. Solange ich für wesentliche Teile noch Laufwerkbuchstaben verwenden MUSS verwenden wir unter Windows ausschliesslich LW:/Pfad so ist alles einheitlich und läuft. Auch auf Terminalservern. Du hast einfach das Glück dass du keine wesentlichen Bibliotheken benutzen musst die LW:/PFAD voraussetzten. Würde der Hersteller in den erwähnten DLL dies ändern, ist es keine Erweiterung mehr sondern eine neue Version welche eine aufwendige Neuprüfung/Zertifizierung erfordert. Windows wird nicht so schnell auf das Laufwerkmapping verzichten genauso lange wird es Teile geben die zwingend LW/Pfadangaben benötigen. .... Leider ....

Das ist das schöne an UNIX es gibt keine Laufwerkbuchstaben!

Gruss Carlo
Valar Morghulis

Gruss Carlo
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Dienste und Bildschirmausgaben

Beitrag von brandelh »

Hallo Carlo,

zunächst möchte ich klar stellen, dass ich dir gar nix empfehlen will, da ich deine Umgebung nicht kenne !
ramses hat geschrieben: Mi, 19. Sep 2018 8:47 ja, UNC wäre schon schön. Aber auf einem System bezw. in einer App sollte alles den selben Aufbau der Dateipfade nutzen.
aber diese Aussage ist Quatsch, soweit sie eine Kritik an meiner INI darstellt !
Eine Anwendung sollte mit beidem zurecht kommen !
In meinem Falle mit dem lokalen Entwicklungsrechner, dem älteren OS/2 Lan Server und dem neuen Windows Citrix Server (später Terminal Server) ...
so alt ist die Anwendung schon, dass sie alles erlebt hat und nur in wenigen Funktionen und in der INI Datei muss man den richtigen Pfad eintragen.
Als ich noch Admin des Servers war (OS/2), war das alles einfach und ich konnte tun was ich wollte, seit Citrix geht das nicht mehr ...

Innerhalb eines laufenden Programmes sollte sich das entscheiden wie es läuft, damit kann ich leben und das macht meine EXE auch ;-)
ramses hat geschrieben: Mi, 19. Sep 2018 8:47 Solange ich für wesentliche Teile noch Laufwerkbuchstaben verwenden MUSS verwenden wir unter Windows ausschliesslich LW:/Pfad so ist alles einheitlich und läuft.
Auch auf Terminalservern. Du hast einfach das Glück dass du keine wesentlichen Bibliotheken benutzen musst die LW:/PFAD voraussetzten.
Ich verwende entweder nur Quellcode oder Standard Windows DLLs ... aber ja, das muss jeder selbst wissen was er braucht !
Gruß
Hubert
ramses
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2513
Registriert: Mi, 28. Jul 2010 17:16
Hat sich bedankt: 12 Mal
Danksagung erhalten: 77 Mal

Re: Dienste und Bildschirmausgaben

Beitrag von ramses »

Hallo Hubert

ich habe keine Kritik an deiner INI geübt! Denn als ich Text schrieb habe ich deinen noch gar nicht gelesen. Wir haben wenn du den Zeitstempel anschaust gleichzeitg geschrieben.

Für mich gilt es den kleinst verfügbaren Nenner für alles zu verwenden. Das ist in meinem Fall LW:\PATH. PUNKT.

Ich empfinde es als Quatsch in einer App, UNC-Pfade und gleichzeitig LW:/Pfad für das selbe Zielverzeichnis zu verwenden.

Ich muss Teile verwenden die wohl als Quellcode (in c) vorliegen dir dies aber nichts nützt weil die Funktionsfähigkeit der daraus generierten DLL'S zertifiziert sein muss was ohne weiter ins Detail zu gehen für eine neue Version einen tiefen 7 stelligen Betrag kostet. Das tut sich doch niemand an den Code völlig zu überarbeiten und hier änderungen vorzunehmen nur damit nachher UNC Pfade verwendbar sind....

Citrix Server habe ich aktuell keinen mehr und Terminal-Server hoffentlich ab Ende Jahr auch nicht mehr. Wir arbeiten daran die Umstellung auf Web-Apps bis dahin fertig umzusetzten.

Aber wie du schreibst: Das muss jeder selbst wissen was er braucht !

Gruss Carlo
Valar Morghulis

Gruss Carlo
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Dienste und Bildschirmausgaben

Beitrag von brandelh »

ramses hat geschrieben: Mi, 19. Sep 2018 11:51 ich habe keine Kritik an deiner INI geübt! Denn als ich Text schrieb habe ich deinen noch gar nicht gelesen. Wir haben wenn du den Zeitstempel anschaust gleichzeitg geschrieben.
das habe ich übersehen ;-)
ramses hat geschrieben: Mi, 19. Sep 2018 11:51 Für mich gilt es den kleinst verfügbaren Nenner für alles zu verwenden. Das ist in meinem Fall LW:\PATH. PUNKT.

Ich empfinde es als Quatsch in einer App, UNC-Pfade und gleichzeitig LW:/Pfad für das selbe Zielverzeichnis zu verwenden.
gleichzeitig auf jeden Fall ... :-)
Gruß
Hubert
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21165
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

Re: Dienste und Bildschirmausgaben

Beitrag von Manfred »

also so wie ich das jetzt überschaue, habe ich es geschafft, das meine Applikation jetzt beides kann. LW und UNC. (zumindest in der Theorie und der kleinen Praxis :D )
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14641
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 87 Mal
Kontaktdaten:

Re: Dienste und Bildschirmausgaben

Beitrag von Jan »

:thumbright:
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Werner_Bayern
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2120
Registriert: Sa, 30. Jan 2010 22:58
Wohnort: Niederbayern
Hat sich bedankt: 29 Mal
Danksagung erhalten: 70 Mal

Re: Dienste und Bildschirmausgaben

Beitrag von Werner_Bayern »

ramses hat geschrieben: Mi, 19. Sep 2018 11:51 Ich muss Teile verwenden die wohl als Quellcode (in c) vorliegen dir dies aber nichts nützt weil die Funktionsfähigkeit der daraus generierten DLL'S zertifiziert sein muss was ohne weiter ins Detail zu gehen für eine neue Version einen tiefen 7 stelligen Betrag kostet.
:shock: :shock:
7stellig? Also mehrere Millionen?
Jetzt hast mich richtig neugierig gemacht, magst kurz was dazu schreiben?

Danke!
es grüßt

Werner

<when the music is over, turn off the lights!>
ramses
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2513
Registriert: Mi, 28. Jul 2010 17:16
Hat sich bedankt: 12 Mal
Danksagung erhalten: 77 Mal

Re: Dienste und Bildschirmausgaben

Beitrag von ramses »

Hallo Werner

es sind dies die Kommunikationsmodule in einem SCADA System. Damit wird durch einige Programme (nicht nur meine) auf verschieden Busarten mit Geräten Maschinen und Anlageteilen verschiedener Hersteller Kommuniziert. Der Source-Code dieser Module ist in unkritische und relevate/kritische Teile unterteilt. Alle Programm der gesamten Anlagen müssen den selben Sourcecode-Stand der Relevanten Modul Teile verwenden. Diese Teile verhindern z.B. auch dass in Sicherkeitsrelevante Register geschieben wird usw.

Fehler in diesen Modulen können zu Ausschuss- Maschinen- Objekt- Brand- oder Personenschäden führen. Daher müssen diese relevanten/kritischen Teile nach Änderungen von ALLEN beteiligten geprüft und auch von allen übernommen werden.

Es sind dies einige Firmen und Beteiligte da summieren sich sehr schnell viele Kosten. Dann ist auch noch eine Sicherheits-Prüfung der Eckwerte auf einer stehenden Anlage erforderlich....

Aufgrund dieser Situation verbieten sich eigene Anpassungen entgegen den Richtlinen von selbst.......




Gruss Carlo
Valar Morghulis

Gruss Carlo
Benutzeravatar
Werner_Bayern
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2120
Registriert: Sa, 30. Jan 2010 22:58
Wohnort: Niederbayern
Hat sich bedankt: 29 Mal
Danksagung erhalten: 70 Mal

Re: Dienste und Bildschirmausgaben

Beitrag von Werner_Bayern »

Interessant, Danke.
es grüßt

Werner

<when the music is over, turn off the lights!>
Antworten