![]() |
problem beim erstellen einer Funktion
hallo ich habe ein Problem mit meiner Funktion
ich will eine funkion schreiben damit ich nicht immer bei meinem Taschenrechner bei jeder zeile den quelltext schreiben muss will dort nur noch die funktion auf rufen und dann soll es klappen kann mir jemand dabei vielleicht helfen
Delphi-Quellcode:
hoffe das man so eine Funktion erstellt
function Taste (tas:Tbutton): integer; forward;
var strZahl: string; dblX : double; begin if edtEingabe.Text = '0' then edtEingabe.Text := tas.caption else edt.Eingabe.Text := edtEingabe.Text + tas.Caption; strZahl := edtEingabe.Text; dblX := StrToFloat (StrZahl); end; danke als mal für die hilfe |
Re: Funktion
Gib Deiner Frage bitte einen aussagekräftigen Titel. "Funktion" sagt nichts zu Deinem Problem aus :roll:
...:cat:... P.S.: Auch mehr als ein Wort sind im Titel erlaubt. |
Re: problem beim erstellen einer Funktion
Ja, so sieht im Allgemeinen eine Funktion aus. :)
Warum setzt du den Rückgabewert nicht? Wenn du keinen Rückgabewert brauchst, nimm am Besten eine Prozedur.
Delphi-Quellcode:
procedure Name(Param: ParamType);
|
Re: problem beim erstellen einer Funktion
mit prozeduren kenn ich mich auch nicht aus
und bei meiner Funktion bekomme ich sau viele fehlermeldung zum beispiel [Fehler] Unit2.pas(37): Anweisungen sind im Interface-Abschnitt nicht erlaubt [Fehler] Unit2.pas(39): Undefinierter Bezeichner: 'edtEingabe' [Fehler] Unit2.pas(39): 'THEN' erwartet, aber Bezeichner 'Text' gefunden [Fehler] Unit2.pas(57): 'THEN' erwartet, aber Bezeichner 'Text' gefunden [Fehler] Unit2.pas(67): 'THEN' erwartet, aber Bezeichner 'Text' gefunden [Fehler] Unit2.pas(77): 'THEN' erwartet, aber Bezeichner 'Text' gefunden [Fehler] Unit2.pas(83): Anweisung erwartet, aber Dateiende gefunden |
Re: problem beim erstellen einer Funktion
Du hast warscheinlich in anderen sprachen vorher programmiert. Einfach F1(help) benutzen. ;)
Der einzige unterschied zwischen function und procedure ist das die function nen wert zuruck gibt. Alles andere funtz gleich. ;) |
Re: problem beim erstellen einer Funktion
ja ich hab vorher C++ programmiert und jetzt soll ich delphi lernen
hab aber meine Proleme wie man sieht |
Re: problem beim erstellen einer Funktion
Das Problem bei dir ist das proceduren und funktionen die vom programm erstellt werden von jedem element des programms verwendet werden koennen. auch koennen alle komponenten von diesen procedure genutzt werden. also entweder schreibst du vor jeder komponente Form1.
Delphi-Quellcode:
oder aber du machst das bei deiner funktion. wobei ich tatsaechlich eher sagen wuerde das das eine procedur ist.
-> Form1.edtEingabe.Text;
-> Form1.tas.Caption; das wuerde dann so aussehen :
Delphi-Quellcode:
hier darf man aber nicht vergessen die funktion oben bei tform reinzuschreiben
procedure TForm1.Taste (tas:Tbutton);
Delphi-Quellcode:
folglich wuerde deine procedure so aussehen
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs,buttons, StdCtrls; type TForm1 = class(TForm) Button1: TButton; procedure FormCreate(Sender: TObject); procedure Taste (tas:Tbutton); // das ist gemeint private { Private declarations } //darf aber auch hier stehen public { Public declarations } //oder hier end;
Delphi-Quellcode:
procedure TForm1.Taste (tas:Tbutton);
var strZahl: string; dblX : double; begin if edtEingabe.Text = '0' then edtEingabe.Text := tas.caption else edtEingabe.Text := edtEingabe.Text + tas.Caption; strZahl := edtEingabe.Text; dblX := StrToFloat (StrZahl); end; |
Re: problem beim erstellen einer Funktion
Zitat:
das ganze kannst Du auch ohne eine Funktion lösen. Das "Geheimniss" ist: Du erzeugst nicht für jeden Button eine eigene OnClick Methode sondern verwendest für alle Buttons die selbe. Über den Parameter Sender erfährst Du dann welcher Button das OnClick-Egeigniss ausgelöst hat:
Delphi-Quellcode:
Du musst die Zuweisung der Methode nicht im OnCreate der Form machen. Du kannst auch einfach alle Buttonsmarkieren und dann im Objectinspektor allen das selbe OnClick zuweisen.
procedure TDemo_Form.FormCreate(Sender: TObject);
begin Button1.OnClick := AlleButonOnClick; Button2.OnClick := AlleButonOnClick; Button3.OnClick := AlleButonOnClick; Button4.OnClick := AlleButonOnClick; end; procedure TDemo_Form.AlleButonOnClick(Sender: TObject); var zahl : string; begin zahl := (Sender as TButton).Caption; // Der Sender wird ausgewertet und auf ein TButton gecastet. end; |
Re: problem beim erstellen einer Funktion
also ich werde da nicht richtig schlau draus kann mir vielleicht jemand mal ne funktion schreiben damit ich mal sehe wie die aussehen soll
|
Re: problem beim erstellen einer Funktion
Delphi-Quellcode:
Aufruf Beispiel:
function addieren(a,b:integer):integer;
begin result:=a+b; end;
Delphi-Quellcode:
edit:delphitags
procedure TForm1.Button1Click(Sender: TObject);
var zahl1,zahl2,endzahl:integer; begin zahl1 := StrToInt(edit1.Text); zahl2 := StrToInt(edit2.Text); endzahl := addieren(zahl1,zahl2); end; |
Re: problem beim erstellen einer Funktion
@Sharky
Sorry wenn ich mich einmische, aber man kann doch die OnClick Methode von Button1 jedem Button im Objektinspektor zuweisen. Damit brauch man keine neue Methode erstellen. |
Re: problem beim erstellen einer Funktion
was aber ein bisse irritierend wirkt wenn alle buttons die methode von button1 verwenden da wuerd ich mir lieber die muehe von 3 zeilen machen :)
|
Re: problem beim erstellen einer Funktion
@pacman
Ich kann mir nicht vorstellen das sein Rechner am Ende nur 3 Zahlen(Buttons) verwendet. :wink: |
Re: problem beim erstellen einer Funktion
damit meinte ich drei zeilen die benoetigt werden um eine neue procedur zu erstellen.
Delphi-Quellcode:
1 procedure TDemo_Form.AlleButonOnClick(Sender: TObject);
2 begin 3 end; |
Re: problem beim erstellen einer Funktion
@pacman
Sorry die 3 für die Methode plus
Delphi-Quellcode:
Ist ja auch egal ich würde es halt über den Objektinspector lösen. :-D
procedure TDemo_Form.FormCreate(Sender: TObject);
begin Button1.OnClick := AlleButonOnClick; Button2.OnClick := AlleButonOnClick; Button3.OnClick := AlleButonOnClick; Button4.OnClick := AlleButonOnClick; end; |
Re: problem beim erstellen einer Funktion
also ich hab immer noch das selbe Problem es läuft einfach nicht
hier ist mal mein Quelltext vielleicht findet von euch ja jemand den fehler
Delphi-Quellcode:
so bin nur noch bis um halb eins auf der arbeit
unit Unit1;
interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Button1: TButton; procedure FormCreate(Sender: TObject); procedure Taste (tas:Tbutton); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form1: TForm1; implementation procedure TForm1.Taste (tas:Tbutton); var strZahl: string; dblX : double; begin if Form1.edtEingabe.Text = '0' then Form1.edtEingabe.Text := tas.caption else Form1.edtEingabe.Text := form1.edtEingabe.Text + tas.Caption; strZahl := edtEingabe.Text; dblX := StrToFloat (StrZahl); end; melde mich dann morgen wieder hoffe das ihr mir vielleicht weiter helfen könnt |
Re: problem beim erstellen einer Funktion
Zitat:
![]() Aber das ist jetz OT. |
Re: problem beim erstellen einer Funktion
Schönes Video.
Im Prinzip erhalten wir das gleiche Ergebnis und das ist das wichtigste, oder? :thumb: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:27 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