AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Unit mit Funktionen einbinden

Ein Thema von Sugar · begonnen am 17. Nov 2020 · letzter Beitrag vom 21. Nov 2020
Antwort Antwort
Sugar

Registriert seit: 23. Jul 2012
83 Beiträge
 
#1

Unit mit Funktionen einbinden

  Alt 17. Nov 2020, 17:11
Hallo,

ich würde gerne Funktionen, die ich oft benötige in eine separate Unit auslagern. Leider bekomme ich es nicht hin, dass ich die Funktionen auch aufrufen kann.

Beispiel:

Ich habe eine Form mit dem Namen "Kunden". In einer globalen Unit mit dem Namen "Tools" soll nun die Funktion XYZ aufgerufen werden.

Wie bringe ich die Form mit der Unit so zusammen, dass ich aus dem Form Kunde eine Funktion der Unigt "Tools" aufrufen kann.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.873 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Unit mit Funktionen einbinden

  Alt 17. Nov 2020, 17:15
Die Unit in die Uses des implementation Teils.
Markus Kinzler
  Mit Zitat antworten Zitat
bernhard_LA

Registriert seit: 8. Jun 2009
Ort: Bayern
1.138 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Unit mit Funktionen einbinden

  Alt 17. Nov 2020, 17:19
hier wäre ein Beispiel : https://www.delphi-treff.de/object-p...rogrammaufbau/

oder ggf. deinen eigenen Code hier posten
  Mit Zitat antworten Zitat
Cronen

Registriert seit: 5. Sep 2003
Ort: Hannover
63 Beiträge
 
Delphi 10.3 Rio
 
#4

AW: Unit mit Funktionen einbinden

  Alt 17. Nov 2020, 18:29
Die Unit muss einen Interface und einen Implementationsteil haben.
Im Interface-Abschnitt kommen die Proceduren/Funktionen mit ihrem Aufruf-Syntax
und müssen dann im Implementations-Abschnitt definiert werden:

Delphi-Quellcode:
unit MeineFunktionen;

interface

uses
  WinApi.Windows; {nur als Beispiel}

const {diese const/procedure/function sind nach von aussen aufrufbar}
  VersionsNr : string = '5.4.334';

procedure Machirgendwas(Zahl : Integer);

function BerechneWas : longInt;

implementation

function Verdopple(Zahl : Integer) : Integer; { -> diese function klappt nur innerhalb der Unit, da nicht im Interface-Abschnitt}
begin
  resulte := Zahl*2;
end;

procedure Machirgendwas(Zahl : Integer);
begin
 {hier Verarbeitungs-Code}
end;

function BerechneWas(Zahl : longInt) : longInt;
var
  n : longInt;
begin
  n := Verdopple(Zahl)*4;
  result := n;
end;

end.
Im Programm muss dann die Unit MeineFunktionen per uses eingebunden werden.

Delphi-Quellcode:
...
uses
  MeineFunktionen;

var
  n : LongInt;
...
  n := BerechneWas(2); {Ergebnis wäre 16}
  Mit Zitat antworten Zitat
Delfiano

Registriert seit: 13. Jul 2020
61 Beiträge
 
#5

AW: Unit mit Funktionen einbinden

  Alt 19. Nov 2020, 02:37
Der einfachste Weg bei nicht grafischen Elementen wäre eigentlich ohne Interface und dafür mit include zu arbeiten, wenn es nur um einfache Funktionen und Prozeduren geht.

Bei komplexeren Sachen mit grafischen Komponenten (und nötigem Inferface) lassen sich Funktionen und Prozeduren auch universell in Units auslagern, die vom Mainform des Hauptprogramms unabhängig sind.

Die jeweiligen Kompontenten werden dann einfach als Parameter übergeben.

Nurmal als Beispiel:
Delphi-Quellcode:
Procedure ClearGrid(sg: TStringGrid);
VAR
  i: Integer;
BEGIN
  WITH sg DO BEGIN
    FOR i := 0 TO RowCount DO Rows[i].Clear;
    RowCount:=2;
    fixedRows:=1;
  END;
END;
Procedure ClearGrid(sg: TStringGrid); und Aufruf im Hauptprogramm durch

Delphi-Quellcode:
procedure TForm1.ClearGrids;
VAR
  i: BYTE;
begin
  for i:=1 to 7 DO ClearGrid(FindComponent('StringGrid'+IntToStr(i)) as TStringGrid);
end;
  Mit Zitat antworten Zitat
Sugar

Registriert seit: 23. Jul 2012
83 Beiträge
 
#6

AW: Unit mit Funktionen einbinden

  Alt 19. Nov 2020, 14:45
Super, vielen Dank. Ich mache mich mal ran und versuche das umzusetzen.

Gruß
Sugar
  Mit Zitat antworten Zitat
Antwort Antwort


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 00:14 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