AGB  ·  Datenschutz  ·  Impressum  







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

Funktionen

Ein Thema von Pseudemys Nelsoni · begonnen am 8. Mai 2003 · letzter Beitrag vom 13. Jan 2005
Antwort Antwort
Seite 1 von 3  1 23      
Benutzerbild von Pseudemys Nelsoni
Pseudemys Nelsoni

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

Funktionen

  Alt 8. Mai 2003, 07:37
hi

sagen wir mal ich hab ne funktion

Delphi-Quellcode:
function mult(a: integer): integer;
begin
  Result := a * 2;
end;
und ich rufe sie auf mit:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var bla1, bla2: integer;
begin
  bla1 := 2;
  bla2 := mult(bla1);
  label1.Caption := IntToStr(bla2);
end;

der wert mult wird an die funktion gegeben...ok...aber wo speichert die funktion ihn denn? ich mein ich hab da ja keine variable die den wert da enthält oder?

hab (leider) noch nie mit funktionen gearbeitet, wenn mirs jemand erklären würd, wär nett, danke

gruss silent
Mario
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2
  Alt 8. Mai 2003, 07:56
Du übergibts nicht mult an die Funktion, das ist die Funktion, sondern bla1 übergibst du an die Funktion. Und den Parameter der Funktion a, kann nman eien lokale Variable innerhalb der Funktion sehen.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Pseudemys Nelsoni
Pseudemys Nelsoni

Registriert seit: 24. Dez 2002
Ort: Hamburg-Harburg
3.551 Beiträge
 
#3
  Alt 8. Mai 2003, 08:17
also wird "bla1" an die variable "a" der funktion übergeben? - was ist wenn ich da 2 variablen hab, z.b "a" und "b", wo wird es dann "hineingesteckt?"
Mario
  Mit Zitat antworten Zitat
Benutzerbild von wo0zy
wo0zy

Registriert seit: 14. Apr 2003
Ort: 127.0.0.1
80 Beiträge
 
Delphi 7 Enterprise
 
#4
  Alt 8. Mai 2003, 08:45
für alle variablen die du übergibst, brauchst du in der funktion/procedur ja auch immer variablen die diese werte übernehmen
It's not a bug it's a feature!
  Mit Zitat antworten Zitat
Benutzerbild von Pseudemys Nelsoni
Pseudemys Nelsoni

Registriert seit: 24. Dez 2002
Ort: Hamburg-Harburg
3.551 Beiträge
 
#5
  Alt 8. Mai 2003, 09:03
und wie geb ich an was übergeben wird? ich meine wenn da 2 integervariablen in der funktion sind, in welche kommt denn ein wert bei aufruf?

das "a" kann den wert ja gar nicht enthalten weil ich in nie dem a zugewisen hab...aber irgendwo muss der wert doch sein
Mario
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#6
  Alt 8. Mai 2003, 09:25
Delphi-Quellcode:
function add(a, b: Inetger): Integer;
begin
  result := a+b;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  a, b, c : Integer
begin
  a := 1;
  b := 2;
  c := add(a, b);
  ShowMessage(IntToStr(c));
end;
Wo ist da jetzt das Problem?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von wo0zy
wo0zy

Registriert seit: 14. Apr 2003
Ort: 127.0.0.1
80 Beiträge
 
Delphi 7 Enterprise
 
#7
  Alt 8. Mai 2003, 09:26
also das is eigentlich gabz einfach

einer function/prozedur werden automatisch werte übergeben

die werte werden so definiert wie dein a also function test(a,b:Integer):Integer

und übergeben tust du die werte beim aufrufen:
erg:=test(3,2);

in diesem fall wird wäre dann a=3 und b=2
It's not a bug it's a feature!
  Mit Zitat antworten Zitat
Benutzerbild von Pseudemys Nelsoni
Pseudemys Nelsoni

Registriert seit: 24. Dez 2002
Ort: Hamburg-Harburg
3.551 Beiträge
 
#8
  Alt 8. Mai 2003, 09:33
ein problem ist da (noch) nicht, aber würd ich sicher später bekommen wenn ich das prinzip nicht verstehe

wenn ich das ganze ändere in:

Delphi-Quellcode:
function add(a, b: Integer): Integer;
begin
  result := a+b;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  a1, b1, c : Integer;
begin
  a1 := 1;
  b1 := 2;
  c := add(a1, b1);
  ShowMessage(IntToStr(c));
end;
funktionierts ja immernoch ...obwohl die veriablen a1 und b1 heissen, kommen sie bei der funktion in a und b? woher weiss ich wo der wert a1 oder b1 ist(in der funktion)? "a1" kann ja auch in "b" der funktion sein oder nicht

sorry versteh das nicht so ganz
Mario
  Mit Zitat antworten Zitat
Benutzerbild von wo0zy
wo0zy

Registriert seit: 14. Apr 2003
Ort: 127.0.0.1
80 Beiträge
 
Delphi 7 Enterprise
 
#9
  Alt 8. Mai 2003, 09:43
welche werte a und b haben hängt davon ab in welcher reihenfolge du deine werte übergibst, dabei wird von links nach rechts gegangen, genau wie bei der definition im funktionskopf, was zuerst definiert wird, bekommt den ersten wert aus der übergabe.
It's not a bug it's a feature!
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#10
  Alt 8. Mai 2003, 09:43
nJa. Weil sie beim Funktiosaufruf in die Parametervariablen der Funktion kopiert werden, daher ist es unerheblich wie die Variablen der Funktionsparameter heißen, allein der Typ spielt eine Rolle.

Das Kopieren nennt man auch CallByValue. Dann gibt es noch CallByReference. Da wird ein Zeiger auf die Speicherstelle übergeben und von der Funktion wird diese Speicherstelle veränder.
Delphi-Quellcode:
procedure foo(var s : String);
begin
  s := 'Hello world';
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  t : String;
begin
  t := 'foobar';
  foo(t);
  ShowMessage(t);
end;
Was gibt dir jetzt ShowMessage aus? "foobar" oder "Hello world"? Richtig wäre "Hello world", weil ein Zeiger auf die Variable T übergeben wurde und die Prozedur foo diese Speicherstelle direkt verändert hat.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


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 05: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