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
Moderator: wriedmann
Gemischtes / mishmash
Chris Pyrgas
XSharp Development Team
chris(at)xsharp.eu
XSharp Development Team
chris(at)xsharp.eu
Gemischtes / mishmash
Danke Chris und Wolfgang
Gemischtes / mishmash
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
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
hmmm
nZwei := 25/768*900
nZwei ist Float und gibt 0 aus.
nZwei := 25/768*900
nZwei ist Float und gibt 0 aus.
Gemischtes / mishmash
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
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
Wolfgang Riedmann
Meran, South Tyrol, Italy
wolfgang@riedmann.it
https://www.riedmann.it - https://docs.xsharp.it
Meran, South Tyrol, Italy
wolfgang@riedmann.it
https://www.riedmann.it - https://docs.xsharp.it
Gemischtes / mishmash
Hallo Wolfgang
Musste deine Post 2mal lesen.
In VO hatte das immer geklappt.
Danke für den Tipp.
Musste deine Post 2mal lesen.
In VO hatte das immer geklappt.
Danke für den Tipp.
Gemischtes / mishmash
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
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
Wolfgang Riedmann
Meran, South Tyrol, Italy
wolfgang@riedmann.it
https://www.riedmann.it - https://docs.xsharp.it
Meran, South Tyrol, Italy
wolfgang@riedmann.it
https://www.riedmann.it - https://docs.xsharp.it
Gemischtes / mishmash
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
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
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):
Zugreifen kannst Du dann von überall her zum Lesen und Schreiben (wenn nur Lesen erwünscht ist, nur den get-Teil des Property implementieren):
oder
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
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
Code: Select all
GlobaleWerte.DataPath := "c:ProgDaten
Code: Select all
cPath := GlobaleWerte.DataPath
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
Wolfgang Riedmann
Meran, South Tyrol, Italy
wolfgang@riedmann.it
https://www.riedmann.it - https://docs.xsharp.it
Meran, South Tyrol, Italy
wolfgang@riedmann.it
https://www.riedmann.it - https://docs.xsharp.it
Gemischtes / mishmash
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
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