AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Unterschied zwischen Prozeduren und Funktionen
Thema durchsuchen
Ansicht
Themen-Optionen

Unterschied zwischen Prozeduren und Funktionen

Ein Thema von Pseudemys Nelsoni · begonnen am 5. Dez 2003 · letzter Beitrag vom 5. Dez 2003
Antwort Antwort
Benutzerbild von Pseudemys Nelsoni
Pseudemys Nelsoni

Registriert seit: 24. Dez 2002
Ort: Hamburg-Harburg
3.551 Beiträge
 
#1

Unterschied zwischen Prozeduren und Funktionen

  Alt 5. Dez 2003, 12:10
joooo...schon wieder sone doofe frage -_-

Ok, der unterschied zwischen prozeduren und funktionen, ist der, dass letztere ein ergebnis zurückliefert und eine prozedur eben nicht...aber man kann doch per call by reference mit einer prozedur einer variable direkt das ergebnis geben. Deswegen frag ich mich nun wann man funktionen und wann man prozeduren nehmen sollte..(darauf bin ich aus meinem vorigen thread gekommen).
hat mal jemand ein kleines beispiel was eine funktion kann, eine prozedur aber nicht? und umgekehrt.
Mario
MSN: cyanide@ccode.de
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Unterschied zwischen Prozeduren und Funktionen

  Alt 5. Dez 2003, 12:23
Delphi-Quellcode:
function rechne(a, b: Integer): Integer;
begin
  result := a + b;
end;
wenn du jetzt rechnen willst:
z := rechne(a, b) * z / y; währe es reichlich platzverschwendung
Delphi-Quellcode:
rechne(a, b, ergebnis);
z := ergebnis * z / y;
zu benutzen.

die Variante mit der Referenzübergabe bietet sich für klassen an wo das ergebnis zum Beispiel in einer TStringlist gespeichert wird da man sonst sich erst noch gedanken um die speicherreservierung und spätere freigabe vom TStringlistergebnis machen müsste.

Oder wenn ich eine einer TStringlist etwas hinzufügen will wäre es ziemlich resourcen verschwendend wenn ich eine stringlist übergebe und als result eine größere stringlist zurückgegeben wird die ich dann eh zum ersetzen meines übergabewertes nehme.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von Pseudemys Nelsoni
Pseudemys Nelsoni

Registriert seit: 24. Dez 2002
Ort: Hamburg-Harburg
3.551 Beiträge
 
#3

Re: Unterschied zwischen Prozeduren und Funktionen

  Alt 5. Dez 2003, 12:38
danke, das beispiel war gut
Mario
MSN: cyanide@ccode.de
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.063 Beiträge
 
Delphi 12 Athens
 
#4

Re: Unterschied zwischen Prozeduren und Funktionen

  Alt 5. Dez 2003, 12:42
Wenn du die Variable direkt ändern willst, geht es mit der Prozedur besser:
Delphi-Quellcode:
Function Rechne(A, B: Integer): Integer;
  Begin
    Result := A + B;
  End;

B := Rechne(A, B);
Delphi-Quellcode:
Procedure Rechne(A: Integer; Var B: Integer);
  Begin
    B := A + B;
  End;

Rechne(A, B);

Und wenn mehrere Variablen geändert werden sollen ist diese auch besser:
Delphi-Quellcode:
Procedure Rechne(A: Integer; Var B, C: Integer);
  Begin
    B := A + B;
    C := A + C;
  End;

Rechne(A, B, C);
Wo die Funktion ihre Vorteile hat, sagte ja schon Thornberry.


http://www.FrankNStein.de/Smiley-Kuss.gif http://www.FrankNStein.de/Smiley-Spinne.gif http://www.FrankNStein.de/Smiley-Winken.gif

[edit=sakura] Ich habe Deinen Doppelpost wie gewünscht in die ewigen DP-Gründe verbannt. Mfg, sakura[/edit]
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  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 08:32 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