Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Type-Syntax-Erklärung (https://www.delphipraxis.net/36566-type-syntax-erklaerung.html)

SebE 21. Dez 2004 19:51


Type-Syntax-Erklärung
 
Hi.

Wer kann mir diesen Code erklären?
Wie kann ein Typ eine Prozedur sein?
Code:
type
THTMLParseProc = procedure(const HTMLData: string; TagType: TTagType; Parameters: TStrings);
und was muss ich als Parameter, die vom Typ THTMLParseProc sind, eingeben?
Code:
procedure ParseHTML(const HTML: string; ParseProc: THTMLParseProc)
Kann jemand helfen - danke

mirage228 21. Dez 2004 19:53

Re: Type-Syntax-Erklärung
 
Hi,

Ein Typ weist den Compiler darauf hin, dass es sich um den exakt selben Datentyp handelt. (Beispiel: TNotifyEvent).

Als Parameter musst Du eine Prozedur (ohne Parameterklammern) übergeben.

mfG
mirage228

SebE 21. Dez 2004 19:55

Re: Type-Syntax-Erklärung
 
Danke schön

Oxmyx 21. Dez 2004 19:58

Re: Type-Syntax-Erklärung
 
Das ist ein Funktionszeiger. So wie ein normaler Zeiger auf eine Variable zeigen kann, zeigt ein Funktionszeiger auf eine Funktion. Der Unterschied ist, dass man einer Funktion auch noch Parameter übergeben kann, deshalb muss der Funktionszeigertyp nach folgendem Muster deklariert werden:

Delphi-Quellcode:
type
  PFunction = function(a: Integer): Integer;
  PProcedure = procedure(a: Integer);
Dann musst du eine Funktion haben, die deren Parameterliste der des Funktionszeigers in Typ und Reihenfolge entspricht. Dann musst du den Funktionszeiger auf die Funktion zeigen lassen, und du kannst fortan mit dem Funktionszeiger die Funktion aufrufen.

Delphi-Quellcode:
type
  PAddFunc: function(a, b: Integer): Integer;

function Add(a, b: Integer); Integer;
begin
  Result := a + b;
end;

procedure Main();
var
  AddFunc: PAddFunc;
  i: Integer;
begin
  AddFunc := @Add;
  i := AddFunc(4, 5);
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:30 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz