xsharp.eu • Gemischtes / mishmash - Page 8
Page 8 of 9

Gemischtes / mishmash

Posted: Wed Oct 14, 2020 8:20 am
by Chris
Hi Horst,

Right click with the mouse in the line somewhere inside the { and } and then from the context menu select "Display parameters". Alternatively, put the cursor with the keyboard inside there and press CTRL+K. This will show you a list with all the constructors available and as you can see this logic param stands for "append" (if you want to append if there's an already existing file, or just truncate it).

Gemischtes / mishmash

Posted: Wed Oct 14, 2020 11:00 am
by Horst
Danke Chris und Wolfgang

Gemischtes / mishmash

Posted: Thu Oct 15, 2020 2:59 pm
by Horst
Hallo
Habe da ein Problem mit dem Round ()
nMaxRow := Round (33.25,0) - funktoniert
nMaxRow := Round ((25/768*900),0) - Ausgabe = 0 falsch
nMaxRow := Round (25/768*gnBildhoehe,0) - Ausgabe = 0 falsch
nMaxRow := Round (gnBildhoehe,0) - funktioniert
Ist das ein Bug ?
Gruss
Horst

Gemischtes / mishmash

Posted: Thu Oct 15, 2020 3:11 pm
by Horst
hmmm
nZwei := 25/768*900

nZwei ist Float und gibt 0 aus.

Gemischtes / mishmash

Posted: Thu Oct 15, 2020 3:27 pm
by wriedmann
Hallo Horst,
was macht 25.0/768.0*900.0?
Das führt auch in VO zu komischen Ergebnissen....
Mit dem .0 zwingst Du den Compiler, float anzunehmen, sonst sind das integer.
Und mit Integer Division On gibt 25/768 ganz einfach 0 und das kannst Du dann multiplizieren womit Du willst, kommt immer 0 raus.
Wolfgang

Gemischtes / mishmash

Posted: Thu Oct 15, 2020 3:39 pm
by Horst
Hallo Wolfgang
Musste deine Post 2mal lesen. :-)
In VO hatte das immer geklappt.
Danke für den Tipp.

Gemischtes / mishmash

Posted: Thu Oct 15, 2020 3:46 pm
by wriedmann
Hallo Horst,
auch in VO hängt das von den Compiler-Optionen ab
Deshalb schreibe ich numerische Literalein VO IMMER mit .0, außer ich will sie wirklich als Ganzzahl haben.
Wolfgang

Gemischtes / mishmash

Posted: Fri Oct 16, 2020 9:54 am
by Horst
Hallo
Function Start ()
oCgi := CgiKlasse {} -> Construtor lädt self:cCSS_File := "c:blabla"
oCgi:TuEtwas ()

Method TuEtwas()
oHtml := HtmlKlasse {a,b,c}

Method Constructor (a,b,c) class HtmlKlasse
Vorher -> cBuffer := StrTran (cBuffer, "{CSSFILE}" , gcCssFile)

Wie kann ich nun sauber auf die Variable cCSS_File von der CgiKlasse zugreifen ? Globals kann ich nicht nehr verwenden.

Gruss Horst

Gemischtes / mishmash

Posted: Fri Oct 16, 2020 11:59 am
by wriedmann
Hallo Horst,
bitte fang für jedes dieser Dinge einen neuen Thread mit einem aussagekräftigen Betreff an, dann tun sich auch andere leichter.

Aber nun zu Deinem Problem: in .NET kannst Du das mit einem sogenannten Singleton lösen, d.h. einem Objekt, das es nur einmal gibt.

Als Beispiel mal hier folgende Klasse (einfach so reingeschrieben):

Code: Select all

class GlobaleWerte
static protect _oCurrent as GlobaleWerte
protect _cDataPath as string
static constructor()
  _oCurrent := GlobaleWerte{}
  return
protected constructor()
  return
static property DataPath as string get _oCurrent:_cPath set _oCurrent::cPath := value
Zugreifen kannst Du dann von überall her zum Lesen und Schreiben (wenn nur Lesen erwünscht ist, nur den get-Teil des Property implementieren):

Code: Select all

GlobaleWerte.DataPath := "c:ProgDaten
oder

Code: Select all

cPath := GlobaleWerte.DataPath
Zur Erklärung: der Constructor der statischen Klasse wird bei der ersten Verwendung der Klasse aufgerufen und initialisiert _oCurrent.
Da der "normale" Constructor als protected definiert ist, kann er nur innerhalb der Klasse selber aufgerufen werden, Du kannst also ein Objekt dieser Klasse gar nicht erzeugen.
Die statischen Properties dieser Klasse sind die einzigen, die auf die Klassen-Interna Zugriff haben und damit arbeiten können, bzw, sie nach außen weiterleiten können.
Das ist jetzt eine vereinfachte Version - bei mir intern definiere ich da nur ein Dictionary, und spare mir die einzelnen Protect-Variablen - das Property ist dann der einzige Code, den ich schreiben muss. Das habe ich aber hier der einfacheren Verständlichkeit halber weggelassen.
Wolfgang

Gemischtes / mishmash

Posted: Fri Oct 16, 2020 1:47 pm
by Horst
Hallo Wolfgang
Sorry das kapier ich nicht. Das geht so ?

class GlobaleWerte
static protect _oCurrent as GlobaleWerte
protect _cDataPath := "" as string
static constructor()
_oCurrent := GlobaleWerte{}
return
protected constructor()
return
static property DataPath as string get _oCurrent:_cPath set _oCurrent::cPath := value
end class

Function Start ()
oCurrent := Globalewerte {}
oCgi := CgiKlasse {} ->
Construtor () class CgiKlasse
GlobaleWerte.DataPath := "c:ProgDaten
oCgi:TuEtwas ()

Method TuEtwas()
oHtml := HtmlKlasse {a,b,c}

Method Constructor (a,b,c) class HtmlKlasse
cBuffer := StrTran (cBuffer, "{CSSFILE}" , GlobaleWerte.DataPath)

und die Werte sind dann wieder default/leer wenn die Function Start () aufgerufen wird ?

Gruss Horst