![]() |
Deklarierung einer "function"
Da ich noch sehr jung bin, weiss ich natürlich nicht sooooo viel von Delphi. Aber das einzige was ich nicht verstehe kann mir kein Schwein beibringen :wall: . Undzwar die Deklarierung von "function"´s.
Wie man eine "procedur" erstellt weiss ich seltsamer weise: Doppelklick auf Item, schon hat er mir eine "procedure" erstellt die ich auch dann in der Unit bearbeiten kann. :roll: Aber wie man eine "function" erstellt bzw. deklariert kann mir das vieleicht jemand erklären????? :oops: Vielen Dank für eure mithilfe. Achso: Bei meinem letztem beitrag habe ich diese Antwort bekommen: Zitat:
Zitat:
![]() Hoffe das der Link funzt! ------------------------- Danke für die Antworten. Ich werde es mal ausprobieren. |
Re: Deklarierung einer "function"
Hallo
Schau in die Open-Source SParte und siehe dier Quelltexte an. ;) Hier mal ein kleines Beispiel:
Delphi-Quellcode:
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs; type TForm1 = class(TForm) // Hier wäre es so "richtig" global deklariert // Aufrufen könntest du hier deklarierte Funktionen einfach über ihren Namen // und das in jeder Unit, die diese Unit hier eingebunden hat private { Private-Deklarationen } // Nur in dieser Unit sichtbar // Man muss sie hier nicht deklarieren, wenn du die Funktion über denen // implementiert, die diese Aufrufen procedure Foo(A: Integer); function Blubb(A: String): Integer; public { Public-Deklarationen } // im ganzen Programm sichtbar // Aufruf über // Form1.xyz end; var Form1: TForm1; implementation {$R *.dfm} // Prozedur procedure TForm1.Foo(A: Integer); begin ShowMessage(IntToSTr(A)); end; // Funktion function TForm1.Blubb (A: String): Integer; begin result := Length(A); end; end. |
Re: Deklarierung einer "function"
Ich empfehle dir auch
![]() |
Re: Deklarierung einer "function"
Zitat:
Delphi-Quellcode:
Jede function oder procedure, die du selbst definieren möchtest, schreibst du beim type TForm1 einfach rein. Im quelltext musst du bei fenstern noch den namen der unit dazu schreiben. Also in diesem Fall "TForm1." Bei functions sollte man auf jedenfall dem result einen default wert zuweisen, falls irgendetwas schief geht.
type
TForm1 = class(TForm) procedure ZeigeNachricht(Text: string); function Addieren(a: integer; b: integer): integer; private { Private declarations } public { Public declarations } end; {...} procedure TForm1.ZeigeNachricht(Text: string); begin ShowMessage(Text); end; function TForm1.Addieren(a: integer; b: integer): integer; begin Result:=0; //Bei functions wird das ergebnis über die feste variable Result gesetzt. Result:=a+b; end; Aufrufen kannst du eine function so:
Delphi-Quellcode:
Ich hoffe mal, ich konnte dir helfen.
procedure TForm1.Button1Click(Sender: TObejct);
begin Edit3.Text:=IntToStr(Addieren(StrToInt(Edit1.Text), StrToInt(Edit2.TExt)); end; |
Re: Deklarierung einer "function"
Das wichtigste ist ja eigentlich schon gesagt worden, aber trotzdem werd ich mal meine 2 cent noch einbringen.
Du unterliegst da einem leichten Irrtum was die procedures angeht. Natürlich hast du recht, dass eine procedure erstellt wird, wenn du doppelt auf eine Komponente klickst. Das ist aber nur ein Teil der Wahrheit. Procedures und Functions kannst du nämlich ebensogut "von Hand" erstellen (und dies wird in den meisten Situationen auch der Fall sein). Prozeduren und Funktionen sind dazu da, dein Programm in logische Blöcke aufzuspalten. Anstatt alles in eine einzige Hauptprogrammroutine zu schreiben fasst du gewissermaßen zusammen was zusammen gehört. Das macht deinen Quelltext übersichtlicher und auch wiederverwertbarer, weil du gleiche oder ähnliche Dinge nicht mehrmals eintippen musst. Damit ist denke ich plausibel, dass es zum größten Teil dir überlassen ist, wo und wann du eine procedure/function schreibst. Was die Details zur Deklaration etc angeht verweise ich auf meine Vorredner. :wink: |
Re: Deklarierung einer "function"
Du kannst eine Funktion oder Prozedur so erstellen:
Entweder, sie gehört dierekt zur Unit, dann deklarierst du sie ausserhalb irgendwelcher Klassendeklarationen:
Delphi-Quellcode:
oder du deklarierst die Funktion/Klasse zu einer Klasse zugehörig, in unserem Falle also TFORM1:
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs; type TForm1 = class(TForm) private { Private-Deklarationen } public { Public-Deklarationen } end; procedure myprocedure(i:integer); function myfunction(i:integer):string; var Form1: TForm1; implementation {$R *.dfm} procedure myprocedure(i:integer); begin dosomething; end; function myfunction(i:integer):string; begin dosomethingother; end; end.
Delphi-Quellcode:
welche Methode von beiden empfehlenswerter ist, überlasse ich dir. Wenn du von der Prozedur/Funktion aus dierekten Zugriff auf die form haben willst (z.B. canvas.rectangle oder label1.caption aufrufen willst, dann solltest du sie in der Form deklarieren, wenn du mehrere Units verwendest, unbedingt ausserhalb der form. Wenn du sie ausserhalb der form deklarierst, musst du label1.caption so aufrufen: form1.label1.caption (da form1 eine Variable ist, die dierekt in der Unit deklariert ist) oder so:
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs; type TForm1 = class(TForm) private { Private-Deklarationen } public { Public-Deklarationen } procedure myprocedure(i:integer); function myfunction(i:integer):string; end; var Form1: TForm1; implementation {$R *.dfm} procedure tform1.myprocedure(i:integer); begin dosomething; end; function tform1.myfunction(i:integer):string; begin dosomethingother; end; end.
Delphi-Quellcode:
procedure xy;
begin with form1 do begin dosomething; end; end; |
Re: Deklarierung einer "function"
Zitat:
@mindforce: Es gibt generell zwei Typen von Prozeduren: lokale Prozeduren und Methoden. Erstere stehen irgendwo unter implementation. Vereinfacht kann man sagen, dass du hier nicht auf die Formcontrols zugreifen kannst/sollst:
Delphi-Quellcode:
Außerdem kann man nur in Code unterhalb der Funktion auf diese zugreifen.
function Add(const a, b: Integer): Integer;
begin Result := a + b; // Result := StrToInt(Edit1.Text) + a + b // geht nicht, bzw. nur über hässliche Irrwege end; Methoden gehören zu deiner Form, du kannst problemlos auf alle Controls der Form zugreifen. Soll die Methode auch von anderen Units/Klassen aufgerufen werden, deklarierst du sie unter public, sonst private.
Delphi-Quellcode:
Den Code schreibst du nun unter implementation, wobei du den Klassennamen vor den Funktionsnamen hängst (bestimmt die Zugehörigkeit der Methode) oder einfach im type-Abschnitt Strg + Shift + C drückst:
TForm1 = class(TForm)
private function Add(const a: Integer): Integer; public [...]
Delphi-Quellcode:
Das war jetzt ziemlich vereinfacht, Genaueres musst du aber erst wissen, wenn du dich intensiver mit OOP beschäftigst.
function TForm1.Add(const a: Integer): Integer;
begin Result := StrToInt(Edit1.Text) + a; end; Zitat:
Zitat:
Delphi-Quellcode:
ist völlig unsinnig.
function TForm1.Addieren(a: integer; b: integer): integer;
begin Result:=0; Result:=a+b; end; [edit]ichbins war schneller :stupid: [/edit] |
Re: Deklarierung einer "function"
Zitat:
|
Re: Deklarierung einer "function"
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:44 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