[Delphi] Function? Procedure?

koffi

Lt. Junior Grade
Registriert
Jan. 2007
Beiträge
490
hallo!

also in meinem kleinen programm habe ich viele procedures welche durch irgendwelche button-klicks ausgelöst werden.

bei jeder procedur soll ein langer vorgang (aneinanderreihung von rechnungen und so) ausgeübt werden, dieser ist bei allen proceduren gleich.

jetzt dachte ich mir, um platz zu sparen und um die übersicht zu behalten, kann ich diesen vorgang (der ja sowieso bei mehreren proceduren gleich ist) in eine extra funktion xy packen und dann in jede procedur dann einfach schreiben "führe funktion xy aus".

aber irgendwie habe ich gemerkt sind functionen nicht ganz dafür gedacht.. die sind ja dazu da einen wert zu empfangen, zu verarbeiten und zurückzusenden.

wie "missbrauche" ich eine function zu meinem zweck, oder gibt es etwas anderes das mich glücklich macht (um platz zu sparen und so)?

nochmal zur veranschaulichung:

so war es vorher:
procedure 1
a := 1
b := 2
c := 3
d :=4

procedure 2
a := 299
b := 2
c := 3
d := 4

und so soll es sein:
procedure 1
a := 1
führe function xy aus!

procedure 2
a := 299
führe function xy aus!

function xy
b := 2
c := 3
d := 4



bitte kein fachchinesisch, bin delphi anfänger (wie man sicherlich sieht :) )

vielen dank!
 
sehe ich das richtig, dass b,c und d immer die von dir angegebenen werte haben sollen?
falls ja könntest du ja einfach eine konstante einfügen um das problem zu umgehen ^^
 
nimm statt einer function einfach noch eine procedure also:
Code:
procedure 1
begin
  a := 1;
  xyz;
end;

procedure 2
begin
  a := 299;
  xyz;
end;

procedure xyz
begin
  b := 2;
  c := 3;
  d := 4;
end;
 
Ich versteh jetz dein Problem nicht ganz. Dein Vorschlag wie es sein sollte, trifft das ganze ja eigentlich...
Oder versteh ich da was falsch? Vielleicht solltest du etwas aussagekräftigeren Code posten, so erkennt man nicht wirklich was du vorhast...

Standardbeispiel:
Code:
procedure OnButton1Click;
var a,b,c: integer;
begin
a := 1;
b := 2;
c := Add(a,b); //liefert c = 3
end;

procedure OnButton2Click;
var a,b: integer;
begin
a := 3;
b := 4;
c := Add(a,b); //liefert c = 7
end;

function Add(a,b: integer): integer;
begin
result := a + b;
end;
 
alphamoose hat wohl recht, ich hätte meinen echten quelltext kopieren sollen, dass das nur ein beispiel war was ich gepostet hab ist wohl untergegangen.
natürlich weis ich das ich b und c und d eine konstante variable geben kann und bla, ich wollte damit nur ausdrücken dass ich immer das gleiche machen will.

@dk1:

ja, genau so hab ich mir das vorgestellt! nur ein problem noch...


edit: bevor ich mir den mund fusselig schreibe *lol*
ein bild sagt mehr als 1k worte

delphiprobodf3.gif
 
Zuletzt bearbeitet:
Dein Aufruf ist schon richtig du musste nur schreiben:
Code:
interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
    [COLOR="Red"]procedure gewinncheck;[/COLOR]
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;
var
  Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);
begin
  gewinncheck;
end;

procedure [COLOR="Red"]TForm1.[/COLOR]gewinncheck;
begin
  //hier ergänzen was zu machen ist
end;

end.
 
ich stehe tief in deiner schuld!
tausend dank, euch allen!
 
Zurück
Oben