AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Lazarus (IDE) Prozeduren und Methoden mit Parameter

Prozeduren und Methoden mit Parameter

Ein Thema von Finki · begonnen am 5. Aug 2013 · letzter Beitrag vom 6. Aug 2013
Antwort Antwort
Perlsau
(Gast)

n/a Beiträge
 
#1

AW: Prozeduren und Methoden mit Parameter

  Alt 5. Aug 2013, 07:17
Hey, ich fühle mich inzwischen echt schlecht das ich so viele neue beiträge auf mache, aber ich muss bis zumm 26.8 mein programm abgeben und hab noch ein paar fragen die ich so nirgendwo im Internet gefunden haben.
Deshalb mußt du dich nicht schlecht fühlen. Ich z.B. fühle mich schlecht, wenn User Anfragen im Forum stellen, weil sie z.B. zu faul sind, sich die Grundlagen beizubringen. Da du aber offensichtlich selbst Anstrengungen unternimmst, werden Fragen gerne beantwortet.

ich möchte eine function haben die ca. so aussieht
Zuerst solltest du dir einmal anschauen, was der Unterschied zwischen einer Function und einer Procedure ist: Erstere liefert einen Wert in der Variablen des Funktionsnamens zurück. Um den Typ dieser Variablen festzulegen, dient die Typangabe am Ende der Funktions-Deklaration, z.B.: function MeineFunktion(Wert : Integer) : String; Die Zuweisung innerhalb der Function geschieht via Result: Result := Wert; Der so zugewiesene Wert steht nun in der Funktionsvariablen zur Verfügung.

Eine Procedure liefert dagegen keinen Wert zurück; sie wird aufgerufen und macht irgendwas. Natürlich können in der Procedure Parameter als Var deklariert sein, die bei Rückkehr der Procedure ausgewertet werden können.

Delphi-Quellcode:
function btnReset(x,y,btnbreite,btnhoehe:integer; name:string;sichtbar:boolean):???; //muss man auch was zurückgeben???
var
text:string;
begin

name.setposition(x,y,btnbreite,btnhoehe); //is ja glaub ich klar ich will den butoon an der position haben

text:=copy(name,4,length(name); //die namen aller meiner buttons fangen mit btn an und der will ich nicht als caption
name.caption:=text;

name.visible:=sichtbar; //sichtbar oder halt nicht

end;
was mache ich flasch bzw wie muss ich das angehen
Wenn du nur Zuweisungen beabsichtigst, benötigst du keine Funktion, da würde eine Prozedur genügen. Möchtest du dagegen eine Rückmeldung, ob die Aufgabe korrekt und erfolgreich ausgeführt wurde, wäre eine Funktion mit Rückgabe-Typ Boolean sinnvoll. Dazu setzt du Result erst einmal auf False, packst dann die ganzen Zuweisungen in einen Try-Except-Block, an dessen Ende des Try-Bereichs du Result auf True setzt und in der Exception-Behandlung bei Bedarf Fehlermeldungen behandelst (ShowMessage, Logfile etc.).

ich falle vor euch auf die knie und bedanke mich für eure antworten und eure geduld
Dann paß nur auf, daß du dir deine Hosen nicht durchscheuerst bei den vielen Kniefällen
  Mit Zitat antworten Zitat
Benutzerbild von dataspider
dataspider

Registriert seit: 9. Nov 2003
Ort: 04539 Groitzsch
1.359 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Prozeduren und Methoden mit Parameter

  Alt 5. Aug 2013, 08:54
Hi,

auch wenn ich jetzt gelyncht werde, wegen fertigen Lösungen...

Betrachte es als Denkaufgabe.
Bei der Übergabe des Namen des Buttons gibt es ein paar Fallstricke.

Deshalb im Beispiel 3 mögliche Wege. Übergabe des Buttons direkt ist natürlich am einfachsten.

Frank
Angehängte Dateien
Dateityp: zip sample.zip (2,7 KB, 8x aufgerufen)
Frank Reim
  Mit Zitat antworten Zitat
Finki

Registriert seit: 2. Jul 2013
120 Beiträge
 
FreePascal / Lazarus
 
#3

AW: Prozeduren und Methoden mit Parameter

  Alt 5. Aug 2013, 10:46
auch wenn ich jetzt gelyncht werde, wegen fertigen Lösungen...
würde ich nie tun, ich bin dir sehr dankbar darüber.

ich hab aber ein paar fragen zu dem quellcod

1.  if AButton <> nil then was sagt das nil aus??? (wann und wo kann des verwendet werden)

2.    AButton.Caption := copy(AButton.Name, 4, MaxInt); ist das MaxInt eine Variable oder ein befehl der die Länge wieder gibt???
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#4

AW: Prozeduren und Methoden mit Parameter

  Alt 5. Aug 2013, 10:58
1. AButton ist eine Referenz, also ein Zeiger auf die Instanz. nil beudeutet "nichts". Wenn die Referenz also auf "nichts" zeigt, wie willst du da was verändern können. Um Fehler zu vermeiden, wird also vorher abgefragt, ob die Referenz auf etwas zeigt

2. MaxInt ist eine Konstante und beinhaltet den maximalen Integerwert.

Allerdings ist das überflüssig, denn copy( AButton.Name, 4 ); reicht hier aus
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)

Geändert von Sir Rufo ( 5. Aug 2013 um 11:02 Uhr)
  Mit Zitat antworten Zitat
Finki

Registriert seit: 2. Jul 2013
120 Beiträge
 
FreePascal / Lazarus
 
#5

AW: Prozeduren und Methoden mit Parameter

  Alt 5. Aug 2013, 11:12
gut dann danke ich euch für eure Aufmerksamkeit, Geduld und hoffe das es dann auch in meinem Programm geht

mfg Finki
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

AW: Prozeduren und Methoden mit Parameter

  Alt 5. Aug 2013, 11:21
Zitat:
1. if AButton <> nil then was sagt das nil aus??? (wann und wo kann des verwendet werden)
NIL steht für "Not In List" und ist das Delphiäquivalent zu NULL.
Besser wäre aber if Assigned( AButton ) zu prüfen.

Zitat:
2. AButton.Caption := copy(AButton.Name, 4, MaxInt); ist das MaxInt eine Variable oder ein befehl der die Länge wieder gibt???
MaxInt ist eine Konstante, welche die maximale Zahl eines Integers enthält.
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von uligerhardt
uligerhardt

Registriert seit: 19. Aug 2004
Ort: Hof/Saale
1.749 Beiträge
 
Delphi 2007 Professional
 
#7

AW: Prozeduren und Methoden mit Parameter

  Alt 5. Aug 2013, 12:21
NIL steht für "Not In List" und ist das Delphiäquivalent zu NULL.
Ich hab's immer als nihil/nil = nichts verstanden. Mit Listen hat's ja nichts zu tun.
Uli Gerhardt
  Mit Zitat antworten Zitat
Benutzerbild von dataspider
dataspider

Registriert seit: 9. Nov 2003
Ort: 04539 Groitzsch
1.359 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: Prozeduren und Methoden mit Parameter

  Alt 5. Aug 2013, 12:54
Besser wäre aber if Assigned( AButton ) zu prüfen.
Ist das nicht bei Variablenreferenzen eines Zeigers identisch?

Frank
Frank Reim
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.196 Beiträge
 
Delphi 10 Seattle Enterprise
 
#9

AW: Prozeduren und Methoden mit Parameter

  Alt 5. Aug 2013, 13:16
Laut Doku:

Zitat:
Assigned(P) entspricht bei einer Zeigervariable dem Test P <> nil und bei einer Prozedurvariable dem Test @P <> nil.
Der Test auf "<> nil" bei einer Variable vom Typ wie "reference to procedure" würde wahrscheinlich kompilieren, aber das Ergebnis der Methode auf <> nil prüfen.
  Mit Zitat antworten Zitat
Finki

Registriert seit: 2. Jul 2013
120 Beiträge
 
FreePascal / Lazarus
 
#10

AW: Prozeduren und Methoden mit Parameter

  Alt 5. Aug 2013, 18:00
gut des mit der procedure klappt aber irgend wie öffnet sich mein Savedialog zweimal ich hab keine ahnung warum ich hab mal alles in den anhang gepackt mal sehen vieleicht schaut sich des ja einer an
Angehängte Dateien
Dateityp: rar Info.rar (3,90 MB, 2x aufgerufen)
  Mit Zitat antworten Zitat
Antwort Antwort

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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