AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Werkzeuge Mehrsprachige Quellcode Documentation - Ob & Wie?
Thema durchsuchen
Ansicht
Themen-Optionen

Mehrsprachige Quellcode Documentation - Ob & Wie?

Ein Thema von Mavarik · begonnen am 11. Dez 2015 · letzter Beitrag vom 13. Dez 2015
 
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.154 Beiträge
 
Delphi 10.3 Rio
 
#7

AW: Mehrsprachige Quellcode Documentation - Ob & Wie?

  Alt 11. Dez 2015, 16:17
a)Kommentare? wer liest die?
Ich habe nicht von Kommentaren gesprochen, sondern von Dokumentation...

Kleines Beispiel aus System.Sysutils

Delphi-Quellcode:
    TMultiWaitEventClass = class of TMultiWaitEvent;
  private
    class procedure FreeAndNil(var Obj); static; inline;
    class function DoWait(const Events: array of TMultiWaitEvent; WaitAll: Boolean; Index: PInteger; Event: PMultiWaitEvent; Timeout: Cardinal): TWaitResult; static;
    function WaiterExpired(var Info: TWaitInfo): Boolean;
    procedure RemoveExpiredWaiters;
  protected class var
    /// <summary>
    /// This class variable will be set by a single descendent. The expectation is that one and only one descedent
    /// of this class exists. That one descendent provides the actual implementation. This class variable is
    /// used by the static class function Create to construct an instance of that one class that implements the
    /// needed functionality.
    /// </summary>
    FMultiEventType: TMultiWaitEventClass;
  protected
    /// <summary>
    /// Abstract virtual class overridden in descendant classes to create the proper type for the instance.
    /// </summary>
    class function CreateInstance: TMultiWaitEvent; virtual; abstract;
    /// <summary>
    /// Since This unit doesn't cannot use System.SysUtls, this virtual allows descendants which do have access to
    /// System.SysUtils to provide a means for this base ancestor class to raise exceptions when validating arguments.
    /// </summary>
    class procedure ArgumentException; virtual; abstract;
    /// <summary>
    /// Since This unit doesn't cannot use System.Classes, this virtual allows descendants which do have access to
    /// System.Classes to provide a means for this base ancestor to call System.Classes.TThread.GetTickCount.
    /// </summary>
    class function GetTickCount: Cardinal; virtual; abstract;
    /// <summary>
    /// Overridden in descendents. This explicitly locks this specific instance.
    /// </summary>
    procedure Lock; virtual; abstract;
    /// <summary>
    /// Overridden in descendents. This explicitly unlocks this specific instance.
    /// </summary>
    procedure Unlock; virtual; abstract;
    /// <summary>
    /// Overridden in descendents. This must <strong>atomically</strong> set the state of the event.
    /// </summary>
    procedure AtomicSetEventState(State: Boolean); virtual; abstract;
    /// <summary>
    /// Overridden in descendents. Notifies all current waiters this event is signaled.
    /// </summary>
    procedure NotifyWaiters; virtual; abstract;
    /// <summary>
    /// Overridden in descendents. Clears the storage used for the waiters.
    /// </summary>
    procedure ClearWaiters; virtual; abstract;
    /// <summary>
    /// Overridden in descendents. Add a new waiter to the list of waiters.
    /// </summary>
    procedure PushWaiter(const Waiter: TWaitInfo); virtual; abstract;
    /// <summary>
    /// Overridden in descendents. Removed a waiter from the list of waiters.
    /// </summary>
    procedure RemoveWaiter(Index: Integer); virtual; abstract;
    /// <summary>
    /// Overridden in descendents. Returns the current number of waiters in the list of waiters.
    /// </summary>
    function GetWaiterCount: Integer; virtual; abstract;
    /// <summary>
    /// Overridden in descendents. Returns the index'th waiter from the waiter list.
    /// </summary>
    function GetWaiter(Index: Integer): PWaitInfo; virtual; abstract;
    /// <summary>
    /// Current number of threads waiting on this event.
    /// </summary>
    property WaiterCount: Integer read GetWaiterCount;
    /// <summary>
    /// Array of PWaitInfo references which contain information about each waiting thread.
    /// </summary>
    property Waiters[Index: Integer]: PWaitInfo read GetWaiter;
  public
    /// <summary>
    /// Rather than use a constructor which will create an instance of <strong>this</strong> class, this will
    /// return an instance of the registered descendent type that provides the actual implementation.
    /// </summary>
    class function Create: TMultiWaitEvent; static;
    destructor Destroy; override;

    /// <summary>Wait for this event instance to be signaled or Timeout is reached.</summary>
    function WaitFor(Timeout: Cardinal = INFINITE): TWaitResult; virtual; abstract;
    /// <summary>Explicitly set the event as signaled. This procedure is typically called by the implementation of
    /// a specific IAsyncResult.
    /// </summary>
    procedure SetEvent;
    /// <summary>Explicitly reset the event as unsignaled. This procedure is rarely if ever called. If it is called, it
    /// is called by the implementation of a specific IAsyncResult.
    /// </summary>
    procedure ResetEvent;

    /// <summary>Wait until all of the indicated TMultiWaitEvents are signaled or Timeout is reached</summary>
    class function WaitForAll(const Events: array of TMultiWaitEvent; Timeout: Cardinal = INFINITE): TWaitResult; static;
    /// <summary>Wait until at least one of the indicated TMultiWaitEvents are signaled or Timeout is reached</summary>
    class function WaitForAny(const Events: array of TMultiWaitEvent; Timeout: Cardinal = INFINITE): TWaitResult; overload; static;
    /// <summary>Wait until at least one of the indicated TMultiWaitEvents are signaled or Timeout is reached.
    /// Index out parameter is set to the index of the TMultiWaitEvent in the provided array which was signaled.
    /// More than one event may be signaled; Index only indicates which one caused the function to return. Index is undefined if
    /// Timeout was reached.
    /// </summary>
    class function WaitForAny(const Events: array of TMultiWaitEvent; out Index: Integer; Timeout: Cardinal = INFINITE): TWaitResult; overload; static;
    /// <summary>Wait until at least one of the indicated TMultiWaitEvents are signaled or Timeout is reached.
    /// Returns the TMultiWaitEvent instance which was signaled and caused the function to return. Event is
    /// undefined if Timeout is reached.
    /// </summary>
    class function WaitForAny(const Events: array of TMultiWaitEvent; out Event: TMultiWaitEvent; Timeout: Cardinal = INFINITE): TWaitResult; overload; static;
  end;
Warum macht man die? Damit Du in der IDE sofort die Infos hast.

Oder Schau die Spring4D an... Da ist fast jede Methode beschrieben...
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:20 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz