Seite 2 von 2

Re: Dienste und Bildschirmausgaben

Verfasst: Mi, 19. Sep 2018 8:44
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

Re: Dienste und Bildschirmausgaben

Verfasst: Mi, 19. Sep 2018 8:47
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

Re: Dienste und Bildschirmausgaben

Verfasst: Mi, 19. Sep 2018 9:08
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 !

Re: Dienste und Bildschirmausgaben

Verfasst: Mi, 19. Sep 2018 11:51
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

Re: Dienste und Bildschirmausgaben

Verfasst: Mi, 19. Sep 2018 11:57
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 ... :-)

Re: Dienste und Bildschirmausgaben

Verfasst: Mi, 19. Sep 2018 12:14
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 )

Re: Dienste und Bildschirmausgaben

Verfasst: Mi, 19. Sep 2018 12:31
von Jan
:thumbright:

Re: Dienste und Bildschirmausgaben

Verfasst: Do, 20. Sep 2018 0:17
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!

Re: Dienste und Bildschirmausgaben

Verfasst: Do, 20. Sep 2018 10:33
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

Re: Dienste und Bildschirmausgaben

Verfasst: Do, 20. Sep 2018 11:33
von Werner_Bayern
Interessant, Danke.