Mattias Gärtner schreibt sich ohne "h" dafür mit zwei "t".Christian hat geschrieben:Meinte Mathias G. oder bist du in die Schweiz umgezogen ?
http://www.lazarusforum.de/memberlist.p ... file&u=442
Mattias Gärtner schreibt sich ohne "h" dafür mit zwei "t".Christian hat geschrieben:Meinte Mathias G. oder bist du in die Schweiz umgezogen ?
Wieso umgezogen, ich bin schon immer in der Schweiz.Meinte Mathias G. oder bist du in die Schweiz umgezogen ?
Code: Alles auswählen
TClass= Class of TObject
Class of TObject
Code: Alles auswählen
6.1 Class definitions
The prototype declaration of a class is as follows:
_________________________________________________________________________________________________________
Class types
-- --- -----------------------------------
class type -classclfoarsswadrdefindiefitinointion-|
-- - ---------------------------------------
class forward definition class
-- ----------- -----------------------------------
class definition - --|class - | -- -- -|
packed heritage -component list-|end
--heritage -(- class type identifier|---------------------)------------
- implemented interfaces-
--implemented interfaces-|, -interface identifier-------------------------
--------------------
--component list-|----------------|-----------------
-visibility specifier-- -|field definition ---
--------------
---|-------------------------------------------------------------
---|--const declaration part------
| |---type declaration part----| |
| ---variable declaration part--| |
| -class-variable declaration part| |
| -----method definition-----| |
-------property definition-------|
--class variable declaration part class variable declaration part-------------
--field definition- identifier list- :- type- ;--|--------------------------
-static;--
-- ------------- ----- --
method definition | -class-| -pfurnoccetdiounr hee haedaederr-|| ;
------constructor header-----|
-------desctuctor header------|
-----------------------------------------------------------------
---| virtual----|------------- ;--|-call modifiers-;--|
| -dynamic -- -;- abstract --|
|---------override ---------|
-message -|integer constant--
--string constant---
--class visibility specifier-|-------------------------------------------
--|------- private --|
| -strict-- |
-|------- protected -|
--strict-- -------|
----- public ------|
published
___________________________________________________________________
Remark: In MacPas mode, the Object keyword is replaced by the class keyword for compatibility with other pascal compilers available on the Mac. That means that in MacPas mode, the reserved word ’class’ in the above diagram may be replaced by the reserved word ’object’.
In a class declaration, as many private, protected, published and public blocks as needed can be used: the various blocks can be repeated, and there is no special order in which they must appear.
Methods are normal function or procedure declarations. As can be seen, the declaration of a class is almost identical to the declaration of an object. The real difference between objects and classes is in the way they are created (see further in this chapter).
The visibility of the different sections is as follows:
Private
All fields and methods that are in a private block, can only be accessed in the module (i.e. unit) that contains the class definition. They can be accessed from inside the classes’ methods or from outside them (e.g. from other classes’ methods)
Strict Private
All fields and methods that are in a strict private block, can only be accessed from methods of the class itself. Other classes or descendent classes (even in the same unit) cannot access strict private members.
Protected
Is the same as Private, except that the members of a Protected section are also accessible to descendent types, even if they are implemented in other modules.
Strict Protected
Is the same as Protected, except that the members of a Protected section are also accessible to other classes implemented in the same unit. Strict protected members are only visible to descendent classes, not to other classes in the same unit.
Public
sections are always accessible.
Published
Is the same as a Public section, but the compiler generates also type information that is needed for automatic streaming of these classes if the compiler is in the {$M+} state. Fields defined in a published section must be of class type. Array properties cannot be in a published section.
In the syntax diagram, it can be seen that a class can list implemented interfaces. This feature will be discussed in the next chapter.
Classes can contain Class methods: these are functions that do not require an instance. The Self identifier is valid in such methods, but refers to the class pointer (the VMT).
Similar to objects, if the {$STATIC ON} directive is active, then a class can contain static fields: these fields are global to the class, and act like global variables, but are known only as part of the class. They can be referenced from within the classes’ methods, but can also be referenced from outside the class by providing the fully qualified name.
For instance, the output of the following program:
{$mode objfpc}
{$static on}
type
cl=class
l : longint;static;
end;
var
cl1,cl2 : cl;
begin
cl1:=cl.create;
cl2:=cl.create;
cl1.l:=2;
writeln(cl2.l);
cl2.l:=3;
writeln(cl1.l);
Writeln(cl.l);
end.
will be the following
2
3
3
Note that the last line of code references the class type itself (cl), and not an instance of the class (cl1 or cl2).
Remark: Like with functions and pointer types, sometimes a forward definition of a class is needed. A class forward definition is simply the name of the class, with the keyword Class, as in the following example:
Type
TClassB = Class;
TClassA = Class
B : TClassB;
end;
TClassB = Class
A : TClassA;
end;
When using a class forward definition, the class must be defined in the same unit, in the same section (interface/implementation). It must not necessarily be defined in the same type section.
.....
Hmm. Also ich kann jetzt nur für diejenigen sprechen, die keine studierten Informatiker sind: Mir hat das Wiki bei ausgesprochen vielen Projekten sehr weiter geholfen. Es hat einige ausgezeichnete Artikel, die es selbst relativ unerfahrenen Programmierern wie mir ermöglichen, völlig ohne Vorwissen multithreaded zu programmieren oder externe Programme einzubinden. Kurzum: Das Wiki funktioniert und erfüllt seinen Zweck.marcov hat geschrieben: Es hat mehrere Versuchen mit wiki's gegeben, und die haben nicht wirklich mehr nützliche Dokumentation generiert. (aber ein ganze menge Zeit gegessen es zu starten)
Da stimme ich Dir absolut zu. Aber die Lösung kann doch nicht darin bestehen, einen durchaus in vielen Bereichen funktionierenden Ansatz zu verwerfen?Man braucht sich nur den heutigen Wiki an zu sehen, das ist alles eine fragmentierten menge Artikel ist, oft ohne deutlicher Anfang oder Ende.
"..."af0815 hat geschrieben:Es gibt aktuell offensichtlich 3 Arten der Hilfe:
a) Online
b) chm basierend
c) inf basierend
b&c können aus den selben Quellen kompiliert werden, die im SVN vorhanden sind. Aktuell dürfte die inf basierende Version mehr Unterstützng haben. Sie wird auch beim fpGUI Projekt und in verschiedene Kompiler (mse, Delphi) einbindbar.
c=dmschnell hat geschrieben:d) DocView ( -> http://forum.lazarus.freepascal.org/ind ... ic=10335.0 )af0815 hat geschrieben:Es gibt aktuell offensichtlich 3 Arten der Hilfe:
a) Online
b) chm basierend
c) inf basierend
b&c können aus den selben Quellen kompiliert werden, die im SVN vorhanden sind. Aktuell dürfte die inf basierende Version mehr Unterstützng haben. Sie wird auch beim fpGUI Projekt und in verschiedene Kompiler (mse, Delphi) einbindbar.
Ich meinte meistens nicht die heutigen Wiki, aber Wiki nutzen für die Referenz Dokumentationen. (heute ist nur IDE Hilfe Wiki)Euklid hat geschrieben:Hmm. Also ich kann jetzt nur für diejenigen sprechen, die keine studierten Informatiker sind: Mir hat das Wiki bei ausgesprochen vielen Projekten sehr weiter geholfen.marcov hat geschrieben: Es hat mehrere Versuchen mit wiki's gegeben, und die haben nicht wirklich mehr nützliche Dokumentation generiert. (aber ein ganze menge Zeit gegessen es zu starten)
Es hat einige ausgezeichnete Artikel, die es selbst relativ unerfahrenen Programmierern wie mir ermöglichen, völlig ohne Vorwissen multithreaded zu programmieren oder externe Programme einzubinden. Kurzum: Das Wiki funktioniert und erfüllt seinen Zweck.
Ich verwerfe nur die Idee das Wiki Konzept mehr umfassend zu machen. Wiki ist gut für Zusatzdokumentationen (build und kurzfristig) und ein Paar lose Artikel, kann man schwieriger nutzen für Referenz Dokumentation.Da stimme ich Dir absolut zu. Aber die Lösung kann doch nicht darin bestehen, einen durchaus in vielen Bereichen funktionierenden Ansatz zu verwerfen?Man braucht sich nur den heutigen Wiki an zu sehen, das ist alles eine fragmentierten menge Artikel ist, oft ohne deutlicher Anfang oder Ende.
Irgendwie eine Ordnung machen und behalten ist das großster Problem eine offener Wiki. Und Struktur ist wichtig um automatisierter Tools zu nutzen können. (zb Quellen und Dokumentation blenden wie fpdoc Dokumentation macht)Alles, was unser Wiki in meinen Augen benötigt, ist eine vernünftige Gliederung. Ohne die werden auch alle anderen Ansätze scheitern.
Wenn man sich intensiver mit der Dokumentaion auseinandersetzt, so sieht man das es genügend Inhalt gibt, der aber nicht beim Anwender geeignet ankommt. Es ist vollkommen klar, das es nicht andere Tools benötigt, sondern nur die Quellen des Inhaltes besser ausnutzt.marcov hat geschrieben:P.s. Die Chancen um für 1a+2 andere Tools zu nutzen sind sehr, sehr niedrig. Und ich denk das in 1b auch schon zu viel investiert ist. (und auch rechtlich die Möglichkeit Quellen und Dokumentation zu mixen ausnutzt).
Wenn es ein Bug ins heutige System wäre, denn ist das noch kein Anlass um das System zu ändern. Aber ES FUNKTIONIERT SCHON! Hier kommt der Referenz Guide "chapter 6: CLASSES" wenn ich das mache. (mit installierter CHM hilfe, ich nutze nie online)af0815 hat geschrieben:Wenn man sich intensiver mit der Dokumentaion auseinandersetzt, so sieht man das es genügend Inhalt gibt, der aber nicht beim Anwender geeignet ankommt.marcov hat geschrieben:P.s. Die Chancen um für 1a+2 andere Tools zu nutzen sind sehr, sehr niedrig. Und ich denk das in 1b auch schon zu viel investiert ist. (und auch rechtlich die Möglichkeit Quellen und Dokumentation zu mixen ausnutzt).
Es ist vollkommen klar, das es nicht andere Tools benötigt, sondern nur die Quellen des Inhaltes besser ausnutzt.
Als Beispiel: Wenn der Benutzer F1 drückt und auf 'class' steht, so müsste dort der Inhalt aus dee Languagereference stehen oder ähnlicher Inhalt der ihm weiterhilft.
Komplexer Konzepte mit nur ein Wort Input finden ist nur einmal nicht einfach. Egal welches System. Aber man kann genau spezifizieren welcher Paragraf mit welches Keyword assoziiert ist.af0815 hat geschrieben: Nur die Languagereference zB. ist ein monolitisches Latex Dokument das seinen Inhalt nicht richtig in die Struktur bekommt.
Das online System hat nie gut funktioniert. Ich weiß aber nicht warum. Aber CHM funktioniert gut, und wird heute angeraten.Es ist folglich einmal eine Languagerefernce in chm/inf nötig. Zusätzlich ist da jetzige System IMHO nicht für Mehrsprachigkeit ausgelegt.
Wenn man manuell kleine Mengen bearbeiten funktioniert fast alles.Das mit der Wiki wird gehen, wenn man will, ich habe vor ca. 2 Jahren versuche gemacht und Inhalt von dort bezogen. Es geht wenn man sich zuerst die Seitenübersicht holt, dann eine Seite aufruft, dann in den Editmodus schaltet und den Wikitext extrahiert, den Edit abbricht und zur nächsten Seite geht. Über ein paar Seiten hat das funktioniert, ich wollte nur nicht in die Spamfilter fallen und geblockt werden. Aktuell habe ich es nicht probiert. Ich könnte mir aber den umgekehrten Weg vorstellen, das die Wiki den Inhalt automatisch ablegt. Mal sehen ob es solche Module für die Wiki nicht schon gibt (DumpBackup ?!).
Ich weiss, das ich noch sehr viel über das System lernen muss. Besonders wie DAS funktioniert. Das Konzept der aktuellen Hilfe ist etwas Komplex, solange es man nicht verinnerlicht hat.marcov hat geschrieben:Komplexer Konzepte mit nur ein Wort Input finden ist nur einmal nicht einfach. Egal welches System. Aber man kann genau spezifizieren welcher Paragraf mit welches Keyword assoziiert ist.af0815 hat geschrieben: Nur die Languagereference zB. ist ein monolitisches Latex Dokument das seinen Inhalt nicht richtig in die Struktur bekommt.
Versteh ich nicht, im Wiki ist bisher das meisste an Hilfe zu finden oder hab ich was verpasst ?Es ist auch gar kein frage ob es "gehen" wird, aber ob es besser und tatsächlich mehr Hilfe in guter Qualität generiert wird. Und das Glaube ich nicht.
Ja, da hast du etwas verpasst, die meiste Hilfe ist als Quelle in fpdoc und latex Format, und wird NICHT in der Wiki gepflegt.Christian hat geschrieben:
Versteh ich nicht, im Wiki ist bisher das meisste an Hilfe zu finden oder hab ich was verpasst ?
Die meiste Doku wird von Leute wie Michael van Canneyt gemacht in fpdoc format.Das Wiki generiert mehr Doku als jedes andere System. Und ich hab nicht das Gefühl als ob da jemand groß Aufwand mit der Administraion hat.