Klassen Erstellung

Klassen, Objekte, Methoden, Instanzen

Moderator: Moderatoren

Benutzeravatar
messing
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 216
Registriert: Mi, 13. Jan 2010 9:42
Wohnort: Lauterbach / Hessen

Klassen Erstellung

Beitrag von messing »

Servus,
habe mal ein paar Tage die Doku studiert.
Wenn ich aus den Klassen XbpSLE und GET eine Klasse ableite z.B. MyGet erbt die abgeleitete Klasse die Eigenschaften.

Code: Alles auswählen

   CLASS MyGet from XbpSle, Get
   METHOD init
   ENDCLASS
   METHOD MyGet:init( nRow, nCol )
      ::nRow   := IIF( nRow == NIL, ROW(), nRow )
      ::nCol   := IIF( nCol == NIL, COL(), nCol )
   RETURN self

Wer hilft dabei, diese Klasse Schritt für Schritt aufzubauen?
Dies mag für Euch eventuell nicht nötig sein, doch würde dieser Klassenaufbau hier, jedem das Kapitel KLASSE näherbringen.
Davon profitieren alle, ob Anfänger oder Fortgeschrittene in der Klassen Programierung.
Die Methode Init habe ich einfach nur eingesetzt um mir das Objekt genauer ansehen zu können.
Gruß
Bruno
Messing
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: Klassen Erstellung

Beitrag von Jan »

Bruno,

schau Dir doch mal die SLEPic-Klasse an. Die ist ebenfalls von XbpSle abgeleitet. Das könnte Dir also gute Ansatzpunkte geben.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
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: Klassen Erstellung

Beitrag von brandelh »

Oder die von mir, Datum, Zahlen, auch eine mit Filter in der Wissensbasis gibt es meine Klassen.

Gerade am Anfang ist es nützlich zunächst fertige zu benutzen und den Quellcode anzusehen.
Gerade die Tastatursteuerung von SLE ist kein Anfänger Thema ;-)
Gruß
Hubert
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9345
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 359 Mal
Kontaktdaten:

Re: Klassen Erstellung

Beitrag von Tom »

Davon abgesehen glaube ich kaum, dass es gelingen wird, aus XbpSLE und Get eine funktionierende Klasse zu erzeugen. :wink:
Herzlich,
Tom
Benutzeravatar
messing
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 216
Registriert: Mi, 13. Jan 2010 9:42
Wohnort: Lauterbach / Hessen

Re: Klassen Erstellung

Beitrag von messing »

Hi Jan, hi Hubert, hi Tom
an Jan, bitte Link zu SLEPic, Danke. Schon gefunden. Gibts das auch mit deutschem Datum und Zahlenformat?
an Hubert wonach muß ich in der Wissensbasis suchen?
an Tom, Ob sich eine funktionierende Klasse daraus erzeugen läßt? Ich habs im Debugger bis zum INIT laufenlassen und konnte eindeutig das Objekt erkennen. Das heißt zwar nicht, das diese Klasse funktionieren würde, aber auch nicht, das es nicht funktionieren würde. Ich bin von der Vererbung ausgegangen und der Beschreibung Objekt im Objekt. Natürlich habe ich von Klassen keine Ahnung, das gebe ich offen zu, aber zum lernen wäre die Idee nicht schlecht.
Zuletzt geändert von messing am Do, 29. Mär 2012 14:12, insgesamt 1-mal geändert.
Gruß
Bruno
Messing
georg
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2823
Registriert: Fr, 08. Feb 2008 21:29
Hat sich bedankt: 95 Mal
Danksagung erhalten: 13 Mal

Re: Klassen Erstellung

Beitrag von georg »

Hallo, Tom -


manchmal liebe, manchmal hasse ich Deine kurzen, knappen, korrekten Antworten.

@messing: rein technisch ist die Ableitung möglich, aber GET ist eine Klasse für VIO bzw. Hybrid-Modus, während XbpSLE eigentlich für Hybrid- oder XbpDialog-Modus gedacht ist.

Ein offensichtliches Problem ist z.B. die Adressierung, während GET mit Zeile, Spalte operiert, verwendet XbpSLE eigentlich eine Pixel-Position zusammen mit einer Grössenangabe in Pixel.

Ableiten kannst Du eine solche Klasse schon, aber sie wird nicht richtig funktionieren.

SLEPic findest Du hier: http://www.gogalthorp.com/splash. Dort findest Du die SLEPic Version 1.88 mit Quellcode.


Gruss,

Georg
Liebe Grüsse aus der Eifel,

Georg S. Lorrig
Redakteur der Wiki des Deutschprachigen Xbase-Entwickler e.V.
Benutzeravatar
messing
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 216
Registriert: Mi, 13. Jan 2010 9:42
Wohnort: Lauterbach / Hessen

Re: Klassen Erstellung

Beitrag von messing »

georg hat geschrieben:Hallo, Tom -


manchmal liebe, manchmal hasse ich Deine kurzen, knappen, korrekten Antworten.

@messing: rein technisch ist die Ableitung möglich, aber GET ist eine Klasse für VIO bzw. Hybrid-Modus, während XbpSLE eigentlich für Hybrid- oder XbpDialog-Modus gedacht ist.

Ein offensichtliches Problem ist z.B. die Adressierung, während GET mit Zeile, Spalte operiert, verwendet XbpSLE eigentlich eine Pixel-Position zusammen mit einer Grössenangabe in Pixel.

Ableiten kannst Du eine solche Klasse schon, aber sie wird nicht richtig funktionieren.

SLEPic findest Du hier: http://www.gogalthorp.com/splash. Dort findest Du die SLEPic Version 1.88 mit Quellcode.


Gruss,

Georg
Hi Georg
deine Antwort gibt Hoffnung ! :D !
Wenn man bei GET keine Pos. angibt, landet es bei 0,0
Fakt ist, das mit den paar Codezeilen, im Debugger eindeutig ein Objekt erkennbar ist, welches auch die PICTURE Bezeichnung enthält.
Betreffend der Koordinaten gebe ich zu, 0,0 bei GET bezieht sich auf oben links im CRT.
Gruß
Bruno
Messing
georg
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2823
Registriert: Fr, 08. Feb 2008 21:29
Hat sich bedankt: 95 Mal
Danksagung erhalten: 13 Mal

Re: Klassen Erstellung

Beitrag von georg »

Hallo, messing -


der Compiler erzeugt einfach eine Kreuzung aus den beiden Objekten. Theoretisch geht das, ob das Objekt aber verwendbar ist, steht auf einem anderen Blatt.

Das dieses zusammengesetzte Objekt eindeutige Merkmale der beiden Eltern-Objekte besitzt, und diese auch im Debugger einzusehen ist, liegt an der Sprache.

Ein Compiler prüft auch nur die Übereinstimmung mit der Sprachsyntax, nicht aber den logischen Aufbau des Programmcodes.

Code: Alles auswählen

cFeld := "heute"
dFeld := Date()
IF cFeld = dFeld
wird vom Compiler problemlos übersetzt, wird aber beim IF in der Ausführung scheitern, obwohl beide Variablen doch die richtigen, zugewiesenen Werte (auch im Debugger) besitzen ...


Gruss,

Georg
Liebe Grüsse aus der Eifel,

Georg S. Lorrig
Redakteur der Wiki des Deutschprachigen Xbase-Entwickler e.V.
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9345
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 359 Mal
Kontaktdaten:

Re: Klassen Erstellung

Beitrag von Tom »

Fakt ist, das mit den paar Codezeilen, im Debugger eindeutig ein Objekt erkennbar ist, welches auch die PICTURE Bezeichnung enthält.
Wenn ein Laster mit einem PKW bei sehr hoher Geschwindigkeit zusammenstößt, entsteht daraus tatsächlich eine Limousine mit Ladefläche, also, wenn man so will, ein "best of two worlds". Tatsächlich dürfte es schwierig werden, mit dem neu entstandenen "Fahrzeug" Personen oder Last zu bewegen. Durch die Kollision entsteht nämlich vor allem sehr viel Schrott.

Klassen, die in eine gemeinsame, neue Klasse überführt werden, dürfen nicht interferieren, und sie sollten sich sinnvoll ergänzen. Außerdem ist Deine Denkweise nicht ganz richtig: Die Klassen werden nicht "gemischt" (Paarung eines Esels mit einer Taube - wir erhalten ein mausgraues, fliegendes Lasttier), was allerdings eine faszinierende Idee ist. Schau Dir mal die Klassenbeschreibung der XbpComboBox an. Die verweist auf die Superklassen XbpSLE und XbpListbox. Sie erzeugt zwei Objekte. Die abgeleitete Klasse sorgt dafür, dass die Objekte automatisch interagieren können, sich also ergänzen. Das dürfte sehr schwierig werden, wenn man ein XbpSLE und ein Get "verheiratet".
Herzlich,
Tom
Benutzeravatar
messing
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 216
Registriert: Mi, 13. Jan 2010 9:42
Wohnort: Lauterbach / Hessen

Re: Klassen Erstellung

Beitrag von messing »

Hi Tom,

Wenn ein Laster mit einem PKW bei sehr hoher Geschwindigkeit zusammenstößt, entsteht daraus tatsächlich eine Limousine mit Ladefläche, also, wenn man so will, ein "best of two worlds". Tatsächlich dürfte es schwierig werden, mit dem neu entstandenen "Fahrzeug" Personen oder Last zu bewegen. Durch die Kollision entsteht nämlich vor allem sehr viel Schrott.

Ich lach mich scheckig :D :D .

Dein Vergleich hat mir die Tränen in die Augen getrieben! Vor Lachen ! :D Ich hab mir das mal bildlich vorgestellt. Limoousine mit Ladefläche !!! :D
Gruß
Bruno
Messing
Benutzeravatar
messing
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 216
Registriert: Mi, 13. Jan 2010 9:42
Wohnort: Lauterbach / Hessen

Re: Klassen Erstellung

Beitrag von messing »

Servus,
SLEPic verlangt Clickdate
was müßte ich abändern, da clickdate nicht benötigt wird.
Gruß
Bruno
Messing
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9345
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 359 Mal
Kontaktdaten:

Re: Klassen Erstellung

Beitrag von Tom »

Clickdate ist doch dabei. Musst nix ändern.
Herzlich,
Tom
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: Klassen Erstellung

Beitrag von Jan »

Ich habe clickdate und so einiges anders, was für mich überflüssig ist, rausgeschmissen.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
messing
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 216
Registriert: Mi, 13. Jan 2010 9:42
Wohnort: Lauterbach / Hessen

Re: Klassen Erstellung

Beitrag von messing »

Jan hat geschrieben:Ich habe clickdate und so einiges anders, was für mich überflüssig ist, rausgeschmissen.

Jan
Servus Jan,
Ich brauch nur die Formatierungsmöglichkeit.
Wenn du das soweit geändert hast, dann bitte ich um den Quellcode. Begründung: Wenn ich deine geänderte Version mit SLEPic vergleiche, fallen mir mit Sicherheit die Änderungen auf. Wäre eine Möglichkeit zu vergleichen wie sich das in der Klassenprogramierung auswirkt.
Gruß
Bruno
Messing
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: Klassen Erstellung

Beitrag von brandelh »

messing hat geschrieben:an Hubert wonach muß ich in der Wissensbasis suchen?
Author: BrandelH
HB_CLAS* .... aber ich habe es dir rausgesucht:

http://www.xbaseforum.de/viewtopic.php?f=16&t=499
Gruß
Hubert
Benutzeravatar
messing
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 216
Registriert: Mi, 13. Jan 2010 9:42
Wohnort: Lauterbach / Hessen

Re: Klassen Erstellung

Beitrag von messing »

Hi Hubert,

Danke
Gruß
Bruno
Messing
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: Klassen Erstellung

Beitrag von AUGE_OHR »

Tom hat geschrieben:Davon abgesehen glaube ich kaum, dass es gelingen wird, aus XbpSLE und Get eine funktionierende Klasse zu erzeugen. :wink:
ich "denke" es ist so was wie C:\ALASKA\XPPW32\Source\samples\solution\xbpget\xbpget.prg gemeint

Code: Alles auswählen

/*
 * XbpGet Klasse
 */
CLASS XbpGet FROM XbpSLE
...

CLASS InvisibleGet FROM Get
   EXPORTED:
   METHOD init
   METHOD display
ENDCLASS

METHOD InvisibleGet:Init( nRow, nCol, bVarBlock, cVarName, cPicture, ;
                          cColor, bValid, bWhen )
RETURN ::Sle:Init( bVarBlock, cVarName, cPicture, bValid, bWhen )

METHOD InvisibleGet:display()
RETURN self
da wird "auf" einem XbpSLE ein ( invisible ) GET erzeugt.
gruss by OHR
Jimmy
Benutzeravatar
messing
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 216
Registriert: Mi, 13. Jan 2010 9:42
Wohnort: Lauterbach / Hessen

Re: Klassen Erstellung

Beitrag von messing »

Servus an die Gemeinde,
jetzt mal was neues.
Ich hab hier mal was angesetzt, und wäre erfreut, wenn Ihr mir helft.
Stundenumrechnung mal als Klasse. lSchalter = .T. für Zeit 00:00:00 bzw. .F. als Stundenzahl

Code: Alles auswählen

   CLASS StdUmrechnung
     EXPORTED:                         
        VAR    cAnfang, cEnde , nAnfang, nEnde, cZeit, nZeit,;
               lSchalter
        METHOD  init, Zeit
   ENDCLASS

   METHOD StdUmrechnung:init( cAnfang, cEnde, lSchalter )
      ::cAnfang   := IIF( cAnfang == NIL, "00:00:00", cAnfang )
      ::cEnde     := IIF( cEnde == NIL, "00:00:00", cEnde )
      ::lSchalter := IIF( lSchalter == NIL, .T., lSchalter )
   RETURN self

   METHOD StdUmrechnung:Zeit
      LOCAL nAnfang, nEnde, nZeit
         if val(substr(::cAnfang,1,2)) = 0
            stuff(::cAnfang,1,0,"00")
         elseif val(substr(::cAnfang,4,2)) = 0
            stuff(::cAnfang,4,0,"00")
         elseif val(substr(::cAnfang,7,2)) = 0
            stuff(::cAnfang,7,0,"00")
         endif
         if Substr(::cAnfang,3,1) <> ":"
            stuff(::cAnfang,3,0,":")
         elseif substr(::cAnfang,6,1) <> ":"
            stuff(::cAnfang,6,0,":")
         endif
         nAnfang:=TimeToSec(::cAnfang)
         nEnde:=TimeToSec(::cEnde)
         nZeit:= nEnde - nAnfang
         if ::lSchalter = .T.
            ::cZeit:=SecToTime(Abs(nZeit))
         else
            ::cZeit:=str(abs(nZeit/60/60,8,2))
         endif
   RETURN self

      oTest1:=StdUmrechnung():new("05:00:00","15:30:00",.T.)
      oTest1:cAnfang:="08:00:00"
      oTest1:Zeit()
      Zeitdifferenz:=oTest1:cZeit
Was müßte ich jetzt noch berücksichtigen, wenn ich dieses Objekt für die Stundenberechnung mit einem SLE verknüpfe?
Und was müßte man allgemein ändern um diese Klasse auszubauen etc.
Ihr seid selber Schuld !!! :D Ihr habt mich nach Hannover gelockt, und ich hab "Blut geleckt"! :D
Und ja, daraus wird keine Limousine mit Ladefläche gemacht :D :D
Gruß
Bruno
Messing
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: Klassen Erstellung

Beitrag von AUGE_OHR »

messing hat geschrieben:Was müßte ich jetzt noch berücksichtigen, wenn ich dieses Objekt für die Stundenberechnung mit einem SLE verknüpfe?
Und was müßte man allgemein ändern um diese Klasse auszubauen etc.
hm ... das "validate" fehlt noch.
alles in ein SLE zu packen ist ja möglich ... ich hab nun 3 x SLE die aussehen wie 1 SLE ... ich finde es leichter zu handlen

p.s. Windows hat ja auch eine Time / Date Class. Den "Wrapper" und Demosource findest du auf dem USB Stick von der Devcon in meinem Vortrag.
messing hat geschrieben:Ihr seid selber Schuld !!! :D Ihr habt mich nach Hannover gelockt, und ich hab "Blut geleckt"! :D
Und ja, daraus wird keine Limousine mit Ladefläche gemacht :D :D
hehehe ... die "Seele" haben wir bekehrt.
gruss by OHR
Jimmy
Benutzeravatar
messing
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 216
Registriert: Mi, 13. Jan 2010 9:42
Wohnort: Lauterbach / Hessen

Re: Klassen Erstellung

Beitrag von messing »

AUGE_OHR hat geschrieben:hm ... das "validate" fehlt noch.
alles in ein SLE zu packen ist ja möglich ... ich hab nun 3 x SLE die aussehen wie 1 SLE ... ich finde es leichter zu handlen

p.s. Windows hat ja auch eine Time / Date Class. Den "Wrapper" und Demosource findest du auf dem USB Stick von der Devcon in meinem Vortrag.
Hi Jimmy,
na gut Heim gekommen?

validate, hilf mal auf die sprünge.
Mit SLE verknüpfen meine ich eigentlich, Eingabe von zwei SLE mit versch, Zeiten, welche dann auf das Objekt zugreifen und somit in einem SLE oder Static die Differenz erscheint.
Ich hab erst mal damit angefangen, um den Aufbau der Klassen besser zu verstehen.
Gruß
Bruno
Messing
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: Klassen Erstellung

Beitrag von Jan »

AUGE_OHR hat geschrieben:hehehe ... die "Seele" haben wir bekehrt.
Mich werdet Ihr nie bekommen! :roll: :lol:

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
messing
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 216
Registriert: Mi, 13. Jan 2010 9:42
Wohnort: Lauterbach / Hessen

Re: Klassen Erstellung

Beitrag von messing »

Jan hat geschrieben:
AUGE_OHR hat geschrieben:hehehe ... die "Seele" haben wir bekehrt.
Mich werdet Ihr nie bekommen! :roll: :lol:

Jan
Bekommen nicht ! :D bist ja schon dabei :lol:
Hilf mal nach =D>
Gruß
Bruno
Messing
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9345
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 359 Mal
Kontaktdaten:

Re: Klassen Erstellung

Beitrag von Tom »

Hallo, Bruno.

Eine wirklich zwingende Anwendung für eine Klasse ist das nicht - sondern eher ein Klassiker für eine UDF. Whatsoever.

Du müsstest vor dem Aufbau des Dialogs/der SLEs ein Klassenobjekt erzeugen - eines sollte genügen. Alle betroffenen SLEs bestückten dann beispielsweise im SetInputFocus-Slot die beiden iVars und aktualisierten das Anzeigestatic. Im KillInputFocus-Slot müsste dasselbe passieren. Wichtig wäre, dass die Statics auch wirklich nur von dort aktualisiert würden (SetCaption()).
Herzlich,
Tom
Benutzeravatar
messing
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 216
Registriert: Mi, 13. Jan 2010 9:42
Wohnort: Lauterbach / Hessen

Re: Klassen Erstellung

Beitrag von messing »

Tom hat geschrieben:Hallo, Bruno.

Eine wirklich zwingende Anwendung für eine Klasse ist das nicht - sondern eher ein Klassiker für eine UDF. Whatsoever.

Du müsstest vor dem Aufbau des Dialogs/der SLEs ein Klassenobjekt erzeugen - eines sollte genügen. Alle betroffenen SLEs bestückten dann beispielsweise im SetInputFocus-Slot die beiden iVars und aktualisierten das Anzeigestatic. Im KillInputFocus-Slot müsste dasselbe passieren. Wichtig wäre, dass die Statics auch wirklich nur von dort aktualisiert würden (SetCaption()).
Servus Tom,
hoffe Du bist gut Nach Haus gekommen.
Ja ist ein Klassiker, aber da ich genau weis, was der macht läßt sich das Klassenbeispiel damit gut nachvollziehen. Nach meinem neuesten Wissensstand, sind Klassen nichts anderes als eine Objektbeschreibung, wie was wo das Objekt machen soll bzw. darf. Noch fehlt es mir an der Umsetzungsmöglichkeit allgemein, deswegen frag ich ja an, was evtl. noch fehlt, worauf man noch achten muß.
Als Function liefert RETURN ... einen Wert zurück, im Objekt kann man auf den Wert solange zurückgreifen bis er geändert wurde. In der Func nicht. Die Frage wegen SLE bzw. Static, naja hab geschlafen, Objekt greift auf Objekt zu, SLE oder Static sind ja Objekte. Wie Du siehst, so langsam kommt mehr durch.
Gruß
Bruno
Messing
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16501
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Re: Klassen Erstellung

Beitrag von Martin Altmann »

Moin Konstantin,
messing hat geschrieben:Als Function liefert RETURN ... einen Wert zurück, im Objekt kann man auf den Wert solange zurückgreifen bis er geändert wurde. In der Func nicht.
kleiner Hinweis am Rand: Wenn Du eine Variable in der Funktion oder Prozedur als STATIC deklarierst, dann merkt sie sich sehr wohl den Wert!
Beispiel:

Code: Alles auswählen

PROCEDURE AufrufNr()
STATIC nI := 0
? "Dies ist der " + ALLTRIM( STR( nI++ ) ) + ". Aufruf der Prozedur."
RETURN
Wenn Du das jetzt aufrufst, kommt jeweils die folgende Ausgabe auf den Bildschirm:

Code: Alles auswählen

AufrufNr() // -> Dies ist der 1. Aufruf der Prozedur.
AufrufNr() // -> Dies ist der 2. Aufruf der Prozedur.
AufrufNr() // -> Dies ist der 3. Aufruf der Prozedur.
AufrufNr() // -> Dies ist der 4. Aufruf der Prozedur.
Viele Grüße,
Martin
:grommit:
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/

Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Antworten